From c1c92f09328c6413c407858ea0263404a26520e1 Mon Sep 17 00:00:00 2001 From: Eike Kettner Date: Mon, 23 Nov 2020 21:12:45 +0100 Subject: [PATCH] Add language to upload page --- .../webapp/src/main/elm/Page/Upload/Data.elm | 15 +++++++++++++++ .../webapp/src/main/elm/Page/Upload/Update.elm | 18 +++++++++++++++++- .../webapp/src/main/elm/Page/Upload/View.elm | 13 +++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/modules/webapp/src/main/elm/Page/Upload/Data.elm b/modules/webapp/src/main/elm/Page/Upload/Data.elm index 896591ef..b7d0c23d 100644 --- a/modules/webapp/src/main/elm/Page/Upload/Data.elm +++ b/modules/webapp/src/main/elm/Page/Upload/Data.elm @@ -9,11 +9,14 @@ module Page.Upload.Data exposing , isIdle , isLoading , isSuccessAll + , mkLanguageItem , uploadAllTracker ) import Api.Model.BasicResult exposing (BasicResult) import Comp.Dropzone +import Comp.FixedDropdown +import Data.Language exposing (Language) import Dict exposing (Dict) import File exposing (File) import Http @@ -30,6 +33,8 @@ type alias Model = , loading : Dict String Int , dropzone : Comp.Dropzone.Model , skipDuplicates : Bool + , languageModel : Comp.FixedDropdown.Model Language + , language : Maybe Language } @@ -49,6 +54,11 @@ dropzoneSettings = } +mkLanguageItem : Language -> Comp.FixedDropdown.Item Language +mkLanguageItem lang = + Comp.FixedDropdown.Item lang (Data.Language.toName lang) + + emptyModel : Model emptyModel = { incoming = True @@ -59,6 +69,10 @@ emptyModel = , loading = Dict.empty , dropzone = Comp.Dropzone.init dropzoneSettings , skipDuplicates = True + , languageModel = + Comp.FixedDropdown.init + (List.map mkLanguageItem Data.Language.all) + , language = Nothing } @@ -71,6 +85,7 @@ type Msg | Clear | DropzoneMsg Comp.Dropzone.Msg | ToggleSkipDuplicates + | LanguageMsg (Comp.FixedDropdown.Msg Language) isLoading : Model -> File -> Bool diff --git a/modules/webapp/src/main/elm/Page/Upload/Update.elm b/modules/webapp/src/main/elm/Page/Upload/Update.elm index 3929435d..beac5223 100644 --- a/modules/webapp/src/main/elm/Page/Upload/Update.elm +++ b/modules/webapp/src/main/elm/Page/Upload/Update.elm @@ -3,13 +3,15 @@ module Page.Upload.Update exposing (update) import Api import Api.Model.ItemUploadMeta import Comp.Dropzone +import Comp.FixedDropdown import Data.Flags exposing (Flags) +import Data.Language import Dict import Http import Page.Upload.Data exposing (..) -import Ports import Set exposing (Set) import Util.File exposing (makeFileId) +import Util.Maybe update : Maybe String -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) @@ -39,6 +41,7 @@ update sourceId flags msg model = else Just "outgoing" + , language = Maybe.map Data.Language.toIso3 model.language } fileids = @@ -151,6 +154,19 @@ update sourceId flags msg model = in ( { model | files = nextFiles, dropzone = m2 }, Cmd.map DropzoneMsg c2, Sub.none ) + LanguageMsg lm -> + let + ( dm, sel ) = + Comp.FixedDropdown.update lm model.languageModel + in + ( { model + | languageModel = dm + , language = Util.Maybe.or [ sel, model.language ] + } + , Cmd.none + , Sub.none + ) + setCompleted : Model -> String -> Set String setCompleted model fileid = diff --git a/modules/webapp/src/main/elm/Page/Upload/View.elm b/modules/webapp/src/main/elm/Page/Upload/View.elm index 2712b619..b5b96ae3 100644 --- a/modules/webapp/src/main/elm/Page/Upload/View.elm +++ b/modules/webapp/src/main/elm/Page/Upload/View.elm @@ -1,6 +1,7 @@ module Page.Upload.View exposing (view) import Comp.Dropzone +import Comp.FixedDropdown import Comp.Progress import Dict import File exposing (File) @@ -219,5 +220,17 @@ renderForm model = , label [] [ text "Skip files already present in docspell" ] ] ] + , div [ class "inline field" ] + [ label [] [ text "Language:" ] + , Html.map LanguageMsg + (Comp.FixedDropdown.view + (Maybe.map mkLanguageItem model.language) + model.languageModel + ) + , div [ class "small-info" ] + [ text "Used for text extraction and analysis. The collective's " + , text "default language is used if not specified here." + ] + ] ] ]