Add ui-settings flag for side menus

This commit is contained in:
Eike Kettner 2020-10-27 22:35:52 +01:00
parent 83b41b027f
commit 183bcf5bec
10 changed files with 117 additions and 5 deletions

View File

@ -66,12 +66,19 @@ init key url flags_ settings =
( csm, csc ) = ( csm, csc ) =
Page.CollectiveSettings.Data.init flags Page.CollectiveSettings.Data.init flags
homeViewMode =
if settings.searchMenuVisible then
Page.Home.Data.SearchView
else
Page.Home.Data.SimpleView
in in
( { flags = flags ( { flags = flags
, key = key , key = key
, page = page , page = page
, version = Api.Model.VersionInfo.empty , version = Api.Model.VersionInfo.empty
, homeModel = Page.Home.Data.init flags , homeModel = Page.Home.Data.init flags homeViewMode
, loginModel = Page.Login.Data.emptyModel , loginModel = Page.Login.Data.emptyModel
, manageDataModel = mdm , manageDataModel = mdm
, collSettingsModel = csm , collSettingsModel = csm

View File

@ -181,7 +181,8 @@ updateWithSub msg model =
GetUiSettings settings -> GetUiSettings settings ->
Util.Update.andThen2 Util.Update.andThen2
[ updateUserSettings Page.UserSettings.Data.UpdateSettings [ updateUserSettings Page.UserSettings.Data.UpdateSettings
, updateHome Page.Home.Data.DoSearch , updateHome Page.Home.Data.UiSettingsUpdated
, updateItemDetail Page.ItemDetail.Data.UiSettingsUpdated
] ]
{ model | uiSettings = settings } { model | uiSettings = settings }

View File

@ -272,6 +272,7 @@ type Msg
| UpdateThrottle | UpdateThrottle
| KeyInputMsg Comp.KeyInput.Msg | KeyInputMsg Comp.KeyInput.Msg
| ToggleAttachMenu | ToggleAttachMenu
| UiSettingsUpdated
type SaveNameState type SaveNameState

View File

@ -1269,6 +1269,15 @@ update key flags inav settings msg model =
ToggleAttachMenu -> ToggleAttachMenu ->
noSub ( { model | attachMenuOpen = not model.attachMenuOpen }, Cmd.none ) noSub ( { model | attachMenuOpen = not model.attachMenuOpen }, Cmd.none )
UiSettingsUpdated ->
let
model_ =
{ model
| menuOpen = settings.editMenuVisible
}
in
noSub ( model_, Cmd.none )
--- Helper --- Helper

View File

@ -40,6 +40,8 @@ type alias Model =
, searchMenuTagCatCountModel : Comp.IntField.Model , searchMenuTagCatCountModel : Comp.IntField.Model
, formFields : List Field , formFields : List Field
, itemDetailShortcuts : Bool , itemDetailShortcuts : Bool
, searchMenuVisible : Bool
, editMenuVisible : Bool
} }
@ -89,6 +91,8 @@ init flags settings =
"Number of categories in search menu" "Number of categories in search menu"
, formFields = settings.formFields , formFields = settings.formFields
, itemDetailShortcuts = settings.itemDetailShortcuts , itemDetailShortcuts = settings.itemDetailShortcuts
, searchMenuVisible = settings.searchMenuVisible
, editMenuVisible = settings.editMenuVisible
} }
, Api.getTags flags "" GetTagsResp , Api.getTags flags "" GetTagsResp
) )
@ -106,6 +110,8 @@ type Msg
| SearchMenuTagCatMsg Comp.IntField.Msg | SearchMenuTagCatMsg Comp.IntField.Msg
| FieldListMsg Comp.FieldListSelect.Msg | FieldListMsg Comp.FieldListSelect.Msg
| ToggleItemDetailShortcuts | ToggleItemDetailShortcuts
| ToggleSearchMenuVisible
| ToggleEditMenuVisible
@ -273,6 +279,24 @@ update sett msg model =
, Just { sett | itemDetailShortcuts = flag } , Just { sett | itemDetailShortcuts = flag }
) )
ToggleSearchMenuVisible ->
let
flag =
not model.searchMenuVisible
in
( { model | searchMenuVisible = flag }
, Just { sett | searchMenuVisible = flag }
)
ToggleEditMenuVisible ->
let
flag =
not model.editMenuVisible
in
( { model | editMenuVisible = flag }
, Just { sett | editMenuVisible = flag }
)
--- View --- View
@ -317,6 +341,19 @@ view flags _ model =
) )
, div [ class "ui dividing header" ] , div [ class "ui dividing header" ]
[ text "Search Menu" ] [ text "Search Menu" ]
, div [ class "field" ]
[ div [ class "ui checkbox" ]
[ input
[ type_ "checkbox"
, onCheck (\_ -> ToggleSearchMenuVisible)
, checked model.searchMenuVisible
]
[]
, label []
[ text "Show search side menu by default"
]
]
]
, Html.map SearchMenuTagMsg , Html.map SearchMenuTagMsg
(Comp.IntField.viewWithInfo (Comp.IntField.viewWithInfo
"How many tags to display in search menu at once. Others can be expanded. Use 0 to always show all." "How many tags to display in search menu at once. Others can be expanded. Use 0 to always show all."
@ -367,6 +404,19 @@ view flags _ model =
] ]
] ]
] ]
, div [ class "field" ]
[ div [ class "ui checkbox" ]
[ input
[ type_ "checkbox"
, onCheck (\_ -> ToggleEditMenuVisible)
, checked model.editMenuVisible
]
[]
, label []
[ text "Show edit side menu by default"
]
]
]
, div [ class "grouped fields" ] , div [ class "grouped fields" ]
[ label [] [ text "Position of item notes" ] [ label [] [ text "Position of item notes" ]
, div [ class "field" ] , div [ class "field" ]

View File

@ -41,6 +41,8 @@ type alias StoredUiSettings =
, searchMenuTagCatCount : Maybe Int , searchMenuTagCatCount : Maybe Int
, formFields : Maybe (List String) , formFields : Maybe (List String)
, itemDetailShortcuts : Bool , itemDetailShortcuts : Bool
, searchMenuVisible : Bool
, editMenuVisible : Bool
} }
@ -62,6 +64,8 @@ type alias UiSettings =
, searchMenuTagCatCount : Int , searchMenuTagCatCount : Int
, formFields : List Field , formFields : List Field
, itemDetailShortcuts : Bool , itemDetailShortcuts : Bool
, searchMenuVisible : Bool
, editMenuVisible : Bool
} }
@ -105,6 +109,8 @@ defaults =
, searchMenuTagCatCount = 3 , searchMenuTagCatCount = 3
, formFields = Data.Fields.all , formFields = Data.Fields.all
, itemDetailShortcuts = False , itemDetailShortcuts = False
, searchMenuVisible = False
, editMenuVisible = False
} }
@ -138,6 +144,8 @@ merge given fallback =
(Maybe.map Data.Fields.fromList given.formFields) (Maybe.map Data.Fields.fromList given.formFields)
fallback.formFields fallback.formFields
, itemDetailShortcuts = given.itemDetailShortcuts , itemDetailShortcuts = given.itemDetailShortcuts
, searchMenuVisible = given.searchMenuVisible
, editMenuVisible = given.editMenuVisible
} }
@ -162,6 +170,8 @@ toStoredUiSettings settings =
List.map Data.Fields.toString settings.formFields List.map Data.Fields.toString settings.formFields
|> Just |> Just
, itemDetailShortcuts = settings.itemDetailShortcuts , itemDetailShortcuts = settings.itemDetailShortcuts
, searchMenuVisible = settings.searchMenuVisible
, editMenuVisible = settings.editMenuVisible
} }

