Merge pull request #651 from eikek/language-source

Add language to a source
This commit is contained in:
mergify[bot] 2021-02-19 01:30:24 +00:00 committed by GitHub
commit 9156e56d65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 92 additions and 15 deletions

View File

@ -175,7 +175,8 @@ object OUpload {
fileFilter =
if (data.meta.fileFilter == Glob.all) src.source.fileFilterOrAll
else data.meta.fileFilter,
tags = (data.meta.tags ++ src.tags.map(_.tagId.id)).distinct
tags = (data.meta.tags ++ src.tags.map(_.tagId.id)).distinct,
language = data.meta.language.orElse(src.source.language)
),
priority = src.source.priority
)

View File

@ -4924,6 +4924,9 @@ components:
fileFilter:
type: string
format: glob
language:
type: string
format: language
created:
description: DateTime
type: integer

View File

@ -583,6 +583,7 @@ trait Conversions {
s.source.priority,
s.source.folderId,
s.source.fileFilter,
s.source.language,
s.source.created
),
TagList(s.tags.length, s.tags.map(mkTag).toList)
@ -600,7 +601,8 @@ trait Conversions {
s.priority,
now,
s.folder,
s.fileFilter
s.fileFilter,
s.language
)
})
@ -615,7 +617,8 @@ trait Conversions {
s.priority,
s.created,
s.folder,
s.fileFilter
s.fileFilter,
s.language
)
// equipment

View File

@ -0,0 +1,2 @@
ALTER TABLE "source"
ADD COLUMN "doc_lang" varchar(254);

View File

@ -0,0 +1,2 @@
ALTER TABLE `source`
ADD COLUMN `doc_lang` varchar(254);

View File

@ -0,0 +1,2 @@
ALTER TABLE "source"
ADD COLUMN "doc_lang" varchar(254);

View File

@ -19,7 +19,8 @@ case class RSource(
priority: Priority,
created: Timestamp,
folderId: Option[Ident],
fileFilter: Option[Glob]
fileFilter: Option[Glob],
language: Option[Language]
) {
def fileFilterOrAll: Glob =
@ -41,6 +42,7 @@ object RSource {
val created = Column[Timestamp]("created", this)
val folder = Column[Ident]("folder_id", this)
val fileFilter = Column[Glob]("file_filter", this)
val language = Column[Language]("doc_lang", this)
val all =
NonEmptyList.of[Column[_]](
@ -53,7 +55,8 @@ object RSource {
priority,
created,
folder,
fileFilter
fileFilter,
language
)
}
@ -66,7 +69,7 @@ object RSource {
DML.insert(
table,
table.all,
fr"${v.sid},${v.cid},${v.abbrev},${v.description},${v.counter},${v.enabled},${v.priority},${v.created},${v.folderId},${v.fileFilter}"
fr"${v.sid},${v.cid},${v.abbrev},${v.description},${v.counter},${v.enabled},${v.priority},${v.created},${v.folderId},${v.fileFilter},${v.language}"
)
def updateNoCounter(v: RSource): ConnectionIO[Int] =
@ -80,7 +83,8 @@ object RSource {
table.enabled.setTo(v.enabled),
table.priority.setTo(v.priority),
table.folder.setTo(v.folderId),
table.fileFilter.setTo(v.fileFilter)
table.fileFilter.setTo(v.fileFilter),
table.language.setTo(v.language)
)
)

View File

@ -21,6 +21,7 @@ import Comp.Dropdown exposing (isDropdownChangeMsg)
import Comp.FixedDropdown
import Data.DropdownStyle as DS
import Data.Flags exposing (Flags)
import Data.Language exposing (Language)
import Data.Priority exposing (Priority)
import Data.UiSettings exposing (UiSettings)
import Html exposing (..)
@ -47,6 +48,8 @@ type alias Model =
, folderId : Maybe String
, tagModel : Comp.Dropdown.Model Tag
, fileFilter : Maybe String
, languageModel : Comp.Dropdown.Model Language
, language : Maybe String
}
@ -70,6 +73,19 @@ emptyModel =
, folderId = Nothing
, tagModel = Util.Tag.makeDropdownModel2
, fileFilter = Nothing
, languageModel =
Comp.Dropdown.makeSingleList
{ makeOption =
\a ->
{ value = Data.Language.toName a
, text = Data.Language.toName a
, additional = ""
}
, placeholder = "Select"
, options = Data.Language.all
, selected = Nothing
}
, language = Nothing
}
@ -108,6 +124,7 @@ getSource model =
, priority = Data.Priority.toName model.priority
, folder = model.folderId
, fileFilter = model.fileFilter
, language = model.language
}
in
{ st | source = n, tags = TagList (List.length tags) tags }
@ -124,6 +141,7 @@ type Msg
| GetTagResp (Result Http.Error TagList)
| TagDropdownMsg (Comp.Dropdown.Msg Tag)
| SetFileFilter String
| LanguageMsg (Comp.Dropdown.Msg Language)
@ -285,6 +303,28 @@ update flags msg model =
, Cmd.none
)
LanguageMsg lm ->
let
( dm, dc ) =
Comp.Dropdown.update lm model.languageModel
newModel =
{ model | languageModel = dm }
lang =
Comp.Dropdown.getSelected dm |> List.head
model_ =
if isDropdownChangeMsg lm then
{ newModel | language = Maybe.map Data.Language.toIso3 lang }
else
newModel
in
( model_
, Cmd.map LanguageMsg dc
)
--- View
@ -426,7 +466,7 @@ isFolderMember model =
view2 : Flags -> UiSettings -> Model -> Html Msg
view2 flags settings model =
view2 _ settings model =
let
priorityItem =
Comp.FixedDropdown.Item
@ -581,6 +621,21 @@ disappear then.
]
]
]
, div [ class "mb-4" ]
[ label [ class S.inputLabel ]
[ text "Language:"
]
, Html.map LanguageMsg
(Comp.Dropdown.view2
DS.mainStyle
settings
model.languageModel
)
, div [ class "text-gray-400 text-xs" ]
[ text "Used for text extraction and analysis. The collective's "
, text "default language is used if not specified here."
]
]
]

View File

@ -474,6 +474,18 @@ viewLinks2 flags _ source =
[ text source.source.id
]
]
, MB.view
{ start =
[ MB.SecondaryButton
{ label = "Back"
, icon = Just "fa fa-arrow-left"
, tagger = SetTableView
, title = "Back to list"
}
]
, end = []
, rootClasses = "mb-4"
}
, p [ class "text-lg pt-2 opacity-75" ]
[ text "This source defines URLs that can be used by anyone to send files to "
, text "you. There is a web page that you can share or the API url can be used "
@ -565,13 +577,6 @@ viewLinks2 flags _ source =
[ qrCodeView apiUrl
]
]
, button
[ class S.secondaryButton
, class "mt-4 mb-2"
, onClick SetTableView
]
[ text "Back"
]
]