mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-03-29 11:15:09 +00:00
Add ui-settings flag for side menus
This commit is contained in:
parent
83b41b027f
commit
183bcf5bec
@ -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
|
||||
|
@ -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 }
|
||||
|
||||
|
@ -272,6 +272,7 @@ type Msg
|
||||
| UpdateThrottle
|
||||
| KeyInputMsg Comp.KeyInput.Msg
|
||||
| ToggleAttachMenu
|
||||
| UiSettingsUpdated
|
||||
|
||||
|
||||
type SaveNameState
|
||||
|
@ -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
|
||||
|
@ -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" ]
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -23,3 +23,4 @@ type Msg
|
||||
| ItemDetailMsg Comp.ItemDetail.Model.Msg
|
||||
| ItemResp (Result Http.Error ItemDetail)
|
||||
| ScrollResult (Result Dom.Error ())
|
||||
| UiSettingsUpdated
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user