View File

@ -81,8 +81,8 @@ type ViewMode
| SelectView SelectViewModel | SelectView SelectViewModel
init : Flags -> Model init : Flags -> ViewMode -> Model
init flags = init flags viewMode =
let let
searchTypeOptions = searchTypeOptions =
if flags.config.fullTextSearchEnabled then if flags.config.fullTextSearchEnabled then
@ -107,7 +107,7 @@ init flags =
, dragDropData = , dragDropData =
DD.DragDropData DD.init Nothing DD.DragDropData DD.init Nothing
, scrollToCard = Nothing , scrollToCard = Nothing
, viewMode = SimpleView , viewMode = viewMode
} }
@ -173,6 +173,7 @@ type Msg
| MultiUpdateResp FormChange (Result Http.Error BasicResult) | MultiUpdateResp FormChange (Result Http.Error BasicResult)
| ReplaceChangedItemsResp (Result Http.Error ItemLightList) | ReplaceChangedItemsResp (Result Http.Error ItemLightList)
| DeleteAllResp (Result Http.Error BasicResult) | DeleteAllResp (Result Http.Error BasicResult)
| UiSettingsUpdated
type SearchType type SearchType

View File

@ -495,6 +495,31 @@ update mId key flags settings msg model =
ReplaceChangedItemsResp (Err _) -> ReplaceChangedItemsResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
UiSettingsUpdated ->
let
defaultViewMode =
if settings.searchMenuVisible then
SearchView
else
SimpleView
viewMode =
case model.viewMode of
SimpleView ->
defaultViewMode
SearchView ->
defaultViewMode
sv ->
sv
model_ =
{ model | viewMode = viewMode }
in
update mId key flags settings DoSearch model_
--- Helpers --- Helpers

View File

@ -23,3 +23,4 @@ type Msg
| ItemDetailMsg Comp.ItemDetail.Model.Msg | ItemDetailMsg Comp.ItemDetail.Model.Msg
| ItemResp (Result Http.Error ItemDetail) | ItemResp (Result Http.Error ItemDetail)
| ScrollResult (Result Dom.Error ()) | ScrollResult (Result Dom.Error ())
| UiSettingsUpdated

View File

@ -59,3 +59,10 @@ update key flags inav settings msg model =
ScrollResult _ -> ScrollResult _ ->
( model, Cmd.none, Sub.none ) ( model, Cmd.none, Sub.none )
UiSettingsUpdated ->
let
lmsg =
ItemDetailMsg Comp.ItemDetail.Model.UiSettingsUpdated
in
update key flags inav settings lmsg model