mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-29 19:48:26 +00:00
Select item in detail view
This commit is contained in:
@ -17,6 +17,7 @@ import Browser.Dom as Dom
|
||||
import Comp.ItemDetail
|
||||
import Comp.ItemDetail.Model
|
||||
import Comp.LinkTarget exposing (LinkTarget)
|
||||
import Data.ItemIds exposing (ItemIds)
|
||||
import Http
|
||||
|
||||
|
||||
@ -45,4 +46,5 @@ type alias UpdateResult =
|
||||
, sub : Sub Msg
|
||||
, linkTarget : LinkTarget
|
||||
, removedItem : Maybe String
|
||||
, selectedItems : ItemIds
|
||||
}
|
||||
|
@ -8,29 +8,26 @@
|
||||
module Page.ItemDetail.Update exposing (update)
|
||||
|
||||
import Api
|
||||
import Browser.Navigation as Nav
|
||||
import Comp.ItemDetail
|
||||
import Comp.ItemDetail.Model
|
||||
import Comp.LinkTarget
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.Environment as Env
|
||||
import Data.ItemIds
|
||||
import Data.ItemNav exposing (ItemNav)
|
||||
import Data.UiSettings exposing (UiSettings)
|
||||
import Page exposing (Page(..))
|
||||
import Page.ItemDetail.Data exposing (Model, Msg(..), UpdateResult)
|
||||
import Scroll
|
||||
import Task
|
||||
|
||||
|
||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
|
||||
update key flags inav settings msg model =
|
||||
update : ItemNav -> Env.Update -> Msg -> Model -> UpdateResult
|
||||
update inav env msg model =
|
||||
case msg of
|
||||
Init id ->
|
||||
let
|
||||
result =
|
||||
Comp.ItemDetail.update key
|
||||
flags
|
||||
inav
|
||||
settings
|
||||
Comp.ItemDetail.update inav
|
||||
env
|
||||
Comp.ItemDetail.Model.Init
|
||||
model.detail
|
||||
|
||||
@ -40,19 +37,20 @@ update key flags inav settings msg model =
|
||||
{ model = { model | detail = result.model }
|
||||
, cmd =
|
||||
Cmd.batch
|
||||
[ Api.itemDetail flags id ItemResp
|
||||
[ Api.itemDetail env.flags id ItemResp
|
||||
, Cmd.map ItemDetailMsg result.cmd
|
||||
, Task.attempt ScrollResult task
|
||||
]
|
||||
, sub = Sub.map ItemDetailMsg result.sub
|
||||
, linkTarget = result.linkTarget
|
||||
, removedItem = result.removedItem
|
||||
, selectedItems = env.selectedItems
|
||||
}
|
||||
|
||||
ItemDetailMsg lmsg ->
|
||||
let
|
||||
result =
|
||||
Comp.ItemDetail.update key flags inav settings lmsg model.detail
|
||||
Comp.ItemDetail.update inav env lmsg model.detail
|
||||
|
||||
pageSwitch =
|
||||
case result.linkTarget of
|
||||
@ -60,13 +58,14 @@ update key flags inav settings msg model =
|
||||
Cmd.none
|
||||
|
||||
_ ->
|
||||
Page.set key (SearchPage Nothing)
|
||||
Page.set env.key (SearchPage Nothing)
|
||||
in
|
||||
{ model = { model | detail = result.model }
|
||||
, cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ]
|
||||
, sub = Sub.map ItemDetailMsg result.sub
|
||||
, linkTarget = result.linkTarget
|
||||
, removedItem = result.removedItem
|
||||
, selectedItems = Data.ItemIds.apply env.selectedItems result.selectionChange
|
||||
}
|
||||
|
||||
ItemResp (Ok item) ->
|
||||
@ -74,17 +73,28 @@ update key flags inav settings msg model =
|
||||
lmsg =
|
||||
Comp.ItemDetail.Model.SetItem item
|
||||
in
|
||||
update key flags inav settings (ItemDetailMsg lmsg) model
|
||||
update inav env (ItemDetailMsg lmsg) model
|
||||
|
||||
ItemResp (Err _) ->
|
||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing
|
||||
unit env model
|
||||
|
||||
ScrollResult _ ->
|
||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing
|
||||
unit env model
|
||||
|
||||
UiSettingsUpdated ->
|
||||
let
|
||||
lmsg =
|
||||
ItemDetailMsg Comp.ItemDetail.Model.UiSettingsUpdated
|
||||
in
|
||||
update key flags inav settings lmsg model
|
||||
update inav env lmsg model
|
||||
|
||||
|
||||
unit : Env.Update -> Model -> UpdateResult
|
||||
unit env model =
|
||||
{ model = model
|
||||
, cmd = Cmd.none
|
||||
, sub = Sub.none
|
||||
, linkTarget = Comp.LinkTarget.LinkNone
|
||||
, removedItem = Nothing
|
||||
, selectedItems = env.selectedItems
|
||||
}
|
||||
|
@ -12,6 +12,7 @@ import Comp.ItemDetail
|
||||
import Comp.ItemDetail.EditForm
|
||||
import Comp.ItemDetail.Model
|
||||
import Comp.MenuBar as MB
|
||||
import Data.Environment as Env
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemNav exposing (ItemNav)
|
||||
import Data.UiSettings exposing (UiSettings)
|
||||
@ -23,13 +24,13 @@ import Page.ItemDetail.Data exposing (..)
|
||||
import Styles as S
|
||||
|
||||
|
||||
viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg
|
||||
viewSidebar texts visible flags settings model =
|
||||
viewSidebar : Texts -> Env.View -> Model -> Html Msg
|
||||
viewSidebar texts env model =
|
||||
div
|
||||
[ id "sidebar"
|
||||
, class S.sidebar
|
||||
, class S.sidebarBg
|
||||
, classList [ ( "hidden", not visible ) ]
|
||||
, classList [ ( "hidden", not env.sidebarVisible ) ]
|
||||
]
|
||||
[ div
|
||||
[ class S.header2
|
||||
@ -57,16 +58,16 @@ viewSidebar texts visible flags settings model =
|
||||
, sticky = True
|
||||
}
|
||||
, Html.map ItemDetailMsg
|
||||
(Comp.ItemDetail.EditForm.view2 texts.editForm flags settings model.detail)
|
||||
(Comp.ItemDetail.EditForm.view2 texts.editForm env.flags env.settings model.detail)
|
||||
]
|
||||
|
||||
|
||||
viewContent : Texts -> ItemNav -> Flags -> UiSettings -> Model -> Html Msg
|
||||
viewContent texts inav flags settings model =
|
||||
viewContent : Texts -> ItemNav -> Env.View -> Model -> Html Msg
|
||||
viewContent texts inav env model =
|
||||
div
|
||||
[ id "content"
|
||||
, class S.content
|
||||
]
|
||||
[ Html.map ItemDetailMsg
|
||||
(Comp.ItemDetail.view2 texts.itemDetail flags inav settings model.detail)
|
||||
(Comp.ItemDetail.view2 texts.itemDetail inav env model.detail)
|
||||
]
|
||||
|
Reference in New Issue
Block a user