mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-04-05 10:59:33 +00:00
parent
7f6bb6994d
commit
f1445e797b
@ -154,14 +154,21 @@ tabState settings openTabs cfmodel toggle tab =
|
|||||||
_ ->
|
_ ->
|
||||||
False
|
False
|
||||||
|
|
||||||
state =
|
folded =
|
||||||
if hidden then
|
if Set.member tab.name openTabs then
|
||||||
TB.Hidden
|
|
||||||
|
|
||||||
else if Set.member tab.name openTabs then
|
|
||||||
TB.Open
|
TB.Open
|
||||||
|
|
||||||
else
|
else
|
||||||
TB.Closed
|
TB.Closed
|
||||||
|
|
||||||
|
state =
|
||||||
|
{ folded = folded
|
||||||
|
, look =
|
||||||
|
if hidden then
|
||||||
|
TB.Hidden
|
||||||
|
|
||||||
|
else
|
||||||
|
TB.Normal
|
||||||
|
}
|
||||||
in
|
in
|
||||||
( state, toggle tab )
|
( state, toggle tab )
|
||||||
|
@ -762,12 +762,19 @@ view2 texts flags extraClasses settings model =
|
|||||||
, icon = Just "fa fa-play"
|
, icon = Just "fa fa-play"
|
||||||
}
|
}
|
||||||
|
|
||||||
tabActive t =
|
tabLook t =
|
||||||
if Set.member t.name model.openTabs then
|
if Set.member t.name model.openTabs then
|
||||||
( Comp.Tabs.Open, ToggleAkkordionTab t.name )
|
{ folded = Comp.Tabs.Open
|
||||||
|
, look = Comp.Tabs.Normal
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
( Comp.Tabs.Closed, ToggleAkkordionTab t.name )
|
{ folded = Comp.Tabs.Closed
|
||||||
|
, look = Comp.Tabs.Normal
|
||||||
|
}
|
||||||
|
|
||||||
|
tabActive t =
|
||||||
|
( tabLook t, ToggleAkkordionTab t.name )
|
||||||
in
|
in
|
||||||
div
|
div
|
||||||
[ class extraClasses
|
[ class extraClasses
|
||||||
|
@ -1088,63 +1088,111 @@ findTab tab =
|
|||||||
Nothing
|
Nothing
|
||||||
|
|
||||||
|
|
||||||
|
tabLook :UiSettings -> Model -> SearchTab -> Comp.Tabs.Look
|
||||||
|
tabLook settings model tab =
|
||||||
|
let
|
||||||
|
isHidden f =
|
||||||
|
Data.UiSettings.fieldHidden settings f
|
||||||
|
|
||||||
|
hiddenOr fields default =
|
||||||
|
if List.all isHidden fields then
|
||||||
|
Comp.Tabs.Hidden
|
||||||
|
else
|
||||||
|
default
|
||||||
|
|
||||||
|
activeWhen flag =
|
||||||
|
if flag then
|
||||||
|
Comp.Tabs.Active
|
||||||
|
|
||||||
|
else
|
||||||
|
Comp.Tabs.Normal
|
||||||
|
|
||||||
|
activeWhenNotEmpty list1 list2 =
|
||||||
|
if List.isEmpty list1 && List.isEmpty list2 then
|
||||||
|
Comp.Tabs.Normal
|
||||||
|
|
||||||
|
else
|
||||||
|
Comp.Tabs.Active
|
||||||
|
|
||||||
|
activeWhenJust mx =
|
||||||
|
if mx == Nothing then
|
||||||
|
Comp.Tabs.Normal
|
||||||
|
|
||||||
|
else
|
||||||
|
Comp.Tabs.Active
|
||||||
|
in
|
||||||
|
case tab of
|
||||||
|
TabInbox ->
|
||||||
|
activeWhen model.inboxCheckbox
|
||||||
|
|
||||||
|
TabTags ->
|
||||||
|
hiddenOr [Data.Fields.Tag]
|
||||||
|
(activeWhenNotEmpty model.tagSelection.includeTags model.tagSelection.excludeTags)
|
||||||
|
|
||||||
|
TabTagCategories ->
|
||||||
|
hiddenOr [Data.Fields.Tag]
|
||||||
|
(activeWhenNotEmpty model.tagSelection.includeCats model.tagSelection.excludeCats)
|
||||||
|
|
||||||
|
TabFolder ->
|
||||||
|
hiddenOr [Data.Fields.Folder]
|
||||||
|
(activeWhenJust model.selectedFolder)
|
||||||
|
|
||||||
|
TabCorrespondent ->
|
||||||
|
hiddenOr [Data.Fields.CorrOrg, Data.Fields.CorrPerson] <|
|
||||||
|
activeWhenNotEmpty (Comp.Dropdown.getSelected model.orgModel)
|
||||||
|
(Comp.Dropdown.getSelected model.corrPersonModel)
|
||||||
|
|
||||||
|
TabConcerning ->
|
||||||
|
hiddenOr [Data.Fields.ConcPerson, Data.Fields.ConcEquip ] <|
|
||||||
|
activeWhenNotEmpty (Comp.Dropdown.getSelected model.concPersonModel)
|
||||||
|
(Comp.Dropdown.getSelected model.concEquipmentModel)
|
||||||
|
|
||||||
|
TabDate ->
|
||||||
|
hiddenOr [Data.Fields.Date] <|
|
||||||
|
activeWhenJust (Util.Maybe.or [model.fromDate, model.untilDate])
|
||||||
|
|
||||||
|
TabDueDate ->
|
||||||
|
hiddenOr [Data.Fields.DueDate] <|
|
||||||
|
activeWhenJust (Util.Maybe.or [model.fromDueDate, model.untilDueDate])
|
||||||
|
|
||||||
|
TabSource ->
|
||||||
|
hiddenOr [Data.Fields.SourceName] <|
|
||||||
|
activeWhenJust model.sourceModel
|
||||||
|
|
||||||
|
TabDirection ->
|
||||||
|
hiddenOr [Data.Fields.Direction] <|
|
||||||
|
activeWhenNotEmpty (Comp.Dropdown.getSelected model.directionModel) []
|
||||||
|
|
||||||
|
TabTrashed ->
|
||||||
|
activeWhen (model.searchMode == Data.SearchMode.Trashed)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
Comp.Tabs.Normal
|
||||||
|
|
||||||
|
|
||||||
searchTabState : UiSettings -> Model -> Comp.Tabs.Tab Msg -> ( Comp.Tabs.State, Msg )
|
searchTabState : UiSettings -> Model -> Comp.Tabs.Tab Msg -> ( Comp.Tabs.State, Msg )
|
||||||
searchTabState settings model tab =
|
searchTabState settings model tab =
|
||||||
let
|
let
|
||||||
isHidden f =
|
isHidden f =
|
||||||
Data.UiSettings.fieldHidden settings f
|
Data.UiSettings.fieldHidden settings f
|
||||||
|
|
||||||
hidden =
|
searchTab =
|
||||||
case findTab tab of
|
findTab tab
|
||||||
Just TabTags ->
|
|
||||||
isHidden Data.Fields.Tag
|
|
||||||
|
|
||||||
Just TabTagCategories ->
|
|
||||||
isHidden Data.Fields.Tag
|
|
||||||
|
|
||||||
Just TabFolder ->
|
folded =
|
||||||
isHidden Data.Fields.Folder
|
if Set.member tab.name model.openTabs then
|
||||||
|
|
||||||
Just TabCorrespondent ->
|
|
||||||
isHidden Data.Fields.CorrOrg && isHidden Data.Fields.CorrPerson
|
|
||||||
|
|
||||||
Just TabConcerning ->
|
|
||||||
isHidden Data.Fields.ConcEquip && isHidden Data.Fields.ConcPerson
|
|
||||||
|
|
||||||
Just TabCustomFields ->
|
|
||||||
isHidden Data.Fields.CustomFields
|
|
||||||
|| Comp.CustomFieldMultiInput.isEmpty model.customFieldModel
|
|
||||||
|
|
||||||
Just TabDate ->
|
|
||||||
isHidden Data.Fields.Date
|
|
||||||
|
|
||||||
Just TabDueDate ->
|
|
||||||
isHidden Data.Fields.DueDate
|
|
||||||
|
|
||||||
Just TabSource ->
|
|
||||||
isHidden Data.Fields.SourceName
|
|
||||||
|
|
||||||
Just TabDirection ->
|
|
||||||
isHidden Data.Fields.Direction
|
|
||||||
|
|
||||||
Just TabInbox ->
|
|
||||||
False
|
|
||||||
|
|
||||||
Just TabTrashed ->
|
|
||||||
False
|
|
||||||
|
|
||||||
Nothing ->
|
|
||||||
False
|
|
||||||
|
|
||||||
state =
|
|
||||||
if hidden then
|
|
||||||
Comp.Tabs.Hidden
|
|
||||||
|
|
||||||
else if Set.member tab.name model.openTabs then
|
|
||||||
Comp.Tabs.Open
|
Comp.Tabs.Open
|
||||||
|
|
||||||
else
|
else
|
||||||
Comp.Tabs.Closed
|
Comp.Tabs.Closed
|
||||||
|
|
||||||
|
state =
|
||||||
|
{ folded = folded
|
||||||
|
, look = Maybe.map (tabLook settings model) searchTab
|
||||||
|
|> Maybe.withDefault Comp.Tabs.Normal
|
||||||
|
}
|
||||||
|
|
||||||
in
|
in
|
||||||
( state, ToggleAkkordionTab tab.name )
|
( state, ToggleAkkordionTab tab.name )
|
||||||
|
|
||||||
|
@ -6,7 +6,9 @@
|
|||||||
|
|
||||||
|
|
||||||
module Comp.Tabs exposing
|
module Comp.Tabs exposing
|
||||||
( State(..)
|
( Folded(..)
|
||||||
|
, Look(..)
|
||||||
|
, State
|
||||||
, Style
|
, Style
|
||||||
, Tab
|
, Tab
|
||||||
, akkordion
|
, akkordion
|
||||||
@ -37,10 +39,21 @@ type alias Style =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
type State
|
type Folded
|
||||||
= Open
|
= Open
|
||||||
| Closed
|
| Closed
|
||||||
| Hidden
|
|
||||||
|
|
||||||
|
type Look
|
||||||
|
= Hidden
|
||||||
|
| Active
|
||||||
|
| Normal
|
||||||
|
|
||||||
|
|
||||||
|
type alias State =
|
||||||
|
{ look : Look
|
||||||
|
, folded : Folded
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
defaultStyle : Style
|
defaultStyle : Style
|
||||||
@ -88,11 +101,14 @@ akkordionTab style state toggle tab =
|
|||||||
]
|
]
|
||||||
(a
|
(a
|
||||||
[ class "flex flex-row items-center flex-grow"
|
[ class "flex flex-row items-center flex-grow"
|
||||||
|
, classList
|
||||||
|
[ ( "font-bold text-indigo-600 dark:text-yellow-500", state.look == Active )
|
||||||
|
]
|
||||||
, href "#"
|
, href "#"
|
||||||
, onClick toggle
|
, onClick toggle
|
||||||
]
|
]
|
||||||
[ div [ class "inline-flex mr-2 w-2" ]
|
[ div [ class "inline-flex mr-2 w-2" ]
|
||||||
[ if state == Open then
|
[ if state.folded == Open then
|
||||||
i [ class "fa fa-caret-down" ] []
|
i [ class "fa fa-caret-down" ] []
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -112,7 +128,7 @@ akkordionTab style state toggle tab =
|
|||||||
|
|
||||||
tabContent =
|
tabContent =
|
||||||
div
|
div
|
||||||
[ classList [ ( "hidden", state == Closed ) ]
|
[ classList [ ( "hidden", state.folded == Closed ) ]
|
||||||
, class style.bodyClasses
|
, class style.bodyClasses
|
||||||
]
|
]
|
||||||
tab.body
|
tab.body
|
||||||
@ -120,7 +136,9 @@ akkordionTab style state toggle tab =
|
|||||||
div
|
div
|
||||||
[ class style.tabClasses
|
[ class style.tabClasses
|
||||||
, class "flex flex-col"
|
, class "flex flex-col"
|
||||||
, classList [ ( "hidden", state == Hidden ) ]
|
, classList
|
||||||
|
[ ( "hidden", state.look == Hidden )
|
||||||
|
]
|
||||||
]
|
]
|
||||||
[ tabTitle
|
[ tabTitle
|
||||||
, tabContent
|
, tabContent
|
||||||
|
@ -489,10 +489,14 @@ view2 texts flags settings model =
|
|||||||
let
|
let
|
||||||
state tab =
|
state tab =
|
||||||
if Set.member tab.name model.openTabs then
|
if Set.member tab.name model.openTabs then
|
||||||
Comp.Tabs.Open
|
{ folded = Comp.Tabs.Open
|
||||||
|
, look = Comp.Tabs.Normal
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
Comp.Tabs.Closed
|
{ folded = Comp.Tabs.Closed
|
||||||
|
, look = Comp.Tabs.Normal
|
||||||
|
}
|
||||||
in
|
in
|
||||||
div [ class "flex flex-col" ]
|
div [ class "flex flex-col" ]
|
||||||
[ Comp.Tabs.akkordion
|
[ Comp.Tabs.akkordion
|
||||||
|
Loading…
x
Reference in New Issue
Block a user