mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 19:08:26 +00:00
Switch to search by clicking on correspondent/concerned in detail
This commit is contained in:
@ -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
|
||||
|
Reference in New Issue
Block a user