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 ) =
Page.CollectiveSettings.Data.init flags
homeViewMode =
if settings.searchMenuVisible then
Page.Home.Data.SearchView
else
Page.Home.Data.SimpleView
in
( { flags = flags
, key = key
, page = page
, version = Api.Model.VersionInfo.empty
, homeModel = Page.Home.Data.init flags
, homeModel = Page.Home.Data.init flags homeViewMode
, loginModel = Page.Login.Data.emptyModel
, manageDataModel = mdm
, collSettingsModel = csm

View File

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

View File

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

View File

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

View File

@ -40,6 +40,8 @@ type alias Model =
, searchMenuTagCatCountModel : Comp.IntField.Model
, formFields : List Field
, itemDetailShortcuts : Bool
, searchMenuVisible : Bool
, editMenuVisible : Bool
}
@ -89,6 +91,8 @@ init flags settings =
"Number of categories in search menu"
, formFields = settings.formFields
, itemDetailShortcuts = settings.itemDetailShortcuts
, searchMenuVisible = settings.searchMenuVisible
, editMenuVisible = settings.editMenuVisible
}
, Api.getTags flags "" GetTagsResp
)
@ -106,6 +110,8 @@ type Msg
| SearchMenuTagCatMsg Comp.IntField.Msg
| FieldListMsg Comp.FieldListSelect.Msg
| ToggleItemDetailShortcuts
| ToggleSearchMenuVisible
| ToggleEditMenuVisible
@ -273,6 +279,24 @@ update sett msg model =
, 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
@ -317,6 +341,19 @@ view flags _ model =
)
, div [ class "ui dividing header" ]
[ 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
(Comp.IntField.viewWithInfo
"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" ]
[ label [] [ text "Position of item notes" ]
, div [ class "field" ]

View File

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

View File

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

View File

@ -495,6 +495,31 @@ update mId key flags settings msg model =
ReplaceChangedItemsResp (Err _) ->
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

View File

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

View File

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