Switch to search by clicking on correspondent/concerned in detail

This commit is contained in:
Eike Kettner
2020-11-14 12:57:38 +01:00
parent cf578a88d3
commit fe8c122968
8 changed files with 364 additions and 308 deletions

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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