mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-03-28 09:45:07 +00:00
Switch to search by clicking on correspondent/concerned in detail
This commit is contained in:
parent
cf578a88d3
commit
fe8c122968
@ -7,6 +7,7 @@ import Api
|
||||
import App.Data exposing (..)
|
||||
import Browser exposing (UrlRequest(..))
|
||||
import Browser.Navigation as Nav
|
||||
import Comp.LinkTarget
|
||||
import Data.Flags
|
||||
import Page exposing (Page(..))
|
||||
import Page.CollectiveSettings.Data
|
||||
@ -193,7 +194,7 @@ updateItemDetail lmsg model =
|
||||
inav =
|
||||
Page.Home.Data.itemNav model.itemDetailModel.detail.item.id model.homeModel
|
||||
|
||||
( lm, lc, ls ) =
|
||||
result =
|
||||
Page.ItemDetail.Update.update
|
||||
model.key
|
||||
model.flags
|
||||
@ -201,12 +202,18 @@ updateItemDetail lmsg model =
|
||||
model.uiSettings
|
||||
lmsg
|
||||
model.itemDetailModel
|
||||
|
||||
model_ =
|
||||
{ model
|
||||
| itemDetailModel = result.model
|
||||
}
|
||||
|
||||
( hm, hc, hs ) =
|
||||
updateHome (Page.Home.Data.SetLinkTarget result.linkTarget) model_
|
||||
in
|
||||
( { model
|
||||
| itemDetailModel = lm
|
||||
}
|
||||
, Cmd.map ItemDetailMsg lc
|
||||
, Sub.map ItemDetailMsg ls
|
||||
( hm
|
||||
, Cmd.batch [ Cmd.map ItemDetailMsg result.cmd, hc ]
|
||||
, Sub.batch [ Sub.map ItemDetailMsg result.sub, hs ]
|
||||
)
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@ module Comp.ItemDetail exposing
|
||||
)
|
||||
|
||||
import Browser.Navigation as Nav
|
||||
import Comp.ItemDetail.Model exposing (Msg(..))
|
||||
import Comp.ItemDetail.Model exposing (Msg(..), UpdateResult)
|
||||
import Comp.ItemDetail.Update
|
||||
import Comp.ItemDetail.View exposing (..)
|
||||
import Data.Flags exposing (Flags)
|
||||
@ -25,7 +25,7 @@ emptyModel =
|
||||
Comp.ItemDetail.Model.emptyModel
|
||||
|
||||
|
||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
|
||||
update =
|
||||
Comp.ItemDetail.Update.update
|
||||
|
||||
|
@ -4,8 +4,12 @@ module Comp.ItemDetail.Model exposing
|
||||
, Msg(..)
|
||||
, NotesField(..)
|
||||
, SaveNameState(..)
|
||||
, UpdateResult
|
||||
, emptyModel
|
||||
, isEditNotes
|
||||
, resultModel
|
||||
, resultModelCmd
|
||||
, resultModelCmdSub
|
||||
)
|
||||
|
||||
import Api.Model.BasicResult exposing (BasicResult)
|
||||
@ -281,3 +285,26 @@ type SaveNameState
|
||||
= Saving
|
||||
| SaveSuccess
|
||||
| SaveFailed
|
||||
|
||||
|
||||
type alias UpdateResult =
|
||||
{ model : Model
|
||||
, cmd : Cmd Msg
|
||||
, sub : Sub Msg
|
||||
, linkTarget : LinkTarget
|
||||
}
|
||||
|
||||
|
||||
resultModel : Model -> UpdateResult
|
||||
resultModel model =
|
||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone
|
||||
|
||||
|
||||
resultModelCmd : ( Model, Cmd Msg ) -> UpdateResult
|
||||
resultModelCmd ( model, cmd ) =
|
||||
UpdateResult model cmd Sub.none Comp.LinkTarget.LinkNone
|
||||
|
||||
|
||||
resultModelCmdSub : ( Model, Cmd Msg, Sub Msg ) -> UpdateResult
|
||||
resultModelCmdSub ( model, cmd, sub ) =
|
||||
UpdateResult model cmd sub Comp.LinkTarget.LinkNone
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -25,6 +25,7 @@ import Comp.FixedDropdown
|
||||
import Comp.ItemCardList
|
||||
import Comp.ItemDetail.EditMenu exposing (SaveNameState(..))
|
||||
import Comp.ItemDetail.FormChange exposing (FormChange)
|
||||
import Comp.LinkTarget exposing (LinkTarget)
|
||||
import Comp.SearchMenu
|
||||
import Comp.YesNoDimmer
|
||||
import Data.Flags exposing (Flags)
|
||||
@ -174,6 +175,7 @@ type Msg
|
||||
| ReplaceChangedItemsResp (Result Http.Error ItemLightList)
|
||||
| DeleteAllResp (Result Http.Error BasicResult)
|
||||
| UiSettingsUpdated
|
||||
| SetLinkTarget LinkTarget
|
||||
|
||||
|
||||
type SearchType
|
||||
|
@ -10,7 +10,7 @@ import Comp.ItemCard
|
||||
import Comp.ItemCardList
|
||||
import Comp.ItemDetail.EditMenu exposing (SaveNameState(..))
|
||||
import Comp.ItemDetail.FormChange exposing (FormChange(..))
|
||||
import Comp.LinkTarget
|
||||
import Comp.LinkTarget exposing (LinkTarget)
|
||||
import Comp.SearchMenu
|
||||
import Comp.YesNoDimmer
|
||||
import Data.Flags exposing (Flags)
|
||||
@ -88,6 +88,14 @@ update mId key flags settings msg model =
|
||||
, s2
|
||||
)
|
||||
|
||||
SetLinkTarget lt ->
|
||||
case linkTargetMsg lt of
|
||||
Just m ->
|
||||
update mId key flags settings m model
|
||||
|
||||
Nothing ->
|
||||
( model, Cmd.none, Sub.none )
|
||||
|
||||
ItemCardListMsg m ->
|
||||
let
|
||||
result =
|
||||
@ -97,24 +105,8 @@ update mId key flags settings msg model =
|
||||
model.itemListModel
|
||||
|
||||
searchMsg =
|
||||
case result.linkTarget of
|
||||
Comp.LinkTarget.LinkNone ->
|
||||
Cmd.none
|
||||
|
||||
Comp.LinkTarget.LinkCorrOrg id ->
|
||||
Util.Update.cmdUnit (SearchMenuMsg (Comp.SearchMenu.SetCorrOrg id))
|
||||
|
||||
Comp.LinkTarget.LinkCorrPerson id ->
|
||||
Util.Update.cmdUnit (SearchMenuMsg (Comp.SearchMenu.SetCorrPerson id))
|
||||
|
||||
Comp.LinkTarget.LinkConcPerson id ->
|
||||
Util.Update.cmdUnit (SearchMenuMsg (Comp.SearchMenu.SetConcPerson id))
|
||||
|
||||
Comp.LinkTarget.LinkConcEquip id ->
|
||||
Util.Update.cmdUnit (SearchMenuMsg (Comp.SearchMenu.SetConcEquip id))
|
||||
|
||||
Comp.LinkTarget.LinkFolder id ->
|
||||
Util.Update.cmdUnit (SearchMenuMsg (Comp.SearchMenu.SetFolder id))
|
||||
Maybe.map Util.Update.cmdUnit (linkTargetMsg result.linkTarget)
|
||||
|> Maybe.withDefault Cmd.none
|
||||
|
||||
nextView =
|
||||
case ( model.viewMode, result.selection ) of
|
||||
@ -665,6 +657,28 @@ doSearch flags settings scroll model =
|
||||
)
|
||||
|
||||
|
||||
linkTargetMsg : LinkTarget -> Maybe Msg
|
||||
linkTargetMsg linkTarget =
|
||||
case linkTarget of
|
||||
Comp.LinkTarget.LinkNone ->
|
||||
Nothing
|
||||
|
||||
Comp.LinkTarget.LinkCorrOrg id ->
|
||||
Just <| SearchMenuMsg (Comp.SearchMenu.SetCorrOrg id)
|
||||
|
||||
Comp.LinkTarget.LinkCorrPerson id ->
|
||||
Just <| SearchMenuMsg (Comp.SearchMenu.SetCorrPerson id)
|
||||
|
||||
Comp.LinkTarget.LinkConcPerson id ->
|
||||
Just <| SearchMenuMsg (Comp.SearchMenu.SetConcPerson id)
|
||||
|
||||
Comp.LinkTarget.LinkConcEquip id ->
|
||||
Just <| SearchMenuMsg (Comp.SearchMenu.SetConcEquip id)
|
||||
|
||||
Comp.LinkTarget.LinkFolder id ->
|
||||
Just <| SearchMenuMsg (Comp.SearchMenu.SetFolder id)
|
||||
|
||||
|
||||
doSearchMore : Flags -> UiSettings -> Model -> ( Model, Cmd Msg )
|
||||
doSearchMore flags settings model =
|
||||
let
|
||||
|
@ -1,9 +1,15 @@
|
||||
module Page.ItemDetail.Data exposing (Model, Msg(..), emptyModel)
|
||||
module Page.ItemDetail.Data exposing
|
||||
( Model
|
||||
, Msg(..)
|
||||
, UpdateResult
|
||||
, emptyModel
|
||||
)
|
||||
|
||||
import Api.Model.ItemDetail exposing (ItemDetail)
|
||||
import Browser.Dom as Dom
|
||||
import Comp.ItemDetail
|
||||
import Comp.ItemDetail.Model
|
||||
import Comp.LinkTarget exposing (LinkTarget)
|
||||
import Http
|
||||
|
||||
|
||||
@ -24,3 +30,11 @@ type Msg
|
||||
| ItemResp (Result Http.Error ItemDetail)
|
||||
| ScrollResult (Result Dom.Error ())
|
||||
| UiSettingsUpdated
|
||||
|
||||
|
||||
type alias UpdateResult =
|
||||
{ model : Model
|
||||
, cmd : Cmd Msg
|
||||
, sub : Sub Msg
|
||||
, linkTarget : LinkTarget
|
||||
}
|
||||
|
@ -4,20 +4,22 @@ import Api
|
||||
import Browser.Navigation as Nav
|
||||
import Comp.ItemDetail
|
||||
import Comp.ItemDetail.Model
|
||||
import Comp.LinkTarget
|
||||
import Data.Flags exposing (Flags)
|
||||
import Data.ItemNav exposing (ItemNav)
|
||||
import Data.UiSettings exposing (UiSettings)
|
||||
import Page.ItemDetail.Data exposing (Model, Msg(..))
|
||||
import Page exposing (Page(..))
|
||||
import Page.ItemDetail.Data exposing (Model, Msg(..), UpdateResult)
|
||||
import Scroll
|
||||
import Task
|
||||
|
||||
|
||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
|
||||
update key flags inav settings msg model =
|
||||
case msg of
|
||||
Init id ->
|
||||
let
|
||||
( lm, lc, ls ) =
|
||||
result =
|
||||
Comp.ItemDetail.update key
|
||||
flags
|
||||
inav
|
||||
@ -28,24 +30,35 @@ update key flags inav settings msg model =
|
||||
task =
|
||||
Scroll.scroll "main-content" 0 0 0 0
|
||||
in
|
||||
( { model | detail = lm }
|
||||
, Cmd.batch
|
||||
[ Api.itemDetail flags id ItemResp
|
||||
, Cmd.map ItemDetailMsg lc
|
||||
, Task.attempt ScrollResult task
|
||||
]
|
||||
, Sub.map ItemDetailMsg ls
|
||||
)
|
||||
{ model = { model | detail = result.model }
|
||||
, cmd =
|
||||
Cmd.batch
|
||||
[ Api.itemDetail flags id ItemResp
|
||||
, Cmd.map ItemDetailMsg result.cmd
|
||||
, Task.attempt ScrollResult task
|
||||
]
|
||||
, sub = Sub.map ItemDetailMsg result.sub
|
||||
, linkTarget = result.linkTarget
|
||||
}
|
||||
|
||||
ItemDetailMsg lmsg ->
|
||||
let
|
||||
( lm, lc, ls ) =
|
||||
result =
|
||||
Comp.ItemDetail.update key flags inav settings lmsg model.detail
|
||||
|
||||
pageSwitch =
|
||||
case result.linkTarget of
|
||||
Comp.LinkTarget.LinkNone ->
|
||||
Cmd.none
|
||||
|
||||
_ ->
|
||||
Page.set key HomePage
|
||||
in
|
||||
( { model | detail = lm }
|
||||
, Cmd.map ItemDetailMsg lc
|
||||
, Sub.map ItemDetailMsg ls
|
||||
)
|
||||
{ model = { model | detail = result.model }
|
||||
, cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ]
|
||||
, sub = Sub.map ItemDetailMsg result.sub
|
||||
, linkTarget = result.linkTarget
|
||||
}
|
||||
|
||||
ItemResp (Ok item) ->
|
||||
let
|
||||
@ -55,10 +68,10 @@ update key flags inav settings msg model =
|
||||
update key flags inav settings (ItemDetailMsg lmsg) model
|
||||
|
||||
ItemResp (Err _) ->
|
||||
( model, Cmd.none, Sub.none )
|
||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone
|
||||
|
||||
ScrollResult _ ->
|
||||
( model, Cmd.none, Sub.none )
|
||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone
|
||||
|
||||
UiSettingsUpdated ->
|
||||
let
|
||||
|
Loading…
x
Reference in New Issue
Block a user