mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-04-13 11:09:32 +00:00
Externalize strings for home page
This commit is contained in:
parent
9c1beb2240
commit
1762e7afac
@ -118,7 +118,7 @@ mainContent model =
|
|||||||
]
|
]
|
||||||
(case model.page of
|
(case model.page of
|
||||||
HomePage ->
|
HomePage ->
|
||||||
viewHome model
|
viewHome texts model
|
||||||
|
|
||||||
CollectiveSettingPage ->
|
CollectiveSettingPage ->
|
||||||
viewCollectiveSettings texts model
|
viewCollectiveSettings texts model
|
||||||
@ -397,10 +397,21 @@ dropdownMenu =
|
|||||||
" absolute right-0 bg-white dark:bg-bluegray-800 border dark:border-bluegray-700 dark:text-bluegray-300 shadow-lg opacity-1 transition duration-200 min-w-max "
|
" absolute right-0 bg-white dark:bg-bluegray-800 border dark:border-bluegray-700 dark:text-bluegray-300 shadow-lg opacity-1 transition duration-200 min-w-max "
|
||||||
|
|
||||||
|
|
||||||
viewHome : Model -> List (Html Msg)
|
viewHome : Messages -> Model -> List (Html Msg)
|
||||||
viewHome model =
|
viewHome texts model =
|
||||||
[ Html.map HomeMsg (Home.viewSidebar model.sidebarVisible model.flags model.uiSettings model.homeModel)
|
[ Html.map HomeMsg
|
||||||
, Html.map HomeMsg (Home.viewContent model.flags model.uiSettings model.homeModel)
|
(Home.viewSidebar texts.home
|
||||||
|
model.sidebarVisible
|
||||||
|
model.flags
|
||||||
|
model.uiSettings
|
||||||
|
model.homeModel
|
||||||
|
)
|
||||||
|
, Html.map HomeMsg
|
||||||
|
(Home.viewContent texts.home
|
||||||
|
model.flags
|
||||||
|
model.uiSettings
|
||||||
|
model.homeModel
|
||||||
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,14 +23,14 @@ type alias Settings msg =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
defaultSettings : msg -> msg -> String -> Settings msg
|
defaultSettings : msg -> msg -> String -> String -> String -> Settings msg
|
||||||
defaultSettings confirm cancel confirmMsg =
|
defaultSettings confirm cancel okLabel cancelLabel confirmMsg =
|
||||||
{ enabled = True
|
{ enabled = True
|
||||||
, extraClass = ""
|
, extraClass = ""
|
||||||
, headerIcon = "fa fa-exclamation-circle mr-3"
|
, headerIcon = "fa fa-exclamation-circle mr-3"
|
||||||
, headerClass = "text-2xl font-bold text-center w-full"
|
, headerClass = "text-2xl font-bold text-center w-full"
|
||||||
, confirmText = "Ok"
|
, confirmText = okLabel
|
||||||
, cancelText = "Cancel"
|
, cancelText = cancelLabel
|
||||||
, message = confirmMsg
|
, message = confirmMsg
|
||||||
, confirm = confirm
|
, confirm = confirm
|
||||||
, cancel = cancel
|
, cancel = cancel
|
||||||
|
@ -313,23 +313,28 @@ type alias ViewSettings =
|
|||||||
{ showAddButton : Bool
|
{ showAddButton : Bool
|
||||||
, classes : String
|
, classes : String
|
||||||
, fieldIcon : CustomField -> Maybe String
|
, fieldIcon : CustomField -> Maybe String
|
||||||
|
, style : DS.DropdownStyle
|
||||||
|
, createCustomFieldTitle : String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
view2 : DS.DropdownStyle -> ViewSettings -> Model -> Html Msg
|
view2 : ViewSettings -> Model -> Html Msg
|
||||||
view2 ddstyle viewSettings model =
|
view2 viewSettings model =
|
||||||
div [ class viewSettings.classes ]
|
div [ class viewSettings.classes ]
|
||||||
(viewMenuBar2 ddstyle viewSettings model
|
(viewMenuBar2 viewSettings model
|
||||||
:: List.map (viewCustomField2 viewSettings model) (visibleFields model)
|
:: List.map (viewCustomField2 viewSettings model) (visibleFields model)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
viewMenuBar2 : DS.DropdownStyle -> ViewSettings -> Model -> Html Msg
|
viewMenuBar2 : ViewSettings -> Model -> Html Msg
|
||||||
viewMenuBar2 ddstyle viewSettings model =
|
viewMenuBar2 viewSettings model =
|
||||||
let
|
let
|
||||||
{ dropdown, selected } =
|
{ dropdown, selected } =
|
||||||
model.fieldSelect
|
model.fieldSelect
|
||||||
|
|
||||||
|
ddstyle =
|
||||||
|
viewSettings.style
|
||||||
|
|
||||||
ddstyleFlex =
|
ddstyleFlex =
|
||||||
{ display = \f -> Maybe.withDefault f.name f.label
|
{ display = \f -> Maybe.withDefault f.name f.label
|
||||||
, icon = \_ -> Nothing
|
, icon = \_ -> Nothing
|
||||||
@ -350,7 +355,7 @@ viewMenuBar2 ddstyle viewSettings model =
|
|||||||
dropdown
|
dropdown
|
||||||
)
|
)
|
||||||
:: (if viewSettings.showAddButton then
|
:: (if viewSettings.showAddButton then
|
||||||
[ addFieldLink2 "ml-1" model
|
[ addFieldLink2 viewSettings.createCustomFieldTitle "ml-1" model
|
||||||
]
|
]
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -377,8 +382,8 @@ viewCustomField2 viewSettings model field =
|
|||||||
span [] []
|
span [] []
|
||||||
|
|
||||||
|
|
||||||
addFieldLink2 : String -> Model -> Html Msg
|
addFieldLink2 : String -> String -> Model -> Html Msg
|
||||||
addFieldLink2 classes _ =
|
addFieldLink2 titleStr classes _ =
|
||||||
a
|
a
|
||||||
[ class classes
|
[ class classes
|
||||||
, class S.secondaryButton
|
, class S.secondaryButton
|
||||||
@ -386,7 +391,7 @@ addFieldLink2 classes _ =
|
|||||||
-- , class "absolute -right-12 top-0"
|
-- , class "absolute -right-12 top-0"
|
||||||
, href "#"
|
, href "#"
|
||||||
, onClick CreateNewField
|
, onClick CreateNewField
|
||||||
, title "Create a new custom field"
|
, title titleStr
|
||||||
]
|
]
|
||||||
[ i [ class "fa fa-plus" ] []
|
[ i [ class "fa fa-plus" ] []
|
||||||
]
|
]
|
||||||
|
@ -23,6 +23,7 @@ import Html exposing (..)
|
|||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
import Html.Events exposing (onClick)
|
import Html.Events exposing (onClick)
|
||||||
import Markdown
|
import Markdown
|
||||||
|
import Messages.ItemCardComp exposing (Texts)
|
||||||
import Page exposing (Page(..))
|
import Page exposing (Page(..))
|
||||||
import Set exposing (Set)
|
import Set exposing (Set)
|
||||||
import Styles as S
|
import Styles as S
|
||||||
@ -135,12 +136,11 @@ update ddm msg model =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- View
|
|
||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
view2 : ViewConfig -> UiSettings -> Model -> ItemLight -> Html Msg
|
view2 : Texts -> ViewConfig -> UiSettings -> Model -> ItemLight -> Html Msg
|
||||||
view2 cfg settings model item =
|
view2 texts cfg settings model item =
|
||||||
let
|
let
|
||||||
isConfirmed =
|
isConfirmed =
|
||||||
item.state /= "created"
|
item.state /= "created"
|
||||||
@ -200,8 +200,8 @@ view2 cfg settings model item =
|
|||||||
[ previewImage2 settings cardAction model item
|
[ previewImage2 settings cardAction model item
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
++ [ mainContent2 cardAction cardColor isConfirmed settings cfg item
|
++ [ mainContent2 texts cardAction cardColor isConfirmed settings cfg item
|
||||||
, metaDataContent2 settings item
|
, metaDataContent2 texts settings item
|
||||||
, notesContent2 settings item
|
, notesContent2 settings item
|
||||||
, fulltextResultsContent2 item
|
, fulltextResultsContent2 item
|
||||||
, previewMenu2 settings model item (currentAttachment model item)
|
, previewMenu2 settings model item (currentAttachment model item)
|
||||||
@ -221,8 +221,8 @@ fulltextResultsContent2 item =
|
|||||||
(List.map renderHighlightEntry2 item.highlighting)
|
(List.map renderHighlightEntry2 item.highlighting)
|
||||||
|
|
||||||
|
|
||||||
metaDataContent2 : UiSettings -> ItemLight -> Html Msg
|
metaDataContent2 : Texts -> UiSettings -> ItemLight -> Html Msg
|
||||||
metaDataContent2 settings item =
|
metaDataContent2 texts settings item =
|
||||||
let
|
let
|
||||||
fieldHidden f =
|
fieldHidden f =
|
||||||
Data.UiSettings.fieldHidden settings f
|
Data.UiSettings.fieldHidden settings f
|
||||||
@ -234,7 +234,7 @@ metaDataContent2 settings item =
|
|||||||
[ ( "hidden", fieldHidden Data.Fields.Folder )
|
[ ( "hidden", fieldHidden Data.Fields.Folder )
|
||||||
]
|
]
|
||||||
, class "hover:opacity-60"
|
, class "hover:opacity-60"
|
||||||
, title "Folder"
|
, title texts.folder
|
||||||
]
|
]
|
||||||
[ Icons.folderIcon2 "mr-2"
|
[ Icons.folderIcon2 "mr-2"
|
||||||
, Comp.LinkTarget.makeFolderLink item
|
, Comp.LinkTarget.makeFolderLink item
|
||||||
@ -273,8 +273,16 @@ notesContent2 settings item =
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
mainContent2 : List (Attribute Msg) -> String -> Bool -> UiSettings -> ViewConfig -> ItemLight -> Html Msg
|
mainContent2 :
|
||||||
mainContent2 cardAction cardColor isConfirmed settings _ item =
|
Texts
|
||||||
|
-> List (Attribute Msg)
|
||||||
|
-> String
|
||||||
|
-> Bool
|
||||||
|
-> UiSettings
|
||||||
|
-> ViewConfig
|
||||||
|
-> ItemLight
|
||||||
|
-> Html Msg
|
||||||
|
mainContent2 texts cardAction cardColor isConfirmed settings _ item =
|
||||||
let
|
let
|
||||||
dirIcon =
|
dirIcon =
|
||||||
i
|
i
|
||||||
|
@ -22,6 +22,7 @@ import Data.UiSettings exposing (UiSettings)
|
|||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
|
import Messages.ItemCardListComp exposing (Texts)
|
||||||
import Page exposing (Page(..))
|
import Page exposing (Page(..))
|
||||||
import Styles as S
|
import Styles as S
|
||||||
import Util.ItemDragDrop as DD
|
import Util.ItemDragDrop as DD
|
||||||
@ -148,19 +149,19 @@ type alias ViewConfig =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
view2 : ViewConfig -> UiSettings -> Model -> Html Msg
|
view2 : Texts -> ViewConfig -> UiSettings -> Model -> Html Msg
|
||||||
view2 cfg settings model =
|
view2 texts cfg settings model =
|
||||||
div
|
div
|
||||||
[ classList
|
[ classList
|
||||||
[ ( "ds-item-list", True )
|
[ ( "ds-item-list", True )
|
||||||
, ( "ds-multi-select-mode", isMultiSelectMode cfg )
|
, ( "ds-multi-select-mode", isMultiSelectMode cfg )
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
(List.map (viewGroup2 model cfg settings) model.results.groups)
|
(List.map (viewGroup2 texts model cfg settings) model.results.groups)
|
||||||
|
|
||||||
|
|
||||||
viewGroup2 : Model -> ViewConfig -> UiSettings -> ItemLightGroup -> Html Msg
|
viewGroup2 : Texts -> Model -> ViewConfig -> UiSettings -> ItemLightGroup -> Html Msg
|
||||||
viewGroup2 model cfg settings group =
|
viewGroup2 texts model cfg settings group =
|
||||||
div [ class "ds-item-group" ]
|
div [ class "ds-item-group" ]
|
||||||
[ div
|
[ div
|
||||||
[ class "flex py-0 mt-2 flex flex-row items-center"
|
[ class "flex py-0 mt-2 flex flex-row items-center"
|
||||||
@ -185,12 +186,12 @@ viewGroup2 model cfg settings group =
|
|||||||
[]
|
[]
|
||||||
]
|
]
|
||||||
, div [ class "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-2" ]
|
, div [ class "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-2" ]
|
||||||
(List.map (viewItem2 model cfg settings) group.items)
|
(List.map (viewItem2 texts model cfg settings) group.items)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
viewItem2 : Model -> ViewConfig -> UiSettings -> ItemLight -> Html Msg
|
viewItem2 : Texts -> Model -> ViewConfig -> UiSettings -> ItemLight -> Html Msg
|
||||||
viewItem2 model cfg settings item =
|
viewItem2 texts model cfg settings item =
|
||||||
let
|
let
|
||||||
currentClass =
|
currentClass =
|
||||||
if cfg.current == Just item.id then
|
if cfg.current == Just item.id then
|
||||||
@ -207,7 +208,7 @@ viewItem2 model cfg settings item =
|
|||||||
|> Maybe.withDefault Comp.ItemCard.init
|
|> Maybe.withDefault Comp.ItemCard.init
|
||||||
|
|
||||||
cardHtml =
|
cardHtml =
|
||||||
Comp.ItemCard.view2 vvcfg settings cardModel item
|
Comp.ItemCard.view2 texts.itemCard vvcfg settings cardModel item
|
||||||
in
|
in
|
||||||
Html.map (ItemCardMsg item) cardHtml
|
Html.map (ItemCardMsg item) cardHtml
|
||||||
|
|
||||||
|
@ -96,10 +96,12 @@ formTabs flags settings model =
|
|||||||
Data.UiSettings.fieldVisible settings field
|
Data.UiSettings.fieldVisible settings field
|
||||||
|
|
||||||
customFieldSettings =
|
customFieldSettings =
|
||||||
Comp.CustomFieldMultiInput.ViewSettings
|
{ showAddButton = True
|
||||||
True
|
, classes = ""
|
||||||
"field"
|
, fieldIcon = \f -> Dict.get f.id model.customFieldSavingIcon
|
||||||
(\f -> Dict.get f.id model.customFieldSavingIcon)
|
, style = dds
|
||||||
|
, createCustomFieldTitle = "Create new custom field"
|
||||||
|
}
|
||||||
|
|
||||||
optional fields html =
|
optional fields html =
|
||||||
if
|
if
|
||||||
@ -255,7 +257,6 @@ item visible. This message will disappear then.
|
|||||||
[ div [ class "mb-4" ]
|
[ div [ class "mb-4" ]
|
||||||
[ Html.map CustomFieldMsg
|
[ Html.map CustomFieldMsg
|
||||||
(Comp.CustomFieldMultiInput.view2
|
(Comp.CustomFieldMultiInput.view2
|
||||||
dds
|
|
||||||
customFieldSettings
|
customFieldSettings
|
||||||
model.customFieldsModel
|
model.customFieldsModel
|
||||||
)
|
)
|
||||||
|
@ -39,6 +39,7 @@ import Html.Attributes exposing (..)
|
|||||||
import Html.Events exposing (onClick, onInput)
|
import Html.Events exposing (onClick, onInput)
|
||||||
import Http
|
import Http
|
||||||
import Markdown
|
import Markdown
|
||||||
|
import Messages.MultiEditComp exposing (Texts)
|
||||||
import Page exposing (Page(..))
|
import Page exposing (Page(..))
|
||||||
import Set exposing (Set)
|
import Set exposing (Set)
|
||||||
import Styles as S
|
import Styles as S
|
||||||
@ -601,13 +602,13 @@ defaultViewConfig =
|
|||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
view2 : Flags -> ViewConfig -> UiSettings -> Model -> Html Msg
|
view2 : Texts -> Flags -> ViewConfig -> UiSettings -> Model -> Html Msg
|
||||||
view2 =
|
view2 =
|
||||||
renderEditForm2
|
renderEditForm2
|
||||||
|
|
||||||
|
|
||||||
renderEditForm2 : Flags -> ViewConfig -> UiSettings -> Model -> Html Msg
|
renderEditForm2 : Texts -> Flags -> ViewConfig -> UiSettings -> Model -> Html Msg
|
||||||
renderEditForm2 flags cfg settings model =
|
renderEditForm2 texts flags cfg settings model =
|
||||||
let
|
let
|
||||||
fieldVisible field =
|
fieldVisible field =
|
||||||
Data.UiSettings.fieldVisible settings field
|
Data.UiSettings.fieldVisible settings field
|
||||||
@ -636,13 +637,13 @@ renderEditForm2 flags cfg settings model =
|
|||||||
tagModeMsg =
|
tagModeMsg =
|
||||||
case model.tagEditMode of
|
case model.tagEditMode of
|
||||||
AddTags ->
|
AddTags ->
|
||||||
"Tags chosen here are *added* to all selected items."
|
texts.tagModeAddInfo
|
||||||
|
|
||||||
RemoveTags ->
|
RemoveTags ->
|
||||||
"Tags chosen here are *removed* from all selected items."
|
texts.tagModeRemoveInfo
|
||||||
|
|
||||||
ReplaceTags ->
|
ReplaceTags ->
|
||||||
"Tags chosen here *replace* those on selected items."
|
texts.tagModeReplaceInfo
|
||||||
|
|
||||||
customFieldIcon field =
|
customFieldIcon field =
|
||||||
case cfg.customFieldState field.id of
|
case cfg.customFieldState field.id of
|
||||||
@ -656,10 +657,12 @@ renderEditForm2 flags cfg settings model =
|
|||||||
Just "fa fa-sync-alt animate-spin"
|
Just "fa fa-sync-alt animate-spin"
|
||||||
|
|
||||||
customFieldSettings =
|
customFieldSettings =
|
||||||
Comp.CustomFieldMultiInput.ViewSettings
|
{ showAddButton = False
|
||||||
False
|
, classes = "mb-4"
|
||||||
"mb-4"
|
, fieldIcon = customFieldIcon
|
||||||
customFieldIcon
|
, style = dds
|
||||||
|
, createCustomFieldTitle = ""
|
||||||
|
}
|
||||||
|
|
||||||
dds =
|
dds =
|
||||||
Data.DropdownStyle.sidebarStyle
|
Data.DropdownStyle.sidebarStyle
|
||||||
@ -677,7 +680,7 @@ renderEditForm2 flags cfg settings model =
|
|||||||
idNameCfg =
|
idNameCfg =
|
||||||
{ makeOption = \e -> { text = e.name, additional = "" }
|
{ makeOption = \e -> { text = e.name, additional = "" }
|
||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, placeholder = "Select…"
|
, placeholder = texts.selectPlaceholder
|
||||||
, style = dds
|
, style = dds
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -687,7 +690,7 @@ renderEditForm2 flags cfg settings model =
|
|||||||
{ text = Data.Direction.toString entry
|
{ text = Data.Direction.toString entry
|
||||||
, additional = ""
|
, additional = ""
|
||||||
}
|
}
|
||||||
, placeholder = "Choose a direction…"
|
, placeholder = texts.chooseDirection
|
||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, style = dds
|
, style = dds
|
||||||
}
|
}
|
||||||
@ -697,7 +700,7 @@ renderEditForm2 flags cfg settings model =
|
|||||||
tabStyle
|
tabStyle
|
||||||
(tabState settings model)
|
(tabState settings model)
|
||||||
[ { name = tabName TabConfirmUnconfirm
|
[ { name = tabName TabConfirmUnconfirm
|
||||||
, title = "Confirm/Unconfirm item metadata"
|
, title = texts.confirmUnconfirm
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -709,32 +712,32 @@ renderEditForm2 flags cfg settings model =
|
|||||||
, class "flex-grow"
|
, class "flex-grow"
|
||||||
, onClick (ConfirmMsg True)
|
, onClick (ConfirmMsg True)
|
||||||
]
|
]
|
||||||
[ text "Confirm"
|
[ text texts.confirm
|
||||||
]
|
]
|
||||||
, button
|
, button
|
||||||
[ class S.secondaryButton
|
[ class S.secondaryButton
|
||||||
, class "flex-grow"
|
, class "flex-grow"
|
||||||
, onClick (ConfirmMsg False)
|
, onClick (ConfirmMsg False)
|
||||||
]
|
]
|
||||||
[ text "Unconfirm"
|
[ text texts.unconfirm
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabTags
|
, { name = tabName TabTags
|
||||||
, title = "Tags"
|
, title = texts.basics.tags
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
[ div [ class "field" ]
|
[ div [ class "field" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ Icons.tagsIcon2 ""
|
[ Icons.tagsIcon2 ""
|
||||||
, text "Tags"
|
, text texts.basics.tags
|
||||||
, a
|
, a
|
||||||
[ class "float-right"
|
[ class "float-right"
|
||||||
, class S.link
|
, class S.link
|
||||||
, href "#"
|
, href "#"
|
||||||
, title "Change tag edit mode"
|
, title texts.changeTagMode
|
||||||
, onClick ToggleTagEditMode
|
, onClick ToggleTagEditMode
|
||||||
]
|
]
|
||||||
[ tagModeIcon
|
[ tagModeIcon
|
||||||
@ -750,7 +753,7 @@ renderEditForm2 flags cfg settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabFolder
|
, { name = tabName TabFolder
|
||||||
, title = "Folder"
|
, title = texts.folderTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -761,25 +764,24 @@ renderEditForm2 flags cfg settings model =
|
|||||||
, ( "hidden", isFolderMember model )
|
, ( "hidden", isFolderMember model )
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
[ Markdown.toHtml [] """
|
[ Markdown.toHtml [] texts.folderNotOwnerWarning
|
||||||
You are **not a member** of this folder. This item will be **hidden**
|
|
||||||
from any search now. Use a folder where you are a member of to make this
|
|
||||||
item visible. This message will disappear then.
|
|
||||||
"""
|
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabCustomFields
|
, { name = tabName TabCustomFields
|
||||||
, title = "Custom Fields"
|
, title = texts.customFieldsTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
[ Html.map CustomFieldMsg
|
[ Html.map CustomFieldMsg
|
||||||
(Comp.CustomFieldMultiInput.view2 dds customFieldSettings model.customFieldModel)
|
(Comp.CustomFieldMultiInput.view2
|
||||||
|
customFieldSettings
|
||||||
|
model.customFieldModel
|
||||||
|
)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabDate
|
, { name = tabName TabDate
|
||||||
, title = "Date"
|
, title = texts.dateTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -802,7 +804,7 @@ item visible. This message will disappear then.
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabDueDate
|
, { name = tabName TabDueDate
|
||||||
, title = "Due Date"
|
, title = texts.dueDateTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -825,7 +827,7 @@ item visible. This message will disappear then.
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabCorrespondent
|
, { name = tabName TabCorrespondent
|
||||||
, title = "Correspondent"
|
, title = texts.correspondentTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -834,25 +836,35 @@ item visible. This message will disappear then.
|
|||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ Icons.organizationIcon2 ""
|
[ Icons.organizationIcon2 ""
|
||||||
, span [ class "ml-2" ]
|
, span [ class "ml-2" ]
|
||||||
[ text "Organization"
|
[ text texts.organization
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
, Html.map OrgDropdownMsg (Comp.Dropdown.view2 idNameCfg settings model.corrOrgModel)
|
, Html.map OrgDropdownMsg
|
||||||
|
(Comp.Dropdown.view2
|
||||||
|
idNameCfg
|
||||||
|
settings
|
||||||
|
model.corrOrgModel
|
||||||
|
)
|
||||||
]
|
]
|
||||||
, optional [ Data.Fields.CorrPerson ] <|
|
, optional [ Data.Fields.CorrPerson ] <|
|
||||||
div [ class "mb-4" ]
|
div [ class "mb-4" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ Icons.personIcon2 ""
|
[ Icons.personIcon2 ""
|
||||||
, span [ class "ml-2" ]
|
, span [ class "ml-2" ]
|
||||||
[ text "Person"
|
[ text texts.person
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
, Html.map CorrPersonMsg (Comp.Dropdown.view2 idNameCfg settings model.corrPersonModel)
|
, Html.map CorrPersonMsg
|
||||||
|
(Comp.Dropdown.view2
|
||||||
|
idNameCfg
|
||||||
|
settings
|
||||||
|
model.corrPersonModel
|
||||||
|
)
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabConcerning
|
, { name = tabName TabConcerning
|
||||||
, title = "Concerning"
|
, title = texts.concerningTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -861,7 +873,7 @@ item visible. This message will disappear then.
|
|||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ Icons.personIcon2 ""
|
[ Icons.personIcon2 ""
|
||||||
, span [ class "ml-2" ]
|
, span [ class "ml-2" ]
|
||||||
[ text "Person" ]
|
[ text texts.person ]
|
||||||
]
|
]
|
||||||
, Html.map ConcPersonMsg (Comp.Dropdown.view2 idNameCfg settings model.concPersonModel)
|
, Html.map ConcPersonMsg (Comp.Dropdown.view2 idNameCfg settings model.concPersonModel)
|
||||||
]
|
]
|
||||||
@ -870,7 +882,7 @@ item visible. This message will disappear then.
|
|||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ Icons.equipmentIcon2 ""
|
[ Icons.equipmentIcon2 ""
|
||||||
, span [ class "ml-2" ]
|
, span [ class "ml-2" ]
|
||||||
[ text "Equipment" ]
|
[ text texts.equipment ]
|
||||||
]
|
]
|
||||||
, Html.map ConcEquipMsg
|
, Html.map ConcEquipMsg
|
||||||
(Comp.Dropdown.view2 idNameCfg
|
(Comp.Dropdown.view2 idNameCfg
|
||||||
@ -881,7 +893,7 @@ item visible. This message will disappear then.
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabDirection
|
, { name = tabName TabDirection
|
||||||
, title = "Direction"
|
, title = texts.directionTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -889,7 +901,7 @@ item visible. This message will disappear then.
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabName
|
, { name = tabName TabName
|
||||||
, title = "Name"
|
, title = texts.nameTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -904,9 +916,15 @@ item visible. This message will disappear then.
|
|||||||
, span [ class S.inputLeftIconOnly ]
|
, span [ class S.inputLeftIconOnly ]
|
||||||
[ i
|
[ i
|
||||||
[ classList
|
[ classList
|
||||||
[ ( "text-green-500 fa fa-check", cfg.nameState == SaveSuccess )
|
[ ( "text-green-500 fa fa-check"
|
||||||
, ( "text-red-500 fa fa-exclamation-triangle", cfg.nameState == SaveFailed )
|
, cfg.nameState == SaveSuccess
|
||||||
, ( "sync fa fa-circle-notch animate-spin", cfg.nameState == Saving )
|
)
|
||||||
|
, ( "text-red-500 fa fa-exclamation-triangle"
|
||||||
|
, cfg.nameState == SaveFailed
|
||||||
|
)
|
||||||
|
, ( "sync fa fa-circle-notch animate-spin"
|
||||||
|
, cfg.nameState == Saving
|
||||||
|
)
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
[]
|
[]
|
||||||
@ -923,7 +941,7 @@ tabState settings model tab =
|
|||||||
FTabState.tabState settings
|
FTabState.tabState settings
|
||||||
model.openTabs
|
model.openTabs
|
||||||
(Just model.customFieldModel)
|
(Just model.customFieldModel)
|
||||||
(.title >> ToggleAkkordionTab)
|
(.name >> ToggleAkkordionTab)
|
||||||
tab
|
tab
|
||||||
|
|
||||||
|
|
||||||
|
@ -550,6 +550,8 @@ update key flags inav settings msg model =
|
|||||||
Comp.ConfirmModal.defaultSettings
|
Comp.ConfirmModal.defaultSettings
|
||||||
DeleteItemConfirmed
|
DeleteItemConfirmed
|
||||||
ItemModalCancelled
|
ItemModalCancelled
|
||||||
|
"Ok"
|
||||||
|
"Cancel"
|
||||||
confirmMsg
|
confirmMsg
|
||||||
in
|
in
|
||||||
resultModel { model | itemModal = Just confirm }
|
resultModel { model | itemModal = Just confirm }
|
||||||
@ -923,6 +925,8 @@ update key flags inav settings msg model =
|
|||||||
Comp.ConfirmModal.defaultSettings
|
Comp.ConfirmModal.defaultSettings
|
||||||
(DeleteAttachConfirmed id)
|
(DeleteAttachConfirmed id)
|
||||||
AttachModalCancelled
|
AttachModalCancelled
|
||||||
|
"Ok"
|
||||||
|
"Cancel"
|
||||||
"Really delete this file?"
|
"Really delete this file?"
|
||||||
|
|
||||||
model_ =
|
model_ =
|
||||||
@ -1511,6 +1515,8 @@ update key flags inav settings msg model =
|
|||||||
Comp.ConfirmModal.defaultSettings
|
Comp.ConfirmModal.defaultSettings
|
||||||
(ReprocessFileConfirmed id)
|
(ReprocessFileConfirmed id)
|
||||||
AttachModalCancelled
|
AttachModalCancelled
|
||||||
|
"Ok"
|
||||||
|
"Cancel"
|
||||||
confirmMsg
|
confirmMsg
|
||||||
|
|
||||||
model_ =
|
model_ =
|
||||||
@ -1546,6 +1552,8 @@ update key flags inav settings msg model =
|
|||||||
Comp.ConfirmModal.defaultSettings
|
Comp.ConfirmModal.defaultSettings
|
||||||
ReprocessItemConfirmed
|
ReprocessItemConfirmed
|
||||||
ItemModalCancelled
|
ItemModalCancelled
|
||||||
|
"Ok"
|
||||||
|
"Cancel"
|
||||||
confirmMsg
|
confirmMsg
|
||||||
|
|
||||||
model_ =
|
model_ =
|
||||||
|
@ -2,6 +2,7 @@ module Comp.PowerSearchInput exposing
|
|||||||
( Action(..)
|
( Action(..)
|
||||||
, Model
|
, Model
|
||||||
, Msg
|
, Msg
|
||||||
|
, ViewSettings
|
||||||
, init
|
, init
|
||||||
, update
|
, update
|
||||||
, viewInput
|
, viewInput
|
||||||
@ -133,12 +134,18 @@ throttleUpdate model =
|
|||||||
--- View
|
--- View
|
||||||
|
|
||||||
|
|
||||||
viewInput : List (Attribute Msg) -> Model -> Html Msg
|
type alias ViewSettings =
|
||||||
viewInput attrs model =
|
{ placeholder : String
|
||||||
|
, extraAttrs : List (Attribute Msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
viewInput : ViewSettings -> Model -> Html Msg
|
||||||
|
viewInput cfg model =
|
||||||
input
|
input
|
||||||
(attrs
|
(cfg.extraAttrs
|
||||||
++ [ type_ "text"
|
++ [ type_ "text"
|
||||||
, placeholder "Search query …"
|
, placeholder cfg.placeholder
|
||||||
, onInput SetSearch
|
, onInput SetSearch
|
||||||
, Util.Html.onKeyUpCode KeyUpMsg
|
, Util.Html.onKeyUpCode KeyUpMsg
|
||||||
, Maybe.map value model.input
|
, Maybe.map value model.input
|
||||||
|
@ -44,6 +44,7 @@ import Html exposing (..)
|
|||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
import Html.Events exposing (onClick, onInput)
|
import Html.Events exposing (onClick, onInput)
|
||||||
import Http
|
import Http
|
||||||
|
import Messages.SearchMenuComp exposing (Texts)
|
||||||
import Set exposing (Set)
|
import Set exposing (Set)
|
||||||
import Styles as S
|
import Styles as S
|
||||||
import Util.Html exposing (KeyCode(..))
|
import Util.Html exposing (KeyCode(..))
|
||||||
@ -902,8 +903,7 @@ updateDrop ddm flags settings msg model =
|
|||||||
ToggleOpenAllAkkordionTabs ->
|
ToggleOpenAllAkkordionTabs ->
|
||||||
let
|
let
|
||||||
allNames =
|
allNames =
|
||||||
searchTabs (DD.DragDropData ddm Nothing) flags settings model
|
List.map tabName allTabs
|
||||||
|> List.map .title
|
|
||||||
|> Set.fromList
|
|> Set.fromList
|
||||||
|
|
||||||
next =
|
next =
|
||||||
@ -924,8 +924,8 @@ updateDrop ddm flags settings msg model =
|
|||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
viewDrop2 : DD.DragDropData -> Flags -> UiSettings -> Model -> Html Msg
|
viewDrop2 : Texts -> DD.DragDropData -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
viewDrop2 ddd flags settings model =
|
viewDrop2 texts ddd flags settings model =
|
||||||
let
|
let
|
||||||
akkordionStyle =
|
akkordionStyle =
|
||||||
Comp.Tabs.searchMenuStyle
|
Comp.Tabs.searchMenuStyle
|
||||||
@ -933,7 +933,7 @@ viewDrop2 ddd flags settings model =
|
|||||||
Comp.Tabs.akkordion
|
Comp.Tabs.akkordion
|
||||||
akkordionStyle
|
akkordionStyle
|
||||||
(searchTabState settings model)
|
(searchTabState settings model)
|
||||||
(searchTabs ddd flags settings model)
|
(searchTabs texts ddd flags settings model)
|
||||||
|
|
||||||
|
|
||||||
type SearchTab
|
type SearchTab
|
||||||
@ -950,6 +950,22 @@ type SearchTab
|
|||||||
| TabDirection
|
| TabDirection
|
||||||
|
|
||||||
|
|
||||||
|
allTabs : List SearchTab
|
||||||
|
allTabs =
|
||||||
|
[ TabInbox
|
||||||
|
, TabTags
|
||||||
|
, TabTagCategories
|
||||||
|
, TabFolder
|
||||||
|
, TabCorrespondent
|
||||||
|
, TabConcerning
|
||||||
|
, TabCustomFields
|
||||||
|
, TabDate
|
||||||
|
, TabDueDate
|
||||||
|
, TabSource
|
||||||
|
, TabDirection
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
tabName : SearchTab -> String
|
tabName : SearchTab -> String
|
||||||
tabName tab =
|
tabName tab =
|
||||||
case tab of
|
case tab of
|
||||||
@ -1085,8 +1101,8 @@ searchTabState settings model tab =
|
|||||||
( state, ToggleAkkordionTab tab.name )
|
( state, ToggleAkkordionTab tab.name )
|
||||||
|
|
||||||
|
|
||||||
searchTabs : DD.DragDropData -> Flags -> UiSettings -> Model -> List (Comp.Tabs.Tab Msg)
|
searchTabs : Texts -> DD.DragDropData -> Flags -> UiSettings -> Model -> List (Comp.Tabs.Tab Msg)
|
||||||
searchTabs ddd flags settings model =
|
searchTabs texts ddd flags settings model =
|
||||||
let
|
let
|
||||||
isHidden f =
|
isHidden f =
|
||||||
Data.UiSettings.fieldHidden settings f
|
Data.UiSettings.fieldHidden settings f
|
||||||
@ -1100,21 +1116,14 @@ searchTabs ddd flags settings model =
|
|||||||
{ text = Data.Direction.toString entry
|
{ text = Data.Direction.toString entry
|
||||||
, additional = ""
|
, additional = ""
|
||||||
}
|
}
|
||||||
, placeholder = "Choose a direction…"
|
, placeholder = texts.chooseDirection
|
||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, style = DS.sidebarStyle
|
, style = DS.sidebarStyle
|
||||||
}
|
}
|
||||||
|
|
||||||
corrPersonCfg =
|
personCfg =
|
||||||
{ makeOption = \e -> { text = e.name, additional = "" }
|
{ makeOption = \e -> { text = e.name, additional = "" }
|
||||||
, placeholder = "Choose a person"
|
, placeholder = texts.choosePerson
|
||||||
, labelColor = \_ -> \_ -> ""
|
|
||||||
, style = DS.sidebarStyle
|
|
||||||
}
|
|
||||||
|
|
||||||
concPersonCfg =
|
|
||||||
{ makeOption = \e -> { text = e.name, additional = "" }
|
|
||||||
, placeholder = "Choose a person"
|
|
||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, style = DS.sidebarStyle
|
, style = DS.sidebarStyle
|
||||||
}
|
}
|
||||||
@ -1122,12 +1131,12 @@ searchTabs ddd flags settings model =
|
|||||||
concEquipCfg =
|
concEquipCfg =
|
||||||
{ makeOption = \e -> { text = e.name, additional = "" }
|
{ makeOption = \e -> { text = e.name, additional = "" }
|
||||||
, labelColor = \_ -> \_ -> ""
|
, labelColor = \_ -> \_ -> ""
|
||||||
, placeholder = "Choose an equipment"
|
, placeholder = texts.chooseEquipment
|
||||||
, style = DS.sidebarStyle
|
, style = DS.sidebarStyle
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
[ { name = tabName TabInbox
|
[ { name = tabName TabInbox
|
||||||
, title = "Inbox"
|
, title = texts.inbox
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, body =
|
, body =
|
||||||
@ -1135,7 +1144,7 @@ searchTabs ddd flags settings model =
|
|||||||
MB.Checkbox
|
MB.Checkbox
|
||||||
{ id = "search-inbox"
|
{ id = "search-inbox"
|
||||||
, value = model.inboxCheckbox
|
, value = model.inboxCheckbox
|
||||||
, label = "Inbox"
|
, label = texts.inbox
|
||||||
, tagger = \_ -> ToggleInbox
|
, tagger = \_ -> ToggleInbox
|
||||||
}
|
}
|
||||||
, div [ class "mt-2 hidden" ]
|
, div [ class "mt-2 hidden" ]
|
||||||
@ -1143,10 +1152,10 @@ searchTabs ddd flags settings model =
|
|||||||
[ text
|
[ text
|
||||||
(case model.textSearchModel of
|
(case model.textSearchModel of
|
||||||
Fulltext _ ->
|
Fulltext _ ->
|
||||||
"Fulltext Search"
|
texts.fulltextSearch
|
||||||
|
|
||||||
Names _ ->
|
Names _ ->
|
||||||
"Search in names"
|
texts.searchInNames
|
||||||
)
|
)
|
||||||
, a
|
, a
|
||||||
[ classList
|
[ classList
|
||||||
@ -1156,7 +1165,7 @@ searchTabs ddd flags settings model =
|
|||||||
, class S.link
|
, class S.link
|
||||||
, href "#"
|
, href "#"
|
||||||
, onClick SwapTextSearch
|
, onClick SwapTextSearch
|
||||||
, title "Switch between text search modes"
|
, title texts.switchSearchModes
|
||||||
]
|
]
|
||||||
[ i [ class "fa fa-exchange-alt" ] []
|
[ i [ class "fa fa-exchange-alt" ] []
|
||||||
]
|
]
|
||||||
@ -1168,26 +1177,26 @@ searchTabs ddd flags settings model =
|
|||||||
, textSearchString model.textSearchModel |> Maybe.withDefault "" |> value
|
, textSearchString model.textSearchModel |> Maybe.withDefault "" |> value
|
||||||
, case model.textSearchModel of
|
, case model.textSearchModel of
|
||||||
Fulltext _ ->
|
Fulltext _ ->
|
||||||
placeholder "Content search…"
|
placeholder texts.contentSearch
|
||||||
|
|
||||||
Names _ ->
|
Names _ ->
|
||||||
placeholder "Search in various names…"
|
placeholder texts.searchInNamesPlaceholder
|
||||||
, class S.textInputSidebar
|
, class S.textInputSidebar
|
||||||
]
|
]
|
||||||
[]
|
[]
|
||||||
, span [ class "opacity-50 text-sm" ]
|
, span [ class "opacity-50 text-sm" ]
|
||||||
[ case model.textSearchModel of
|
[ case model.textSearchModel of
|
||||||
Fulltext _ ->
|
Fulltext _ ->
|
||||||
text "Fulltext search in document contents and notes."
|
text texts.fulltextSearchInfo
|
||||||
|
|
||||||
Names _ ->
|
Names _ ->
|
||||||
text "Looks in correspondents, concerned entities, item name and notes."
|
text texts.nameSearchInfo
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabTags
|
, { name = tabName TabTags
|
||||||
, title = "Tags"
|
, title = texts.basics.tags
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1200,7 +1209,7 @@ searchTabs ddd flags settings model =
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
, { name = tabName TabTagCategories
|
, { name = tabName TabTagCategories
|
||||||
, title = "Tag Categories"
|
, title = texts.tagCategoryTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1213,7 +1222,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabFolder
|
, { name = tabName TabFolder
|
||||||
, title = "Folder"
|
, title = texts.folderTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1225,7 +1234,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabCorrespondent
|
, { name = tabName TabCorrespondent
|
||||||
, title = "Correspondent"
|
, title = texts.correspondentTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1234,10 +1243,10 @@ searchTabs ddd flags settings model =
|
|||||||
, classList [ ( "hidden", isHidden Data.Fields.CorrOrg ) ]
|
, classList [ ( "hidden", isHidden Data.Fields.CorrOrg ) ]
|
||||||
]
|
]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text "Organization" ]
|
[ text texts.organization ]
|
||||||
, Html.map OrgMsg
|
, Html.map OrgMsg
|
||||||
(Comp.Dropdown.view2
|
(Comp.Dropdown.view2
|
||||||
(Comp.Dropdown.orgFormViewSettings "Choose an organization" DS.sidebarStyle)
|
(Comp.Dropdown.orgFormViewSettings texts.chooseOrganization DS.sidebarStyle)
|
||||||
settings
|
settings
|
||||||
model.orgModel
|
model.orgModel
|
||||||
)
|
)
|
||||||
@ -1246,10 +1255,10 @@ searchTabs ddd flags settings model =
|
|||||||
[ class "mb-4"
|
[ class "mb-4"
|
||||||
, classList [ ( "hidden", isHidden Data.Fields.CorrPerson ) ]
|
, classList [ ( "hidden", isHidden Data.Fields.CorrPerson ) ]
|
||||||
]
|
]
|
||||||
[ label [ class S.inputLabel ] [ text "Person" ]
|
[ label [ class S.inputLabel ] [ text texts.person ]
|
||||||
, Html.map CorrPersonMsg
|
, Html.map CorrPersonMsg
|
||||||
(Comp.Dropdown.view2
|
(Comp.Dropdown.view2
|
||||||
corrPersonCfg
|
personCfg
|
||||||
settings
|
settings
|
||||||
model.corrPersonModel
|
model.corrPersonModel
|
||||||
)
|
)
|
||||||
@ -1257,7 +1266,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabConcerning
|
, { name = tabName TabConcerning
|
||||||
, title = "Concerning"
|
, title = texts.concerningTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1265,10 +1274,10 @@ searchTabs ddd flags settings model =
|
|||||||
[ class "mb-4"
|
[ class "mb-4"
|
||||||
, classList [ ( "hidden", isHidden Data.Fields.ConcPerson ) ]
|
, classList [ ( "hidden", isHidden Data.Fields.ConcPerson ) ]
|
||||||
]
|
]
|
||||||
[ label [ class S.inputLabel ] [ text "Person" ]
|
[ label [ class S.inputLabel ] [ text texts.person ]
|
||||||
, Html.map ConcPersonMsg
|
, Html.map ConcPersonMsg
|
||||||
(Comp.Dropdown.view2
|
(Comp.Dropdown.view2
|
||||||
concPersonCfg
|
personCfg
|
||||||
settings
|
settings
|
||||||
model.concPersonModel
|
model.concPersonModel
|
||||||
)
|
)
|
||||||
@ -1277,7 +1286,7 @@ searchTabs ddd flags settings model =
|
|||||||
[ class "mb-4"
|
[ class "mb-4"
|
||||||
, classList [ ( "hidden", isHidden Data.Fields.ConcEquip ) ]
|
, classList [ ( "hidden", isHidden Data.Fields.ConcEquip ) ]
|
||||||
]
|
]
|
||||||
[ label [ class S.inputLabel ] [ text "Equipment" ]
|
[ label [ class S.inputLabel ] [ text texts.equipment ]
|
||||||
, Html.map ConcEquipmentMsg
|
, Html.map ConcEquipmentMsg
|
||||||
(Comp.Dropdown.view2
|
(Comp.Dropdown.view2
|
||||||
concEquipCfg
|
concEquipCfg
|
||||||
@ -1288,20 +1297,24 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabCustomFields
|
, { name = tabName TabCustomFields
|
||||||
, title = "Custom Fields"
|
, title = texts.customFieldsTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
[ Html.map CustomFieldMsg
|
[ Html.map CustomFieldMsg
|
||||||
(Comp.CustomFieldMultiInput.view2
|
(Comp.CustomFieldMultiInput.view2
|
||||||
DS.sidebarStyle
|
{ showAddButton = False
|
||||||
(Comp.CustomFieldMultiInput.ViewSettings False "field" (\_ -> Nothing))
|
, classes = ""
|
||||||
|
, fieldIcon = \_ -> Nothing
|
||||||
|
, style = DS.sidebarStyle
|
||||||
|
, createCustomFieldTitle = texts.createCustomFieldTitle
|
||||||
|
}
|
||||||
model.customFieldModel
|
model.customFieldModel
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabDate
|
, { name = tabName TabDate
|
||||||
, title = "Date"
|
, title = texts.dateTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1309,7 +1322,7 @@ searchTabs ddd flags settings model =
|
|||||||
[ class "flex flex-col" ]
|
[ class "flex flex-col" ]
|
||||||
[ div [ class "mb-2" ]
|
[ div [ class "mb-2" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text "From"
|
[ text texts.from
|
||||||
]
|
]
|
||||||
, div [ class "relative" ]
|
, div [ class "relative" ]
|
||||||
[ Html.map FromDateMsg
|
[ Html.map FromDateMsg
|
||||||
@ -1326,7 +1339,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
, div [ class "mb-2" ]
|
, div [ class "mb-2" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text "To"
|
[ text texts.to
|
||||||
]
|
]
|
||||||
, div [ class "relative" ]
|
, div [ class "relative" ]
|
||||||
[ Html.map UntilDateMsg
|
[ Html.map UntilDateMsg
|
||||||
@ -1341,7 +1354,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabDueDate
|
, { name = tabName TabDueDate
|
||||||
, title = "Due Date"
|
, title = texts.dueDateTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1349,7 +1362,7 @@ searchTabs ddd flags settings model =
|
|||||||
[ class "flex flex-col" ]
|
[ class "flex flex-col" ]
|
||||||
[ div [ class "mb-2" ]
|
[ div [ class "mb-2" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text "Due From"
|
[ text texts.dueFrom
|
||||||
]
|
]
|
||||||
, div [ class "relative" ]
|
, div [ class "relative" ]
|
||||||
[ Html.map FromDueDateMsg
|
[ Html.map FromDueDateMsg
|
||||||
@ -1366,7 +1379,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
, div [ class "mb-2" ]
|
, div [ class "mb-2" ]
|
||||||
[ label [ class S.inputLabel ]
|
[ label [ class S.inputLabel ]
|
||||||
[ text "Due To"
|
[ text texts.dueTo
|
||||||
]
|
]
|
||||||
, div [ class "relative" ]
|
, div [ class "relative" ]
|
||||||
[ Html.map UntilDueDateMsg
|
[ Html.map UntilDueDateMsg
|
||||||
@ -1385,7 +1398,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabSource
|
, { name = tabName TabSource
|
||||||
, title = "Source"
|
, title = texts.sourceTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
@ -1395,7 +1408,7 @@ searchTabs ddd flags settings model =
|
|||||||
, onInput SetSource
|
, onInput SetSource
|
||||||
, Util.Html.onKeyUpCode KeyUpMsg
|
, Util.Html.onKeyUpCode KeyUpMsg
|
||||||
, model.sourceModel |> Maybe.withDefault "" |> value
|
, model.sourceModel |> Maybe.withDefault "" |> value
|
||||||
, placeholder "Search in item source…"
|
, placeholder texts.searchInItemSource
|
||||||
, class S.textInputSidebar
|
, class S.textInputSidebar
|
||||||
]
|
]
|
||||||
[]
|
[]
|
||||||
@ -1403,7 +1416,7 @@ searchTabs ddd flags settings model =
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
, { name = tabName TabDirection
|
, { name = tabName TabDirection
|
||||||
, title = "Direction"
|
, title = texts.directionTab
|
||||||
, titleRight = []
|
, titleRight = []
|
||||||
, info = Nothing
|
, info = Nothing
|
||||||
, body =
|
, body =
|
||||||
|
@ -11,6 +11,7 @@ import Data.Icons as Icons
|
|||||||
import Data.Money
|
import Data.Money
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
|
import Messages.SearchStatsViewComp exposing (Texts)
|
||||||
import Styles as S
|
import Styles as S
|
||||||
|
|
||||||
|
|
||||||
@ -28,8 +29,8 @@ sortFields fields =
|
|||||||
--- View2
|
--- View2
|
||||||
|
|
||||||
|
|
||||||
view2 : String -> SearchStats -> Html msg
|
view2 : Texts -> String -> SearchStats -> Html msg
|
||||||
view2 classes stats =
|
view2 texts classes stats =
|
||||||
let
|
let
|
||||||
isNumField f =
|
isNumField f =
|
||||||
f.sum > 0
|
f.sum > 0
|
||||||
@ -75,7 +76,7 @@ view2 classes stats =
|
|||||||
{ rootClass = ""
|
{ rootClass = ""
|
||||||
, valueClass = "text-4xl"
|
, valueClass = "text-4xl"
|
||||||
, value = String.fromInt stats.count
|
, value = String.fromInt stats.count
|
||||||
, label = "Items"
|
, label = texts.items
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
, div [ class "flex-grow" ]
|
, div [ class "flex-grow" ]
|
||||||
@ -87,15 +88,15 @@ view2 classes stats =
|
|||||||
[ tr [ class "" ]
|
[ tr [ class "" ]
|
||||||
[ th [ class "py-2 text-left" ] []
|
[ th [ class "py-2 text-left" ] []
|
||||||
, th [ class "py-2 text-center" ]
|
, th [ class "py-2 text-center" ]
|
||||||
[ text "Count" ]
|
[ text texts.count ]
|
||||||
, th [ class "py-2 text-center" ]
|
, th [ class "py-2 text-center" ]
|
||||||
[ text "Sum" ]
|
[ text texts.sum ]
|
||||||
, th [ class "py-2 text-center hidden md:table-cell" ]
|
, th [ class "py-2 text-center hidden md:table-cell" ]
|
||||||
[ text "Avg" ]
|
[ text texts.avg ]
|
||||||
, th [ class "py-2 text-center hidden md:table-cell" ]
|
, th [ class "py-2 text-center hidden md:table-cell" ]
|
||||||
[ text "Min" ]
|
[ text texts.min ]
|
||||||
, th [ class "py-2 text-center hidden md:table-cell" ]
|
, th [ class "py-2 text-center hidden md:table-cell" ]
|
||||||
[ text "Max" ]
|
[ text texts.max ]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
, tbody []
|
, tbody []
|
||||||
|
@ -7,6 +7,7 @@ module Messages exposing
|
|||||||
|
|
||||||
import Messages.App
|
import Messages.App
|
||||||
import Messages.CollectiveSettingsPage
|
import Messages.CollectiveSettingsPage
|
||||||
|
import Messages.HomePage
|
||||||
import Messages.ItemDetailPage
|
import Messages.ItemDetailPage
|
||||||
import Messages.LoginPage
|
import Messages.LoginPage
|
||||||
import Messages.ManageDataPage
|
import Messages.ManageDataPage
|
||||||
@ -35,6 +36,7 @@ type alias Messages =
|
|||||||
, queue : Messages.QueuePage.Texts
|
, queue : Messages.QueuePage.Texts
|
||||||
, userSettings : Messages.UserSettingsPage.Texts
|
, userSettings : Messages.UserSettingsPage.Texts
|
||||||
, manageData : Messages.ManageDataPage.Texts
|
, manageData : Messages.ManageDataPage.Texts
|
||||||
|
, home : Messages.HomePage.Texts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -97,6 +99,7 @@ gb =
|
|||||||
, queue = Messages.QueuePage.gb
|
, queue = Messages.QueuePage.gb
|
||||||
, userSettings = Messages.UserSettingsPage.gb
|
, userSettings = Messages.UserSettingsPage.gb
|
||||||
, manageData = Messages.ManageDataPage.gb
|
, manageData = Messages.ManageDataPage.gb
|
||||||
|
, home = Messages.HomePage.gb
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -116,4 +119,5 @@ de =
|
|||||||
, queue = Messages.QueuePage.de
|
, queue = Messages.QueuePage.de
|
||||||
, userSettings = Messages.UserSettingsPage.de
|
, userSettings = Messages.UserSettingsPage.de
|
||||||
, manageData = Messages.ManageDataPage.de
|
, manageData = Messages.ManageDataPage.de
|
||||||
|
, home = Messages.HomePage.de
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,9 @@ type alias Texts =
|
|||||||
, backToList : String
|
, backToList : String
|
||||||
, searchPlaceholder : String
|
, searchPlaceholder : String
|
||||||
, id : String
|
, id : String
|
||||||
|
, ok : String
|
||||||
|
, yes : String
|
||||||
|
, no : String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -35,6 +38,9 @@ gb =
|
|||||||
, backToList = "Back to list"
|
, backToList = "Back to list"
|
||||||
, searchPlaceholder = "Search…"
|
, searchPlaceholder = "Search…"
|
||||||
, id = "Id"
|
, id = "Id"
|
||||||
|
, ok = "Ok"
|
||||||
|
, yes = "Yes"
|
||||||
|
, no = "No"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
58
modules/webapp/src/main/elm/Messages/HomePage.elm
Normal file
58
modules/webapp/src/main/elm/Messages/HomePage.elm
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
module Messages.HomePage exposing (..)
|
||||||
|
|
||||||
|
import Messages.Basics
|
||||||
|
import Messages.HomeSideMenu
|
||||||
|
import Messages.ItemCardListComp
|
||||||
|
import Messages.SearchStatsViewComp
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ basics : Messages.Basics.Texts
|
||||||
|
, sideMenu : Messages.HomeSideMenu.Texts
|
||||||
|
, itemCardList : Messages.ItemCardListComp.Texts
|
||||||
|
, searchStatsView : Messages.SearchStatsViewComp.Texts
|
||||||
|
, contentSearch : String
|
||||||
|
, searchInNames : String
|
||||||
|
, selectModeTitle : String
|
||||||
|
, fullHeightPreviewTitle : String
|
||||||
|
, fullWidthPreviewTitle : String
|
||||||
|
, powerSearchPlaceholder : String
|
||||||
|
, reallyReprocessQuestion : String
|
||||||
|
, reallyDeleteQuestion : String
|
||||||
|
, editSelectedItems : Int -> String
|
||||||
|
, reprocessSelectedItems : Int -> String
|
||||||
|
, deleteSelectedItems : Int -> String
|
||||||
|
, selectAllVisible : String
|
||||||
|
, selectNone : String
|
||||||
|
, resetSearchForm : String
|
||||||
|
, exitSelectMode : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ basics = Messages.Basics.gb
|
||||||
|
, sideMenu = Messages.HomeSideMenu.gb
|
||||||
|
, itemCardList = Messages.ItemCardListComp.gb
|
||||||
|
, searchStatsView = Messages.SearchStatsViewComp.gb
|
||||||
|
, contentSearch = "Content search…"
|
||||||
|
, searchInNames = "Search in names…"
|
||||||
|
, selectModeTitle = "Select Mode"
|
||||||
|
, fullHeightPreviewTitle = "Full height preview"
|
||||||
|
, fullWidthPreviewTitle = "Full width preview"
|
||||||
|
, powerSearchPlaceholder = "Search query …"
|
||||||
|
, reallyReprocessQuestion = "Really reprocess all selected items? Metadata of unconfirmed items may change."
|
||||||
|
, reallyDeleteQuestion = "Really delete all selected items?"
|
||||||
|
, editSelectedItems = \n -> "Edit " ++ String.fromInt n ++ " selected items"
|
||||||
|
, reprocessSelectedItems = \n -> "Reprocess " ++ String.fromInt n ++ " selected items"
|
||||||
|
, deleteSelectedItems = \n -> "Delete " ++ String.fromInt n ++ " selected items"
|
||||||
|
, selectAllVisible = "Select all visible"
|
||||||
|
, selectNone = "Select none"
|
||||||
|
, resetSearchForm = "Reset search form"
|
||||||
|
, exitSelectMode = "Exit Select Mode"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
de : Texts
|
||||||
|
de =
|
||||||
|
gb
|
27
modules/webapp/src/main/elm/Messages/HomeSideMenu.elm
Normal file
27
modules/webapp/src/main/elm/Messages/HomeSideMenu.elm
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
module Messages.HomeSideMenu exposing (..)
|
||||||
|
|
||||||
|
import Messages.MultiEditComp
|
||||||
|
import Messages.SearchMenuComp
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ searchMenu : Messages.SearchMenuComp.Texts
|
||||||
|
, multiEdit : Messages.MultiEditComp.Texts
|
||||||
|
, editMode : String
|
||||||
|
, resetSearchForm : String
|
||||||
|
, multiEditHeader : String
|
||||||
|
, multiEditInfo : String
|
||||||
|
, close : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ searchMenu = Messages.SearchMenuComp.gb
|
||||||
|
, multiEdit = Messages.MultiEditComp.gb
|
||||||
|
, editMode = "Edit Mode"
|
||||||
|
, resetSearchForm = "Reset search form"
|
||||||
|
, multiEditHeader = "Multi-Edit"
|
||||||
|
, multiEditInfo = "Note that a change here immediatly affects all selected items on the right!"
|
||||||
|
, close = "Close"
|
||||||
|
}
|
12
modules/webapp/src/main/elm/Messages/ItemCardComp.elm
Normal file
12
modules/webapp/src/main/elm/Messages/ItemCardComp.elm
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
module Messages.ItemCardComp exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ folder : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ folder = "Folder"
|
||||||
|
}
|
14
modules/webapp/src/main/elm/Messages/ItemCardListComp.elm
Normal file
14
modules/webapp/src/main/elm/Messages/ItemCardListComp.elm
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
module Messages.ItemCardListComp exposing (..)
|
||||||
|
|
||||||
|
import Messages.ItemCardComp
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ itemCard : Messages.ItemCardComp.Texts
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ itemCard = Messages.ItemCardComp.gb
|
||||||
|
}
|
61
modules/webapp/src/main/elm/Messages/MultiEditComp.elm
Normal file
61
modules/webapp/src/main/elm/Messages/MultiEditComp.elm
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
module Messages.MultiEditComp exposing (..)
|
||||||
|
|
||||||
|
import Messages.Basics
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ basics : Messages.Basics.Texts
|
||||||
|
, tagModeAddInfo : String
|
||||||
|
, tagModeRemoveInfo : String
|
||||||
|
, tagModeReplaceInfo : String
|
||||||
|
, selectPlaceholder : String
|
||||||
|
, chooseDirection : String
|
||||||
|
, confirmUnconfirm : String
|
||||||
|
, confirm : String
|
||||||
|
, unconfirm : String
|
||||||
|
, changeTagMode : String
|
||||||
|
, folderTab : String
|
||||||
|
, folderNotOwnerWarning : String
|
||||||
|
, customFieldsTab : String
|
||||||
|
, dateTab : String
|
||||||
|
, dueDateTab : String
|
||||||
|
, correspondentTab : String
|
||||||
|
, organization : String
|
||||||
|
, person : String
|
||||||
|
, concerningTab : String
|
||||||
|
, equipment : String
|
||||||
|
, directionTab : String
|
||||||
|
, nameTab : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ basics = Messages.Basics.gb
|
||||||
|
, tagModeAddInfo = "Tags chosen here are *added* to all selected items."
|
||||||
|
, tagModeRemoveInfo = "Tags chosen here are *removed* from all selected items."
|
||||||
|
, tagModeReplaceInfo = "Tags chosen here *replace* those on selected items."
|
||||||
|
, selectPlaceholder = "Select…"
|
||||||
|
, chooseDirection = "Choose a direction…"
|
||||||
|
, confirmUnconfirm = "Confirm/Unconfirm item metadata"
|
||||||
|
, confirm = "Confirm"
|
||||||
|
, unconfirm = "Unconfirm"
|
||||||
|
, changeTagMode = "Change tag edit mode"
|
||||||
|
, folderTab = "Folder"
|
||||||
|
, folderNotOwnerWarning =
|
||||||
|
"""
|
||||||
|
You are **not a member** of this folder. This item will be **hidden**
|
||||||
|
from any search now. Use a folder where you are a member of to make this
|
||||||
|
item visible. This message will disappear then.
|
||||||
|
"""
|
||||||
|
, customFieldsTab = "Custom Fields"
|
||||||
|
, dateTab = "Date"
|
||||||
|
, dueDateTab = "Due Date"
|
||||||
|
, correspondentTab = "Correspondent"
|
||||||
|
, organization = "Organization"
|
||||||
|
, person = "Person"
|
||||||
|
, concerningTab = "Concerning"
|
||||||
|
, equipment = "Equipment"
|
||||||
|
, directionTab = "Direction"
|
||||||
|
, nameTab = "Name"
|
||||||
|
}
|
74
modules/webapp/src/main/elm/Messages/SearchMenuComp.elm
Normal file
74
modules/webapp/src/main/elm/Messages/SearchMenuComp.elm
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
module Messages.SearchMenuComp exposing (..)
|
||||||
|
|
||||||
|
import Messages.Basics
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ basics : Messages.Basics.Texts
|
||||||
|
, chooseDirection : String
|
||||||
|
, choosePerson : String
|
||||||
|
, chooseEquipment : String
|
||||||
|
, inbox : String
|
||||||
|
, fulltextSearch : String
|
||||||
|
, searchInNames : String
|
||||||
|
, switchSearchModes : String
|
||||||
|
, contentSearch : String
|
||||||
|
, searchInNamesPlaceholder : String
|
||||||
|
, fulltextSearchInfo : String
|
||||||
|
, nameSearchInfo : String
|
||||||
|
, tagCategoryTab : String
|
||||||
|
, folderTab : String
|
||||||
|
, correspondentTab : String
|
||||||
|
, organization : String
|
||||||
|
, chooseOrganization : String
|
||||||
|
, person : String
|
||||||
|
, concerningTab : String
|
||||||
|
, equipment : String
|
||||||
|
, customFieldsTab : String
|
||||||
|
, createCustomFieldTitle : String
|
||||||
|
, dateTab : String
|
||||||
|
, from : String
|
||||||
|
, to : String
|
||||||
|
, dueDateTab : String
|
||||||
|
, dueFrom : String
|
||||||
|
, dueTo : String
|
||||||
|
, sourceTab : String
|
||||||
|
, searchInItemSource : String
|
||||||
|
, directionTab : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ basics = Messages.Basics.gb
|
||||||
|
, chooseDirection = "Choose a direction…"
|
||||||
|
, choosePerson = "Choose a person"
|
||||||
|
, chooseEquipment = "Choose an equipment"
|
||||||
|
, inbox = "Inbox"
|
||||||
|
, fulltextSearch = "Fulltext Search"
|
||||||
|
, searchInNames = "Search in names"
|
||||||
|
, switchSearchModes = "Switch between text search modes"
|
||||||
|
, contentSearch = "Content search…"
|
||||||
|
, searchInNamesPlaceholder = "Search in various names…"
|
||||||
|
, fulltextSearchInfo = "Fulltext search in document contents and notes."
|
||||||
|
, nameSearchInfo = "Looks in correspondents, concerned entities, item name and notes."
|
||||||
|
, tagCategoryTab = "Tag Categories"
|
||||||
|
, folderTab = "Folder"
|
||||||
|
, correspondentTab = "Correspondent"
|
||||||
|
, organization = "Organization"
|
||||||
|
, chooseOrganization = "Choose an organization"
|
||||||
|
, person = "Person"
|
||||||
|
, concerningTab = "Concerning"
|
||||||
|
, equipment = "Equipment"
|
||||||
|
, customFieldsTab = "Custom Fields"
|
||||||
|
, createCustomFieldTitle = "Create a new custom field"
|
||||||
|
, dateTab = "Date"
|
||||||
|
, from = "From"
|
||||||
|
, to = "To"
|
||||||
|
, dueDateTab = "Due Date"
|
||||||
|
, dueFrom = "Due From"
|
||||||
|
, dueTo = "Due To"
|
||||||
|
, sourceTab = "Source"
|
||||||
|
, searchInItemSource = "Search in item source…"
|
||||||
|
, directionTab = "Direction"
|
||||||
|
}
|
22
modules/webapp/src/main/elm/Messages/SearchStatsViewComp.elm
Normal file
22
modules/webapp/src/main/elm/Messages/SearchStatsViewComp.elm
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
module Messages.SearchStatsViewComp exposing (..)
|
||||||
|
|
||||||
|
|
||||||
|
type alias Texts =
|
||||||
|
{ items : String
|
||||||
|
, count : String
|
||||||
|
, sum : String
|
||||||
|
, avg : String
|
||||||
|
, min : String
|
||||||
|
, max : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
gb : Texts
|
||||||
|
gb =
|
||||||
|
{ items = "Items"
|
||||||
|
, count = "Count"
|
||||||
|
, sum = "Sum"
|
||||||
|
, avg = "Avg"
|
||||||
|
, min = "Min"
|
||||||
|
, max = "Max"
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
module Page.Home.Data exposing
|
module Page.Home.Data exposing
|
||||||
( Model
|
( ConfirmModalValue(..)
|
||||||
|
, Model
|
||||||
, Msg(..)
|
, Msg(..)
|
||||||
, SearchParam
|
, SearchParam
|
||||||
, SearchType(..)
|
, SearchType(..)
|
||||||
@ -21,7 +22,6 @@ import Api.Model.BasicResult exposing (BasicResult)
|
|||||||
import Api.Model.ItemLightList exposing (ItemLightList)
|
import Api.Model.ItemLightList exposing (ItemLightList)
|
||||||
import Api.Model.SearchStats exposing (SearchStats)
|
import Api.Model.SearchStats exposing (SearchStats)
|
||||||
import Browser.Dom as Dom
|
import Browser.Dom as Dom
|
||||||
import Comp.ConfirmModal
|
|
||||||
import Comp.ItemCardList
|
import Comp.ItemCardList
|
||||||
import Comp.ItemDetail.FormChange exposing (FormChange)
|
import Comp.ItemDetail.FormChange exposing (FormChange)
|
||||||
import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
|
import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
|
||||||
@ -58,10 +58,15 @@ type alias Model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type ConfirmModalValue
|
||||||
|
= ConfirmReprocessItems
|
||||||
|
| ConfirmDelete
|
||||||
|
|
||||||
|
|
||||||
type alias SelectViewModel =
|
type alias SelectViewModel =
|
||||||
{ ids : Set String
|
{ ids : Set String
|
||||||
, action : SelectActionMode
|
, action : SelectActionMode
|
||||||
, confirmModal : Maybe (Comp.ConfirmModal.Settings Msg)
|
, confirmModal : Maybe ConfirmModalValue
|
||||||
, editModel : Comp.ItemDetail.MultiEditMenu.Model
|
, editModel : Comp.ItemDetail.MultiEditMenu.Model
|
||||||
, saveNameState : SaveNameState
|
, saveNameState : SaveNameState
|
||||||
, saveCustomFieldState : Set String
|
, saveCustomFieldState : Set String
|
||||||
|
@ -9,13 +9,14 @@ import Data.UiSettings exposing (UiSettings)
|
|||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
import Html.Events exposing (onClick)
|
import Html.Events exposing (onClick)
|
||||||
|
import Messages.HomeSideMenu exposing (Texts)
|
||||||
import Page.Home.Data exposing (..)
|
import Page.Home.Data exposing (..)
|
||||||
import Set
|
import Set
|
||||||
import Styles as S
|
import Styles as S
|
||||||
|
|
||||||
|
|
||||||
view : Flags -> UiSettings -> Model -> Html Msg
|
view : Texts -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
view flags settings model =
|
view texts flags settings model =
|
||||||
div
|
div
|
||||||
[ class "flex flex-col"
|
[ class "flex flex-col"
|
||||||
]
|
]
|
||||||
@ -25,7 +26,7 @@ view flags settings model =
|
|||||||
{ tagger = ToggleSelectView
|
{ tagger = ToggleSelectView
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-tasks"
|
, icon = Just "fa fa-tasks"
|
||||||
, title = "Edit Mode"
|
, title = texts.editMode
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( S.secondaryBasicButton, True )
|
[ ( S.secondaryBasicButton, True )
|
||||||
, ( "bg-gray-200 dark:bg-bluegray-600", selectActive model )
|
, ( "bg-gray-200 dark:bg-bluegray-600", selectActive model )
|
||||||
@ -35,7 +36,7 @@ view flags settings model =
|
|||||||
{ tagger = ResetSearch
|
{ tagger = ResetSearch
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-sync"
|
, icon = Just "fa fa-sync"
|
||||||
, title = "Reset search form"
|
, title = texts.resetSearchForm
|
||||||
, inputClass = [ ( S.secondaryBasicButton, True ) ]
|
, inputClass = [ ( S.secondaryBasicButton, True ) ]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -47,19 +48,19 @@ view flags settings model =
|
|||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
case svm.action of
|
case svm.action of
|
||||||
EditSelected ->
|
EditSelected ->
|
||||||
viewEditMenu flags svm settings
|
viewEditMenu texts flags svm settings
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
viewSearch flags settings model
|
viewSearch texts flags settings model
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
viewSearch flags settings model
|
viewSearch texts flags settings model
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
viewSearch : Flags -> UiSettings -> Model -> List (Html Msg)
|
viewSearch : Texts -> Flags -> UiSettings -> Model -> List (Html Msg)
|
||||||
viewSearch flags settings model =
|
viewSearch texts flags settings model =
|
||||||
[ MB.viewSide
|
[ MB.viewSide
|
||||||
{ start =
|
{ start =
|
||||||
[ MB.CustomElement <|
|
[ MB.CustomElement <|
|
||||||
@ -75,7 +76,8 @@ viewSearch flags settings model =
|
|||||||
, rootClasses = "my-1 text-xs hidden sm:flex"
|
, rootClasses = "my-1 text-xs hidden sm:flex"
|
||||||
}
|
}
|
||||||
, Html.map SearchMenuMsg
|
, Html.map SearchMenuMsg
|
||||||
(Comp.SearchMenu.viewDrop2 model.dragDropData
|
(Comp.SearchMenu.viewDrop2 texts.searchMenu
|
||||||
|
model.dragDropData
|
||||||
flags
|
flags
|
||||||
settings
|
settings
|
||||||
model.searchMenuModel
|
model.searchMenuModel
|
||||||
@ -83,8 +85,8 @@ viewSearch flags settings model =
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
viewEditMenu : Flags -> SelectViewModel -> UiSettings -> List (Html Msg)
|
viewEditMenu : Texts -> Flags -> SelectViewModel -> UiSettings -> List (Html Msg)
|
||||||
viewEditMenu flags svm settings =
|
viewEditMenu texts flags svm settings =
|
||||||
let
|
let
|
||||||
cfg_ =
|
cfg_ =
|
||||||
Comp.ItemDetail.MultiEditMenu.defaultViewConfig
|
Comp.ItemDetail.MultiEditMenu.defaultViewConfig
|
||||||
@ -104,17 +106,17 @@ viewEditMenu flags svm settings =
|
|||||||
[ div [ class S.header2 ]
|
[ div [ class S.header2 ]
|
||||||
[ i [ class "fa fa-edit" ] []
|
[ i [ class "fa fa-edit" ] []
|
||||||
, span [ class "ml-2" ]
|
, span [ class "ml-2" ]
|
||||||
[ text "Multi-Edit"
|
[ text texts.multiEditHeader
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
, div [ class S.infoMessage ]
|
, div [ class S.infoMessage ]
|
||||||
[ text "Note that a change here immediatly affects all selected items on the right!"
|
[ text texts.multiEditInfo
|
||||||
]
|
]
|
||||||
, MB.viewSide
|
, MB.viewSide
|
||||||
{ start =
|
{ start =
|
||||||
[ MB.CustomElement <|
|
[ MB.CustomElement <|
|
||||||
B.secondaryButton
|
B.secondaryButton
|
||||||
{ label = "Close"
|
{ label = texts.close
|
||||||
, disabled = False
|
, disabled = False
|
||||||
, icon = "fa fa-times"
|
, icon = "fa fa-times"
|
||||||
, handler = onClick ToggleSelectView
|
, handler = onClick ToggleSelectView
|
||||||
@ -127,5 +129,11 @@ viewEditMenu flags svm settings =
|
|||||||
, rootClasses = "mt-2 text-sm"
|
, rootClasses = "mt-2 text-sm"
|
||||||
}
|
}
|
||||||
, Html.map EditMenuMsg
|
, Html.map EditMenuMsg
|
||||||
(Comp.ItemDetail.MultiEditMenu.view2 flags cfg settings svm.editModel)
|
(Comp.ItemDetail.MultiEditMenu.view2
|
||||||
|
texts.multiEdit
|
||||||
|
flags
|
||||||
|
cfg
|
||||||
|
settings
|
||||||
|
svm.editModel
|
||||||
|
)
|
||||||
]
|
]
|
||||||
|
@ -3,8 +3,6 @@ module Page.Home.Update exposing (update)
|
|||||||
import Api
|
import Api
|
||||||
import Api.Model.ItemLightList exposing (ItemLightList)
|
import Api.Model.ItemLightList exposing (ItemLightList)
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Comp.ConfirmModal
|
|
||||||
import Comp.FixedDropdown
|
|
||||||
import Comp.ItemCardList
|
import Comp.ItemCardList
|
||||||
import Comp.ItemDetail.FormChange exposing (FormChange(..))
|
import Comp.ItemDetail.FormChange exposing (FormChange(..))
|
||||||
import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
|
import Comp.ItemDetail.MultiEditMenu exposing (SaveNameState(..))
|
||||||
@ -27,7 +25,6 @@ import Throttle
|
|||||||
import Time
|
import Time
|
||||||
import Util.Html exposing (KeyCode(..))
|
import Util.Html exposing (KeyCode(..))
|
||||||
import Util.ItemDragDrop as DD
|
import Util.ItemDragDrop as DD
|
||||||
import Util.Maybe
|
|
||||||
import Util.Update
|
import Util.Update
|
||||||
|
|
||||||
|
|
||||||
@ -378,19 +375,13 @@ update mId key flags settings msg model =
|
|||||||
|
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
lmsg =
|
|
||||||
Comp.ConfirmModal.defaultSettings
|
|
||||||
ReprocessSelectedConfirmed
|
|
||||||
CloseConfirmModal
|
|
||||||
"Really reprocess all selected items? Metadata of unconfirmed items may change."
|
|
||||||
|
|
||||||
model_ =
|
model_ =
|
||||||
{ model
|
{ model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
{ svm
|
{ svm
|
||||||
| action = ReprocessSelected
|
| action = ReprocessSelected
|
||||||
, confirmModal = Just lmsg
|
, confirmModal = Just ConfirmReprocessItems
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
@ -446,19 +437,13 @@ update mId key flags settings msg model =
|
|||||||
|
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
lmsg =
|
|
||||||
Comp.ConfirmModal.defaultSettings
|
|
||||||
DeleteSelectedConfirmed
|
|
||||||
CloseConfirmModal
|
|
||||||
"Really delete all selected items?"
|
|
||||||
|
|
||||||
model_ =
|
model_ =
|
||||||
{ model
|
{ model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
{ svm
|
{ svm
|
||||||
| action = DeleteSelected
|
| action = DeleteSelected
|
||||||
, confirmModal = Just lmsg
|
, confirmModal = Just ConfirmDelete
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
|
@ -13,6 +13,7 @@ import Data.UiSettings exposing (UiSettings)
|
|||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
import Html.Attributes exposing (..)
|
import Html.Attributes exposing (..)
|
||||||
import Html.Events exposing (onClick, onInput)
|
import Html.Events exposing (onClick, onInput)
|
||||||
|
import Messages.HomePage exposing (Texts)
|
||||||
import Page exposing (Page(..))
|
import Page exposing (Page(..))
|
||||||
import Page.Home.Data exposing (..)
|
import Page.Home.Data exposing (..)
|
||||||
import Page.Home.SideMenu
|
import Page.Home.SideMenu
|
||||||
@ -21,28 +22,28 @@ import Styles as S
|
|||||||
import Util.Html
|
import Util.Html
|
||||||
|
|
||||||
|
|
||||||
viewSidebar : Bool -> Flags -> UiSettings -> Model -> Html Msg
|
viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
viewSidebar visible flags settings model =
|
viewSidebar texts visible flags settings model =
|
||||||
div
|
div
|
||||||
[ id "sidebar"
|
[ id "sidebar"
|
||||||
, class S.sidebar
|
, class S.sidebar
|
||||||
, class S.sidebarBg
|
, class S.sidebarBg
|
||||||
, classList [ ( "hidden", not visible ) ]
|
, classList [ ( "hidden", not visible ) ]
|
||||||
]
|
]
|
||||||
[ Page.Home.SideMenu.view flags settings model
|
[ Page.Home.SideMenu.view texts.sideMenu flags settings model
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
viewContent : Flags -> UiSettings -> Model -> Html Msg
|
viewContent : Texts -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
viewContent flags settings model =
|
viewContent texts flags settings model =
|
||||||
div
|
div
|
||||||
[ id "item-card-list" -- this id is used in scroll-to-card
|
[ id "item-card-list" -- this id is used in scroll-to-card
|
||||||
, class S.content
|
, class S.content
|
||||||
]
|
]
|
||||||
(searchStats flags settings model
|
(searchStats texts flags settings model
|
||||||
++ itemsBar flags settings model
|
++ itemsBar texts flags settings model
|
||||||
++ itemCardList flags settings model
|
++ itemCardList texts flags settings model
|
||||||
++ deleteSelectedDimmer model
|
++ confirmModal texts model
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -50,13 +51,32 @@ viewContent flags settings model =
|
|||||||
--- Helpers
|
--- Helpers
|
||||||
|
|
||||||
|
|
||||||
deleteSelectedDimmer : Model -> List (Html Msg)
|
confirmModal : Texts -> Model -> List (Html Msg)
|
||||||
deleteSelectedDimmer model =
|
confirmModal texts model =
|
||||||
|
let
|
||||||
|
settings modalValue =
|
||||||
|
case modalValue of
|
||||||
|
ConfirmReprocessItems ->
|
||||||
|
Comp.ConfirmModal.defaultSettings
|
||||||
|
ReprocessSelectedConfirmed
|
||||||
|
CloseConfirmModal
|
||||||
|
texts.basics.yes
|
||||||
|
texts.basics.no
|
||||||
|
texts.reallyReprocessQuestion
|
||||||
|
|
||||||
|
ConfirmDelete ->
|
||||||
|
Comp.ConfirmModal.defaultSettings
|
||||||
|
DeleteSelectedConfirmed
|
||||||
|
CloseConfirmModal
|
||||||
|
texts.basics.yes
|
||||||
|
texts.basics.no
|
||||||
|
texts.reallyDeleteQuestion
|
||||||
|
in
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
case svm.confirmModal of
|
case svm.confirmModal of
|
||||||
Just confirm ->
|
Just confirm ->
|
||||||
[ Comp.ConfirmModal.view confirm
|
[ Comp.ConfirmModal.view (settings confirm)
|
||||||
]
|
]
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
@ -66,21 +86,21 @@ deleteSelectedDimmer model =
|
|||||||
[]
|
[]
|
||||||
|
|
||||||
|
|
||||||
itemsBar : Flags -> UiSettings -> Model -> List (Html Msg)
|
itemsBar : Texts -> Flags -> UiSettings -> Model -> List (Html Msg)
|
||||||
itemsBar flags settings model =
|
itemsBar texts flags settings model =
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SimpleView ->
|
SimpleView ->
|
||||||
[ defaultMenuBar flags settings model ]
|
[ defaultMenuBar texts flags settings model ]
|
||||||
|
|
||||||
SearchView ->
|
SearchView ->
|
||||||
[ defaultMenuBar flags settings model ]
|
[ defaultMenuBar texts flags settings model ]
|
||||||
|
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
[ editMenuBar model svm ]
|
[ editMenuBar texts model svm ]
|
||||||
|
|
||||||
|
|
||||||
defaultMenuBar : Flags -> UiSettings -> Model -> Html Msg
|
defaultMenuBar : Texts -> Flags -> UiSettings -> Model -> Html Msg
|
||||||
defaultMenuBar _ settings model =
|
defaultMenuBar texts _ settings model =
|
||||||
let
|
let
|
||||||
btnStyle =
|
btnStyle =
|
||||||
S.secondaryBasicButton ++ " text-sm"
|
S.secondaryBasicButton ++ " text-sm"
|
||||||
@ -97,10 +117,10 @@ defaultMenuBar _ settings model =
|
|||||||
, placeholder
|
, placeholder
|
||||||
(case model.searchTypeDropdownValue of
|
(case model.searchTypeDropdownValue of
|
||||||
ContentOnlySearch ->
|
ContentOnlySearch ->
|
||||||
"Content search…"
|
texts.contentSearch
|
||||||
|
|
||||||
BasicSearch ->
|
BasicSearch ->
|
||||||
"Search in names…"
|
texts.searchInNames
|
||||||
)
|
)
|
||||||
, onInput SetBasicSearch
|
, onInput SetBasicSearch
|
||||||
, Util.Html.onKeyUpCode KeyUpSearchbarMsg
|
, Util.Html.onKeyUpCode KeyUpSearchbarMsg
|
||||||
@ -124,7 +144,10 @@ defaultMenuBar _ settings model =
|
|||||||
div
|
div
|
||||||
[ class "relative flex flex-grow flex-row" ]
|
[ class "relative flex flex-grow flex-row" ]
|
||||||
[ Html.map PowerSearchMsg
|
[ Html.map PowerSearchMsg
|
||||||
(Comp.PowerSearchInput.viewInput []
|
(Comp.PowerSearchInput.viewInput
|
||||||
|
{ placeholder = texts.powerSearchPlaceholder
|
||||||
|
, extraAttrs = []
|
||||||
|
}
|
||||||
model.powerSearchInput
|
model.powerSearchInput
|
||||||
)
|
)
|
||||||
, Html.map PowerSearchMsg
|
, Html.map PowerSearchMsg
|
||||||
@ -150,7 +173,7 @@ defaultMenuBar _ settings model =
|
|||||||
{ tagger = ToggleSelectView
|
{ tagger = ToggleSelectView
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-tasks"
|
, icon = Just "fa fa-tasks"
|
||||||
, title = "Select Mode"
|
, title = texts.selectModeTitle
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "bg-gray-200 dark:bg-bluegray-600", selectActive model )
|
, ( "bg-gray-200 dark:bg-bluegray-600", selectActive model )
|
||||||
@ -170,10 +193,10 @@ defaultMenuBar _ settings model =
|
|||||||
, icon = Just "fa fa-expand"
|
, icon = Just "fa fa-expand"
|
||||||
, title =
|
, title =
|
||||||
if settings.cardPreviewFullWidth then
|
if settings.cardPreviewFullWidth then
|
||||||
"Full height preview"
|
texts.fullHeightPreviewTitle
|
||||||
|
|
||||||
else
|
else
|
||||||
"Full width preview"
|
texts.fullHeightPreviewTitle
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "hidden sm:inline-block", False )
|
, ( "hidden sm:inline-block", False )
|
||||||
@ -185,11 +208,11 @@ defaultMenuBar _ settings model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
editMenuBar : Model -> SelectViewModel -> Html Msg
|
editMenuBar : Texts -> Model -> SelectViewModel -> Html Msg
|
||||||
editMenuBar model svm =
|
editMenuBar texts model svm =
|
||||||
let
|
let
|
||||||
selectCount =
|
selectCount =
|
||||||
Set.size svm.ids |> String.fromInt
|
Set.size svm.ids
|
||||||
|
|
||||||
btnStyle =
|
btnStyle =
|
||||||
S.secondaryBasicButton ++ " text-sm"
|
S.secondaryBasicButton ++ " text-sm"
|
||||||
@ -200,7 +223,7 @@ editMenuBar model svm =
|
|||||||
{ tagger = EditSelectedItems
|
{ tagger = EditSelectedItems
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-edit"
|
, icon = Just "fa fa-edit"
|
||||||
, title = "Edit " ++ selectCount ++ " selected items"
|
, title = texts.editSelectedItems selectCount
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == EditSelected )
|
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == EditSelected )
|
||||||
@ -210,7 +233,7 @@ editMenuBar model svm =
|
|||||||
{ tagger = RequestReprocessSelected
|
{ tagger = RequestReprocessSelected
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-redo"
|
, icon = Just "fa fa-redo"
|
||||||
, title = "Reprocess " ++ selectCount ++ " selected items"
|
, title = texts.reprocessSelectedItems selectCount
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == ReprocessSelected )
|
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == ReprocessSelected )
|
||||||
@ -220,7 +243,7 @@ editMenuBar model svm =
|
|||||||
{ tagger = RequestDeleteSelected
|
{ tagger = RequestDeleteSelected
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-trash"
|
, icon = Just "fa fa-trash"
|
||||||
, title = "Delete " ++ selectCount ++ " selected items"
|
, title = texts.deleteSelectedItems selectCount
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == DeleteSelected )
|
, ( "bg-gray-200 dark:bg-bluegray-600", svm.action == DeleteSelected )
|
||||||
@ -232,7 +255,7 @@ editMenuBar model svm =
|
|||||||
{ tagger = SelectAllItems
|
{ tagger = SelectAllItems
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-check-square font-thin"
|
, icon = Just "fa fa-check-square font-thin"
|
||||||
, title = "Select all visible"
|
, title = texts.selectAllVisible
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
]
|
]
|
||||||
@ -241,21 +264,21 @@ editMenuBar model svm =
|
|||||||
{ tagger = SelectNoItems
|
{ tagger = SelectNoItems
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-square font-thin"
|
, icon = Just "fa fa-square font-thin"
|
||||||
, title = "Select none"
|
, title = texts.selectNone
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
, MB.TextLabel
|
, MB.TextLabel
|
||||||
{ icon = ""
|
{ icon = ""
|
||||||
, label = selectCount
|
, label = String.fromInt selectCount
|
||||||
, class = "px-4 py-2 w-10 rounded-full font-bold bg-blue-100 dark:bg-lightblue-600 "
|
, class = "px-4 py-2 w-10 rounded-full font-bold bg-blue-100 dark:bg-lightblue-600 "
|
||||||
}
|
}
|
||||||
, MB.CustomButton
|
, MB.CustomButton
|
||||||
{ tagger = ResetSearch
|
{ tagger = ResetSearch
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-sync"
|
, icon = Just "fa fa-sync"
|
||||||
, title = "Reset search form"
|
, title = texts.resetSearchForm
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "hidden sm:block", True )
|
, ( "hidden sm:block", True )
|
||||||
@ -265,7 +288,7 @@ editMenuBar model svm =
|
|||||||
{ tagger = ToggleSelectView
|
{ tagger = ToggleSelectView
|
||||||
, label = ""
|
, label = ""
|
||||||
, icon = Just "fa fa-tasks"
|
, icon = Just "fa fa-tasks"
|
||||||
, title = "Exit Select Mode"
|
, title = texts.exitSelectMode
|
||||||
, inputClass =
|
, inputClass =
|
||||||
[ ( btnStyle, True )
|
[ ( btnStyle, True )
|
||||||
, ( "bg-gray-200 dark:bg-bluegray-600", selectActive model )
|
, ( "bg-gray-200 dark:bg-bluegray-600", selectActive model )
|
||||||
@ -276,18 +299,18 @@ editMenuBar model svm =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
searchStats : Flags -> UiSettings -> Model -> List (Html Msg)
|
searchStats : Texts -> Flags -> UiSettings -> Model -> List (Html Msg)
|
||||||
searchStats _ settings model =
|
searchStats texts _ settings model =
|
||||||
if settings.searchStatsVisible then
|
if settings.searchStatsVisible then
|
||||||
[ Comp.SearchStatsView.view2 "my-2" model.searchStats
|
[ Comp.SearchStatsView.view2 texts.searchStatsView "my-2" model.searchStats
|
||||||
]
|
]
|
||||||
|
|
||||||
else
|
else
|
||||||
[]
|
[]
|
||||||
|
|
||||||
|
|
||||||
itemCardList : Flags -> UiSettings -> Model -> List (Html Msg)
|
itemCardList : Texts -> Flags -> UiSettings -> Model -> List (Html Msg)
|
||||||
itemCardList _ settings model =
|
itemCardList texts _ settings model =
|
||||||
let
|
let
|
||||||
itemViewCfg =
|
itemViewCfg =
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -302,7 +325,11 @@ itemCardList _ settings model =
|
|||||||
Data.ItemSelection.Inactive
|
Data.ItemSelection.Inactive
|
||||||
in
|
in
|
||||||
[ Html.map ItemCardListMsg
|
[ Html.map ItemCardListMsg
|
||||||
(Comp.ItemCardList.view2 itemViewCfg settings model.itemListModel)
|
(Comp.ItemCardList.view2 texts.itemCardList
|
||||||
|
itemViewCfg
|
||||||
|
settings
|
||||||
|
model.itemListModel
|
||||||
|
)
|
||||||
, loadMore settings model
|
, loadMore settings model
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user