diff --git a/modules/webapp/src/main/elm/App/Data.elm b/modules/webapp/src/main/elm/App/Data.elm index 28fbd8d4..8be4d15f 100644 --- a/modules/webapp/src/main/elm/App/Data.elm +++ b/modules/webapp/src/main/elm/App/Data.elm @@ -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 diff --git a/modules/webapp/src/main/elm/App/Update.elm b/modules/webapp/src/main/elm/App/Update.elm index e261463b..5d40b1c0 100644 --- a/modules/webapp/src/main/elm/App/Update.elm +++ b/modules/webapp/src/main/elm/App/Update.elm @@ -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 } diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm index ea75691a..d04289ff 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm @@ -272,6 +272,7 @@ type Msg | UpdateThrottle | KeyInputMsg Comp.KeyInput.Msg | ToggleAttachMenu + | UiSettingsUpdated type SaveNameState diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm index 5fddccca..37e805b3 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm @@ -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 diff --git a/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm b/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm index 7a4a29dc..4bd955af 100644 --- a/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm +++ b/modules/webapp/src/main/elm/Comp/UiSettingsForm.elm @@ -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" ] diff --git a/modules/webapp/src/main/elm/Data/UiSettings.elm b/modules/webapp/src/main/elm/Data/UiSettings.elm index e08f1d44..38263ddf 100644 --- a/modules/webapp/src/main/elm/Data/UiSettings.elm +++ b/modules/webapp/src/main/elm/Data/UiSettings.elm @@ -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 } diff --git a/modules/webapp/src/main/elm/Page/Home/Data.elm b/modules/webapp/src/main/elm/Page/Home/Data.elm index 9754a70f..dfc22f55 100644 --- a/modules/webapp/src/main/elm/Page/Home/Data.elm +++ b/modules/webapp/src/main/elm/Page/Home/Data.elm @@ -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 diff --git a/modules/webapp/src/main/elm/Page/Home/Update.elm b/modules/webapp/src/main/elm/Page/Home/Update.elm index 35cc0147..a4840e25 100644 --- a/modules/webapp/src/main/elm/Page/Home/Update.elm +++ b/modules/webapp/src/main/elm/Page/Home/Update.elm @@ -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 diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm b/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm index ed432e9f..f1597990 100644 --- a/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm +++ b/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm @@ -23,3 +23,4 @@ type Msg | ItemDetailMsg Comp.ItemDetail.Model.Msg | ItemResp (Result Http.Error ItemDetail) | ScrollResult (Result Dom.Error ()) + | UiSettingsUpdated diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm index 001de073..63509826 100644 --- a/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm +++ b/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm @@ -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