Add language to upload page

This commit is contained in:
Eike Kettner 2020-11-23 21:12:45 +01:00
parent 2384af1347
commit c1c92f0932
3 changed files with 45 additions and 1 deletions

View File

@ -9,11 +9,14 @@ module Page.Upload.Data exposing
, isIdle , isIdle
, isLoading , isLoading
, isSuccessAll , isSuccessAll
, mkLanguageItem
, uploadAllTracker , uploadAllTracker
) )
import Api.Model.BasicResult exposing (BasicResult) import Api.Model.BasicResult exposing (BasicResult)
import Comp.Dropzone import Comp.Dropzone
import Comp.FixedDropdown
import Data.Language exposing (Language)
import Dict exposing (Dict) import Dict exposing (Dict)
import File exposing (File) import File exposing (File)
import Http import Http
@ -30,6 +33,8 @@ type alias Model =
, loading : Dict String Int , loading : Dict String Int
, dropzone : Comp.Dropzone.Model , dropzone : Comp.Dropzone.Model
, skipDuplicates : Bool , 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 : Model
emptyModel = emptyModel =
{ incoming = True { incoming = True
@ -59,6 +69,10 @@ emptyModel =
, loading = Dict.empty , loading = Dict.empty
, dropzone = Comp.Dropzone.init dropzoneSettings , dropzone = Comp.Dropzone.init dropzoneSettings
, skipDuplicates = True , skipDuplicates = True
, languageModel =
Comp.FixedDropdown.init
(List.map mkLanguageItem Data.Language.all)
, language = Nothing
} }
@ -71,6 +85,7 @@ type Msg
| Clear | Clear
| DropzoneMsg Comp.Dropzone.Msg | DropzoneMsg Comp.Dropzone.Msg
| ToggleSkipDuplicates | ToggleSkipDuplicates
| LanguageMsg (Comp.FixedDropdown.Msg Language)
isLoading : Model -> File -> Bool isLoading : Model -> File -> Bool

View File

@ -3,13 +3,15 @@ module Page.Upload.Update exposing (update)
import Api import Api
import Api.Model.ItemUploadMeta import Api.Model.ItemUploadMeta
import Comp.Dropzone import Comp.Dropzone
import Comp.FixedDropdown
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Data.Language
import Dict import Dict
import Http import Http
import Page.Upload.Data exposing (..) import Page.Upload.Data exposing (..)
import Ports
import Set exposing (Set) import Set exposing (Set)
import Util.File exposing (makeFileId) import Util.File exposing (makeFileId)
import Util.Maybe
update : Maybe String -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) update : Maybe String -> Flags -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
@ -39,6 +41,7 @@ update sourceId flags msg model =
else else
Just "outgoing" Just "outgoing"
, language = Maybe.map Data.Language.toIso3 model.language
} }
fileids = fileids =
@ -151,6 +154,19 @@ update sourceId flags msg model =
in in
( { model | files = nextFiles, dropzone = m2 }, Cmd.map DropzoneMsg c2, Sub.none ) ( { 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 -> String -> Set String
setCompleted model fileid = setCompleted model fileid =

View File

@ -1,6 +1,7 @@
module Page.Upload.View exposing (view) module Page.Upload.View exposing (view)
import Comp.Dropzone import Comp.Dropzone
import Comp.FixedDropdown
import Comp.Progress import Comp.Progress
import Dict import Dict
import File exposing (File) import File exposing (File)
@ -219,5 +220,17 @@ renderForm model =
, label [] [ text "Skip files already present in docspell" ] , 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."
]
]
] ]
] ]