mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-22 02:18:26 +00:00
Select item in detail view
This commit is contained in:
@ -15,7 +15,9 @@ import App.Data exposing (..)
|
|||||||
import Browser exposing (UrlRequest(..))
|
import Browser exposing (UrlRequest(..))
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Data.AppEvent exposing (AppEvent(..))
|
import Data.AppEvent exposing (AppEvent(..))
|
||||||
|
import Data.Environment as Env
|
||||||
import Data.Flags
|
import Data.Flags
|
||||||
|
import Data.ItemIds exposing (ItemIds)
|
||||||
import Data.ServerEvent exposing (ServerEvent(..))
|
import Data.ServerEvent exposing (ServerEvent(..))
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
import Data.UiTheme
|
import Data.UiTheme
|
||||||
@ -346,6 +348,15 @@ updateWithSub msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
modelEnv : Model -> Env.Update
|
||||||
|
modelEnv model =
|
||||||
|
{ key = model.key
|
||||||
|
, selectedItems = model.selectedItems
|
||||||
|
, flags = model.flags
|
||||||
|
, settings = model.uiSettings
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
applyClientSettings : Messages -> Model -> UiSettings -> ( Model, Cmd Msg, Sub Msg )
|
applyClientSettings : Messages -> Model -> UiSettings -> ( Model, Cmd Msg, Sub Msg )
|
||||||
applyClientSettings texts model settings =
|
applyClientSettings texts model settings =
|
||||||
let
|
let
|
||||||
@ -368,6 +379,18 @@ applyClientSettings texts model settings =
|
|||||||
{ model | uiSettings = settings }
|
{ model | uiSettings = settings }
|
||||||
|
|
||||||
|
|
||||||
|
applySelectionChange : Messages -> Model -> ItemIds -> ( Model, Cmd Msg, Sub Msg )
|
||||||
|
applySelectionChange texts model newSelection =
|
||||||
|
if model.selectedItems == newSelection then
|
||||||
|
( { model | selectedItems = newSelection }, Cmd.none, Sub.none )
|
||||||
|
|
||||||
|
else
|
||||||
|
Util.Update.andThen2
|
||||||
|
[ updateSearch texts Page.Search.Data.ItemSelectionChanged
|
||||||
|
]
|
||||||
|
{ model | selectedItems = newSelection }
|
||||||
|
|
||||||
|
|
||||||
updateDashboard : Messages -> Page.Dashboard.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
updateDashboard : Messages -> Page.Dashboard.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||||
updateDashboard texts lmsg model =
|
updateDashboard texts lmsg model =
|
||||||
let
|
let
|
||||||
@ -427,17 +450,16 @@ updateItemDetail texts lmsg model =
|
|||||||
|
|
||||||
result =
|
result =
|
||||||
Page.ItemDetail.Update.update
|
Page.ItemDetail.Update.update
|
||||||
model.key
|
|
||||||
model.flags
|
|
||||||
inav
|
inav
|
||||||
model.uiSettings
|
(modelEnv model)
|
||||||
lmsg
|
lmsg
|
||||||
model.itemDetailModel
|
model.itemDetailModel
|
||||||
|
|
||||||
model_ =
|
( model_, cmd_, sub_ ) =
|
||||||
{ model
|
applySelectionChange
|
||||||
| itemDetailModel = result.model
|
texts
|
||||||
}
|
{ model | itemDetailModel = result.model }
|
||||||
|
result.selectedItems
|
||||||
|
|
||||||
( hm, hc, hs ) =
|
( hm, hc, hs ) =
|
||||||
updateSearch texts (Page.Search.Data.SetLinkTarget result.linkTarget) model_
|
updateSearch texts (Page.Search.Data.SetLinkTarget result.linkTarget) model_
|
||||||
@ -451,8 +473,8 @@ updateItemDetail texts lmsg model =
|
|||||||
( hm, hc, hs )
|
( hm, hc, hs )
|
||||||
in
|
in
|
||||||
( hm1
|
( hm1
|
||||||
, Cmd.batch [ Cmd.map ItemDetailMsg result.cmd, hc, hc1 ]
|
, Cmd.batch [ Cmd.map ItemDetailMsg result.cmd, hc, hc1, cmd_ ]
|
||||||
, Sub.batch [ Sub.map ItemDetailMsg result.sub, hs, hs1 ]
|
, Sub.batch [ Sub.map ItemDetailMsg result.sub, hs, hs1, sub_ ]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -576,7 +598,7 @@ updateLogin lmsg model =
|
|||||||
updateSearch : Messages -> Page.Search.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
updateSearch : Messages -> Page.Search.Data.Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
|
||||||
updateSearch texts lmsg model =
|
updateSearch texts lmsg model =
|
||||||
let
|
let
|
||||||
( mid, bmId ) =
|
( lastViewItemId, bookmarkId ) =
|
||||||
case model.page of
|
case model.page of
|
||||||
SearchPage bId ->
|
SearchPage bId ->
|
||||||
( Util.Maybe.fromString model.itemDetailModel.detail.item.id, bId )
|
( Util.Maybe.fromString model.itemDetailModel.detail.item.id, bId )
|
||||||
@ -585,19 +607,10 @@ updateSearch texts lmsg model =
|
|||||||
( Nothing, Nothing )
|
( Nothing, Nothing )
|
||||||
|
|
||||||
env =
|
env =
|
||||||
{ bookmarkId = bmId
|
modelEnv model
|
||||||
, lastViewedItemId = mid
|
|
||||||
, key = model.key
|
|
||||||
, selectedItems = model.selectedItems
|
|
||||||
, flags = model.flags
|
|
||||||
, settings = model.uiSettings
|
|
||||||
}
|
|
||||||
|
|
||||||
result =
|
result =
|
||||||
Page.Search.Update.update texts.search env lmsg model.searchModel
|
Page.Search.Update.update texts.search bookmarkId lastViewItemId env lmsg model.searchModel
|
||||||
|
|
||||||
model_ =
|
|
||||||
{ model | searchModel = result.model, selectedItems = result.selectedItems }
|
|
||||||
|
|
||||||
lc =
|
lc =
|
||||||
case result.appEvent of
|
case result.appEvent of
|
||||||
@ -606,15 +619,13 @@ updateSearch texts lmsg model =
|
|||||||
|
|
||||||
AppNothing ->
|
AppNothing ->
|
||||||
Cmd.none
|
Cmd.none
|
||||||
|
|
||||||
|
( model_, cmd_, sub_ ) =
|
||||||
|
applySelectionChange texts { model | searchModel = result.model } result.selectedItems
|
||||||
in
|
in
|
||||||
( model_
|
( model_
|
||||||
, Cmd.batch
|
, Cmd.batch [ Cmd.map SearchMsg result.cmd, lc, cmd_ ]
|
||||||
[ Cmd.map SearchMsg result.cmd
|
, Sub.batch [ Sub.map SearchMsg result.sub, sub_ ]
|
||||||
, lc
|
|
||||||
]
|
|
||||||
, Sub.batch
|
|
||||||
[ Sub.map SearchMsg result.sub
|
|
||||||
]
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ module App.View2 exposing (view)
|
|||||||
import Api.Model.AuthResult exposing (AuthResult)
|
import Api.Model.AuthResult exposing (AuthResult)
|
||||||
import App.Data exposing (..)
|
import App.Data exposing (..)
|
||||||
import Comp.Basic as B
|
import Comp.Basic as B
|
||||||
|
import Data.Environment as Env
|
||||||
import Data.Flags
|
import Data.Flags
|
||||||
import Data.Icons as Icons
|
import Data.Icons as Icons
|
||||||
import Data.UiSettings
|
import Data.UiSettings
|
||||||
@ -485,6 +486,15 @@ dropdownMenu =
|
|||||||
" absolute right-0 bg-white dark:bg-slate-800 border dark:border-slate-700 dark:text-slate-300 shadow-lg opacity-1 transition duration-200 min-w-max "
|
" absolute right-0 bg-white dark:bg-slate-800 border dark:border-slate-700 dark:text-slate-300 shadow-lg opacity-1 transition duration-200 min-w-max "
|
||||||
|
|
||||||
|
|
||||||
|
modelEnv : Model -> Env.View
|
||||||
|
modelEnv model =
|
||||||
|
{ sidebarVisible = model.sidebarVisible
|
||||||
|
, flags = model.flags
|
||||||
|
, settings = model.uiSettings
|
||||||
|
, selectedItems = model.selectedItems
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
viewDashboard : Messages -> Model -> List (Html Msg)
|
viewDashboard : Messages -> Model -> List (Html Msg)
|
||||||
viewDashboard texts model =
|
viewDashboard texts model =
|
||||||
[ Html.map DashboardMsg
|
[ Html.map DashboardMsg
|
||||||
@ -551,11 +561,7 @@ viewSearch : Messages -> Maybe String -> Model -> List (Html Msg)
|
|||||||
viewSearch texts bmId model =
|
viewSearch texts bmId model =
|
||||||
let
|
let
|
||||||
env =
|
env =
|
||||||
{ sidebarVisible = model.sidebarVisible
|
modelEnv model
|
||||||
, flags = model.flags
|
|
||||||
, settings = model.uiSettings
|
|
||||||
, selectedItems = model.selectedItems
|
|
||||||
}
|
|
||||||
in
|
in
|
||||||
[ Html.map SearchMsg
|
[ Html.map SearchMsg
|
||||||
(Search.viewSidebar texts.search
|
(Search.viewSidebar texts.search
|
||||||
@ -690,19 +696,19 @@ viewItemDetail texts id model =
|
|||||||
let
|
let
|
||||||
inav =
|
inav =
|
||||||
Page.Search.Data.itemNav id model.searchModel
|
Page.Search.Data.itemNav id model.searchModel
|
||||||
|
|
||||||
|
env =
|
||||||
|
modelEnv model
|
||||||
in
|
in
|
||||||
[ Html.map ItemDetailMsg
|
[ Html.map ItemDetailMsg
|
||||||
(ItemDetail.viewSidebar texts.itemDetail
|
(ItemDetail.viewSidebar texts.itemDetail
|
||||||
model.sidebarVisible
|
env
|
||||||
model.flags
|
|
||||||
model.uiSettings
|
|
||||||
model.itemDetailModel
|
model.itemDetailModel
|
||||||
)
|
)
|
||||||
, Html.map ItemDetailMsg
|
, Html.map ItemDetailMsg
|
||||||
(ItemDetail.viewContent texts.itemDetail
|
(ItemDetail.viewContent texts.itemDetail
|
||||||
inav
|
inav
|
||||||
model.flags
|
env
|
||||||
model.uiSettings
|
|
||||||
model.itemDetailModel
|
model.itemDetailModel
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
@ -12,10 +12,10 @@ module Comp.ItemDetail exposing
|
|||||||
, view2
|
, view2
|
||||||
)
|
)
|
||||||
|
|
||||||
import Browser.Navigation as Nav
|
|
||||||
import Comp.ItemDetail.Model exposing (Msg(..), UpdateResult)
|
import Comp.ItemDetail.Model exposing (Msg(..), UpdateResult)
|
||||||
import Comp.ItemDetail.Update
|
import Comp.ItemDetail.Update
|
||||||
import Comp.ItemDetail.View2
|
import Comp.ItemDetail.View2
|
||||||
|
import Data.Environment as Env
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Data.ItemNav exposing (ItemNav)
|
import Data.ItemNav exposing (ItemNav)
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
@ -33,11 +33,11 @@ emptyModel =
|
|||||||
Comp.ItemDetail.Model.emptyModel
|
Comp.ItemDetail.Model.emptyModel
|
||||||
|
|
||||||
|
|
||||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
|
update : ItemNav -> Env.Update -> Msg -> Model -> UpdateResult
|
||||||
update =
|
update =
|
||||||
Comp.ItemDetail.Update.update
|
Comp.ItemDetail.Update.update
|
||||||
|
|
||||||
|
|
||||||
view2 : Texts -> Flags -> ItemNav -> UiSettings -> Model -> Html Msg
|
view2 : Texts -> ItemNav -> Env.View -> Model -> Html Msg
|
||||||
view2 =
|
view2 =
|
||||||
Comp.ItemDetail.View2.view
|
Comp.ItemDetail.View2.view
|
||||||
|
@ -57,6 +57,7 @@ import Comp.SimpleTextInput
|
|||||||
import Comp.TagDropdown
|
import Comp.TagDropdown
|
||||||
import Data.Direction exposing (Direction)
|
import Data.Direction exposing (Direction)
|
||||||
import Data.Fields exposing (Field)
|
import Data.Fields exposing (Field)
|
||||||
|
import Data.ItemIds exposing (ItemIdChange)
|
||||||
import DatePicker exposing (DatePicker)
|
import DatePicker exposing (DatePicker)
|
||||||
import Dict exposing (Dict)
|
import Dict exposing (Dict)
|
||||||
import File exposing (File)
|
import File exposing (File)
|
||||||
@ -367,6 +368,7 @@ type Msg
|
|||||||
| ToggleShowQrAttach String
|
| ToggleShowQrAttach String
|
||||||
| PrintElement String
|
| PrintElement String
|
||||||
| SetNameMsg Comp.SimpleTextInput.Msg
|
| SetNameMsg Comp.SimpleTextInput.Msg
|
||||||
|
| ToggleSelectItem
|
||||||
|
|
||||||
|
|
||||||
type SaveNameState
|
type SaveNameState
|
||||||
@ -381,22 +383,23 @@ type alias UpdateResult =
|
|||||||
, sub : Sub Msg
|
, sub : Sub Msg
|
||||||
, linkTarget : LinkTarget
|
, linkTarget : LinkTarget
|
||||||
, removedItem : Maybe String
|
, removedItem : Maybe String
|
||||||
|
, selectionChange : ItemIdChange
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
resultModel : Model -> UpdateResult
|
resultModel : Model -> UpdateResult
|
||||||
resultModel model =
|
resultModel model =
|
||||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing
|
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing Data.ItemIds.noChange
|
||||||
|
|
||||||
|
|
||||||
resultModelCmd : ( Model, Cmd Msg ) -> UpdateResult
|
resultModelCmd : ( Model, Cmd Msg ) -> UpdateResult
|
||||||
resultModelCmd ( model, cmd ) =
|
resultModelCmd ( model, cmd ) =
|
||||||
UpdateResult model cmd Sub.none Comp.LinkTarget.LinkNone Nothing
|
UpdateResult model cmd Sub.none Comp.LinkTarget.LinkNone Nothing Data.ItemIds.noChange
|
||||||
|
|
||||||
|
|
||||||
resultModelCmdSub : ( Model, Cmd Msg, Sub Msg ) -> UpdateResult
|
resultModelCmdSub : ( Model, Cmd Msg, Sub Msg ) -> UpdateResult
|
||||||
resultModelCmdSub ( model, cmd, sub ) =
|
resultModelCmdSub ( model, cmd, sub ) =
|
||||||
UpdateResult model cmd sub Comp.LinkTarget.LinkNone Nothing
|
UpdateResult model cmd sub Comp.LinkTarget.LinkNone Nothing Data.ItemIds.noChange
|
||||||
|
|
||||||
|
|
||||||
personMatchesOrg : Model -> Bool
|
personMatchesOrg : Model -> Bool
|
||||||
|
@ -20,7 +20,6 @@ import Api.Model.OptionalDate exposing (OptionalDate)
|
|||||||
import Api.Model.OptionalId exposing (OptionalId)
|
import Api.Model.OptionalId exposing (OptionalId)
|
||||||
import Api.Model.OptionalText exposing (OptionalText)
|
import Api.Model.OptionalText exposing (OptionalText)
|
||||||
import Api.Model.StringList exposing (StringList)
|
import Api.Model.StringList exposing (StringList)
|
||||||
import Browser.Navigation as Nav
|
|
||||||
import Comp.AttachmentMeta
|
import Comp.AttachmentMeta
|
||||||
import Comp.CustomFieldMultiInput
|
import Comp.CustomFieldMultiInput
|
||||||
import Comp.DatePicker
|
import Comp.DatePicker
|
||||||
@ -58,10 +57,12 @@ import Comp.SimpleTextInput
|
|||||||
import Comp.TagDropdown
|
import Comp.TagDropdown
|
||||||
import Data.CustomFieldChange exposing (CustomFieldChange(..))
|
import Data.CustomFieldChange exposing (CustomFieldChange(..))
|
||||||
import Data.Direction
|
import Data.Direction
|
||||||
|
import Data.Environment as Env
|
||||||
import Data.EquipmentOrder
|
import Data.EquipmentOrder
|
||||||
import Data.Fields exposing (Field)
|
import Data.Fields exposing (Field)
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Data.FolderOrder
|
import Data.FolderOrder
|
||||||
|
import Data.ItemIds
|
||||||
import Data.ItemNav exposing (ItemNav)
|
import Data.ItemNav exposing (ItemNav)
|
||||||
import Data.PersonOrder
|
import Data.PersonOrder
|
||||||
import Data.PersonUse
|
import Data.PersonUse
|
||||||
@ -74,7 +75,6 @@ import Http
|
|||||||
import Page exposing (Page(..))
|
import Page exposing (Page(..))
|
||||||
import Ports
|
import Ports
|
||||||
import Set exposing (Set)
|
import Set exposing (Set)
|
||||||
import Time
|
|
||||||
import Util.File exposing (makeFileId)
|
import Util.File exposing (makeFileId)
|
||||||
import Util.List
|
import Util.List
|
||||||
import Util.Maybe
|
import Util.Maybe
|
||||||
@ -82,8 +82,8 @@ import Util.String
|
|||||||
import Util.Tag
|
import Util.Tag
|
||||||
|
|
||||||
|
|
||||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
|
update : ItemNav -> Env.Update -> Msg -> Model -> UpdateResult
|
||||||
update key flags inav settings msg model =
|
update inav env msg model =
|
||||||
case msg of
|
case msg of
|
||||||
Init ->
|
Init ->
|
||||||
let
|
let
|
||||||
@ -91,10 +91,10 @@ update key flags inav settings msg model =
|
|||||||
Comp.DatePicker.init
|
Comp.DatePicker.init
|
||||||
|
|
||||||
( im, ic ) =
|
( im, ic ) =
|
||||||
Comp.ItemMail.init flags
|
Comp.ItemMail.init env.flags
|
||||||
|
|
||||||
( cm, cc ) =
|
( cm, cc ) =
|
||||||
Comp.CustomFieldMultiInput.init flags
|
Comp.CustomFieldMultiInput.init env.flags
|
||||||
in
|
in
|
||||||
resultModelCmd
|
resultModelCmd
|
||||||
( { model
|
( { model
|
||||||
@ -106,30 +106,26 @@ update key flags inav settings msg model =
|
|||||||
, customFieldsModel = cm
|
, customFieldsModel = cm
|
||||||
}
|
}
|
||||||
, Cmd.batch
|
, Cmd.batch
|
||||||
[ getOptions flags
|
[ getOptions env.flags
|
||||||
, Cmd.map ItemDatePickerMsg dpc
|
, Cmd.map ItemDatePickerMsg dpc
|
||||||
, Cmd.map DueDatePickerMsg dpc
|
, Cmd.map DueDatePickerMsg dpc
|
||||||
, Cmd.map ItemMailMsg ic
|
, Cmd.map ItemMailMsg ic
|
||||||
, Cmd.map CustomFieldMsg cc
|
, Cmd.map CustomFieldMsg cc
|
||||||
, Api.getSentMails flags model.item.id SentMailsResp
|
, Api.getSentMails env.flags model.item.id SentMailsResp
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
SetItem item ->
|
SetItem item ->
|
||||||
let
|
let
|
||||||
res1 =
|
res1 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(TagDropdownMsg (Comp.TagDropdown.setSelected item.tags))
|
(TagDropdownMsg (Comp.TagDropdown.setSelected item.tags))
|
||||||
model
|
model
|
||||||
|
|
||||||
res2 =
|
res2 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(DirDropdownMsg
|
(DirDropdownMsg
|
||||||
(Comp.Dropdown.SetSelection
|
(Comp.Dropdown.SetSelection
|
||||||
(Data.Direction.fromString item.direction
|
(Data.Direction.fromString item.direction
|
||||||
@ -141,10 +137,8 @@ update key flags inav settings msg model =
|
|||||||
res1.model
|
res1.model
|
||||||
|
|
||||||
res3 =
|
res3 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(OrgDropdownMsg
|
(OrgDropdownMsg
|
||||||
(Comp.Dropdown.SetSelection
|
(Comp.Dropdown.SetSelection
|
||||||
(item.corrOrg
|
(item.corrOrg
|
||||||
@ -156,10 +150,8 @@ update key flags inav settings msg model =
|
|||||||
res2.model
|
res2.model
|
||||||
|
|
||||||
res4 =
|
res4 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(CorrPersonMsg
|
(CorrPersonMsg
|
||||||
(Comp.Dropdown.SetSelection
|
(Comp.Dropdown.SetSelection
|
||||||
(item.corrPerson
|
(item.corrPerson
|
||||||
@ -171,10 +163,8 @@ update key flags inav settings msg model =
|
|||||||
res3.model
|
res3.model
|
||||||
|
|
||||||
res5 =
|
res5 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(ConcPersonMsg
|
(ConcPersonMsg
|
||||||
(Comp.Dropdown.SetSelection
|
(Comp.Dropdown.SetSelection
|
||||||
(item.concPerson
|
(item.concPerson
|
||||||
@ -186,10 +176,8 @@ update key flags inav settings msg model =
|
|||||||
res4.model
|
res4.model
|
||||||
|
|
||||||
res6 =
|
res6 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(ConcEquipMsg
|
(ConcEquipMsg
|
||||||
(Comp.Dropdown.SetSelection
|
(Comp.Dropdown.SetSelection
|
||||||
(item.concEquipment
|
(item.concEquipment
|
||||||
@ -201,13 +189,11 @@ update key flags inav settings msg model =
|
|||||||
res5.model
|
res5.model
|
||||||
|
|
||||||
res7 =
|
res7 =
|
||||||
update key flags inav settings AddFilesReset res6.model
|
update inav env AddFilesReset res6.model
|
||||||
|
|
||||||
res8 =
|
res8 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(FolderDropdownMsg
|
(FolderDropdownMsg
|
||||||
(Comp.Dropdown.SetSelection
|
(Comp.Dropdown.SetSelection
|
||||||
(item.folder
|
(item.folder
|
||||||
@ -219,16 +205,14 @@ update key flags inav settings msg model =
|
|||||||
res7.model
|
res7.model
|
||||||
|
|
||||||
res9 =
|
res9 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(CustomFieldMsg (Comp.CustomFieldMultiInput.setValues item.customfields))
|
(CustomFieldMsg (Comp.CustomFieldMultiInput.setValues item.customfields))
|
||||||
res8.model
|
res8.model
|
||||||
|
|
||||||
proposalCmd =
|
proposalCmd =
|
||||||
if item.state == "created" then
|
if item.state == "created" then
|
||||||
Api.getItemProposals flags item.id GetProposalResp
|
Api.getItemProposals env.flags item.id GetProposalResp
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -265,11 +249,11 @@ update key flags inav settings msg model =
|
|||||||
, res7.cmd
|
, res7.cmd
|
||||||
, res8.cmd
|
, res8.cmd
|
||||||
, res9.cmd
|
, res9.cmd
|
||||||
, getOptions flags
|
, getOptions env.flags
|
||||||
, proposalCmd
|
, proposalCmd
|
||||||
, Api.getSentMails flags item.id SentMailsResp
|
, Api.getSentMails env.flags item.id SentMailsResp
|
||||||
, Api.getPersons flags "" Data.PersonOrder.NameAsc GetPersonResp
|
, Api.getPersons env.flags "" Data.PersonOrder.NameAsc GetPersonResp
|
||||||
, Cmd.map CustomFieldMsg (Comp.CustomFieldMultiInput.initCmd flags)
|
, Cmd.map CustomFieldMsg (Comp.CustomFieldMultiInput.initCmd env.flags)
|
||||||
]
|
]
|
||||||
, sub =
|
, sub =
|
||||||
Sub.batch
|
Sub.batch
|
||||||
@ -285,6 +269,7 @@ update key flags inav settings msg model =
|
|||||||
]
|
]
|
||||||
, linkTarget = Comp.LinkTarget.LinkNone
|
, linkTarget = Comp.LinkTarget.LinkNone
|
||||||
, removedItem = Nothing
|
, removedItem = Nothing
|
||||||
|
, selectionChange = Data.ItemIds.noChange
|
||||||
}
|
}
|
||||||
|
|
||||||
SetActiveAttachment pos ->
|
SetActiveAttachment pos ->
|
||||||
@ -322,7 +307,7 @@ update key flags inav settings msg model =
|
|||||||
resultModel model
|
resultModel model
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd ( model, Api.itemDetail flags model.item.id GetItemResp )
|
resultModelCmd ( model, Api.itemDetail env.flags model.item.id GetItemResp )
|
||||||
|
|
||||||
FolderDropdownMsg m ->
|
FolderDropdownMsg m ->
|
||||||
let
|
let
|
||||||
@ -337,7 +322,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if isDropdownChangeMsg m then
|
if isDropdownChangeMsg m then
|
||||||
setFolder flags newModel idref
|
setFolder env.flags newModel idref
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -354,7 +339,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if Comp.TagDropdown.isChangeMsg m then
|
if Comp.TagDropdown.isChangeMsg m then
|
||||||
saveTags flags newModel
|
saveTags env.flags newModel
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -371,7 +356,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if isDropdownChangeMsg m then
|
if isDropdownChangeMsg m then
|
||||||
setDirection flags newModel
|
setDirection env.flags newModel
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -393,7 +378,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if isDropdownChangeMsg m then
|
if isDropdownChangeMsg m then
|
||||||
setCorrOrg flags newModel idref
|
setCorrOrg env.flags newModel idref
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -413,7 +398,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if isDropdownChangeMsg m then
|
if isDropdownChangeMsg m then
|
||||||
setCorrPerson flags newModel idref
|
setCorrPerson env.flags newModel idref
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -433,7 +418,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if isDropdownChangeMsg m then
|
if isDropdownChangeMsg m then
|
||||||
setConcPerson flags newModel idref
|
setConcPerson env.flags newModel idref
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -453,7 +438,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
save =
|
save =
|
||||||
if isDropdownChangeMsg m then
|
if isDropdownChangeMsg m then
|
||||||
setConcEquip flags newModel idref
|
setConcEquip env.flags newModel idref
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -468,7 +453,7 @@ update key flags inav settings msg model =
|
|||||||
( setter, value, save ) =
|
( setter, value, save ) =
|
||||||
case result.change of
|
case result.change of
|
||||||
Comp.SimpleTextInput.ValueUpdated v ->
|
Comp.SimpleTextInput.ValueUpdated v ->
|
||||||
( setName flags { model | nameModel = Maybe.withDefault "" v }, v, Saving )
|
( setName env.flags { model | nameModel = Maybe.withDefault "" v }, v, Saving )
|
||||||
|
|
||||||
Comp.SimpleTextInput.ValueUnchanged ->
|
Comp.SimpleTextInput.ValueUnchanged ->
|
||||||
( Cmd.none, Nothing, model.nameState )
|
( Cmd.none, Nothing, model.nameState )
|
||||||
@ -478,6 +463,7 @@ update key flags inav settings msg model =
|
|||||||
, sub = Sub.map SetNameMsg result.sub
|
, sub = Sub.map SetNameMsg result.sub
|
||||||
, linkTarget = Comp.LinkTarget.LinkNone
|
, linkTarget = Comp.LinkTarget.LinkNone
|
||||||
, removedItem = Nothing
|
, removedItem = Nothing
|
||||||
|
, selectionChange = Data.ItemIds.noChange
|
||||||
}
|
}
|
||||||
|
|
||||||
SetNotes str ->
|
SetNotes str ->
|
||||||
@ -509,22 +495,22 @@ update key flags inav settings msg model =
|
|||||||
resultModel model
|
resultModel model
|
||||||
|
|
||||||
SaveNotes ->
|
SaveNotes ->
|
||||||
resultModelCmd ( model, setNotes flags model )
|
resultModelCmd ( model, setNotes env.flags model )
|
||||||
|
|
||||||
ConfirmItem ->
|
ConfirmItem ->
|
||||||
let
|
let
|
||||||
resetCmds =
|
resetCmds =
|
||||||
resetHiddenFields settings flags model.item.id ResetHiddenMsg
|
resetHiddenFields env.settings env.flags model.item.id ResetHiddenMsg
|
||||||
in
|
in
|
||||||
resultModelCmd
|
resultModelCmd
|
||||||
( { model | mobileItemMenuOpen = False }
|
( { model | mobileItemMenuOpen = False }
|
||||||
, Cmd.batch (Api.setConfirmed flags model.item.id SaveResp :: resetCmds)
|
, Cmd.batch (Api.setConfirmed env.flags model.item.id SaveResp :: resetCmds)
|
||||||
)
|
)
|
||||||
|
|
||||||
UnconfirmItem ->
|
UnconfirmItem ->
|
||||||
resultModelCmd
|
resultModelCmd
|
||||||
( { model | mobileItemMenuOpen = False }
|
( { model | mobileItemMenuOpen = False }
|
||||||
, Api.setUnconfirmed flags model.item.id SaveResp
|
, Api.setUnconfirmed env.flags model.item.id SaveResp
|
||||||
)
|
)
|
||||||
|
|
||||||
ItemDatePickerMsg m ->
|
ItemDatePickerMsg m ->
|
||||||
@ -538,13 +524,13 @@ update key flags inav settings msg model =
|
|||||||
newModel =
|
newModel =
|
||||||
{ model | itemDatePicker = dp, itemDate = Just (Comp.DatePicker.midOfDay date) }
|
{ model | itemDatePicker = dp, itemDate = Just (Comp.DatePicker.midOfDay date) }
|
||||||
in
|
in
|
||||||
resultModelCmd ( newModel, setDate flags newModel newModel.itemDate )
|
resultModelCmd ( newModel, setDate env.flags newModel newModel.itemDate )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModel { model | itemDatePicker = dp }
|
resultModel { model | itemDatePicker = dp }
|
||||||
|
|
||||||
RemoveDate ->
|
RemoveDate ->
|
||||||
resultModelCmd ( { model | itemDate = Nothing }, setDate flags model Nothing )
|
resultModelCmd ( { model | itemDate = Nothing }, setDate env.flags model Nothing )
|
||||||
|
|
||||||
DueDatePickerMsg m ->
|
DueDatePickerMsg m ->
|
||||||
let
|
let
|
||||||
@ -557,18 +543,18 @@ update key flags inav settings msg model =
|
|||||||
newModel =
|
newModel =
|
||||||
{ model | dueDatePicker = dp, dueDate = Just (Comp.DatePicker.midOfDay date) }
|
{ model | dueDatePicker = dp, dueDate = Just (Comp.DatePicker.midOfDay date) }
|
||||||
in
|
in
|
||||||
resultModelCmd ( newModel, setDueDate flags newModel newModel.dueDate )
|
resultModelCmd ( newModel, setDueDate env.flags newModel newModel.dueDate )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModel { model | dueDatePicker = dp }
|
resultModel { model | dueDatePicker = dp }
|
||||||
|
|
||||||
RemoveDueDate ->
|
RemoveDueDate ->
|
||||||
resultModelCmd ( { model | dueDate = Nothing }, setDueDate flags model Nothing )
|
resultModelCmd ( { model | dueDate = Nothing }, setDueDate env.flags model Nothing )
|
||||||
|
|
||||||
DeleteItemConfirmed ->
|
DeleteItemConfirmed ->
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Api.deleteItem flags model.item.id (DeleteResp model.item.id)
|
Api.deleteItem env.flags model.item.id (DeleteResp model.item.id)
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | itemModal = Nothing }, cmd )
|
resultModelCmd ( { model | itemModal = Nothing }, cmd )
|
||||||
|
|
||||||
@ -583,22 +569,22 @@ update key flags inav settings msg model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
SetCorrOrgSuggestion idname ->
|
SetCorrOrgSuggestion idname ->
|
||||||
resultModelCmd ( model, setCorrOrg flags model (Just idname) )
|
resultModelCmd ( model, setCorrOrg env.flags model (Just idname) )
|
||||||
|
|
||||||
SetCorrPersonSuggestion idname ->
|
SetCorrPersonSuggestion idname ->
|
||||||
resultModelCmd ( model, setCorrPerson flags model (Just idname) )
|
resultModelCmd ( model, setCorrPerson env.flags model (Just idname) )
|
||||||
|
|
||||||
SetConcPersonSuggestion idname ->
|
SetConcPersonSuggestion idname ->
|
||||||
resultModelCmd ( model, setConcPerson flags model (Just idname) )
|
resultModelCmd ( model, setConcPerson env.flags model (Just idname) )
|
||||||
|
|
||||||
SetConcEquipSuggestion idname ->
|
SetConcEquipSuggestion idname ->
|
||||||
resultModelCmd ( model, setConcEquip flags model (Just idname) )
|
resultModelCmd ( model, setConcEquip env.flags model (Just idname) )
|
||||||
|
|
||||||
SetItemDateSuggestion date ->
|
SetItemDateSuggestion date ->
|
||||||
resultModelCmd ( model, setDate flags model (Just date) )
|
resultModelCmd ( model, setDate env.flags model (Just date) )
|
||||||
|
|
||||||
SetDueDateSuggestion date ->
|
SetDueDateSuggestion date ->
|
||||||
resultModelCmd ( model, setDueDate flags model (Just date) )
|
resultModelCmd ( model, setDueDate env.flags model (Just date) )
|
||||||
|
|
||||||
GetFolderResp (Ok fs) ->
|
GetFolderResp (Ok fs) ->
|
||||||
let
|
let
|
||||||
@ -613,7 +599,7 @@ update key flags inav settings msg model =
|
|||||||
|> List.map mkIdName
|
|> List.map mkIdName
|
||||||
|> Comp.Dropdown.SetOptions
|
|> Comp.Dropdown.SetOptions
|
||||||
in
|
in
|
||||||
update key flags inav settings (FolderDropdownMsg opts) model_
|
update inav env (FolderDropdownMsg opts) model_
|
||||||
|
|
||||||
GetFolderResp (Err _) ->
|
GetFolderResp (Err _) ->
|
||||||
resultModel model
|
resultModel model
|
||||||
@ -636,7 +622,7 @@ update key flags inav settings msg model =
|
|||||||
opts =
|
opts =
|
||||||
Comp.Dropdown.SetOptions orgs.items
|
Comp.Dropdown.SetOptions orgs.items
|
||||||
in
|
in
|
||||||
update key flags inav settings (OrgDropdownMsg opts) model
|
update inav env (OrgDropdownMsg opts) model
|
||||||
|
|
||||||
GetOrgResp (Err _) ->
|
GetOrgResp (Err _) ->
|
||||||
resultModel model
|
resultModel model
|
||||||
@ -673,18 +659,14 @@ update key flags inav settings msg model =
|
|||||||
{ model | allPersons = personDict }
|
{ model | allPersons = personDict }
|
||||||
|
|
||||||
res1 =
|
res1 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(CorrPersonMsg (Comp.Dropdown.SetOptions corrRefs))
|
(CorrPersonMsg (Comp.Dropdown.SetOptions corrRefs))
|
||||||
model_
|
model_
|
||||||
|
|
||||||
res2 =
|
res2 =
|
||||||
update key
|
update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
(ConcPersonMsg (Comp.Dropdown.SetOptions concRefs))
|
(ConcPersonMsg (Comp.Dropdown.SetOptions concRefs))
|
||||||
res1.model
|
res1.model
|
||||||
in
|
in
|
||||||
@ -693,6 +675,7 @@ update key flags inav settings msg model =
|
|||||||
, sub = Sub.batch [ res1.sub, res2.sub ]
|
, sub = Sub.batch [ res1.sub, res2.sub ]
|
||||||
, linkTarget = Comp.LinkTarget.LinkNone
|
, linkTarget = Comp.LinkTarget.LinkNone
|
||||||
, removedItem = Nothing
|
, removedItem = Nothing
|
||||||
|
, selectionChange = Data.ItemIds.noChange
|
||||||
}
|
}
|
||||||
|
|
||||||
GetPersonResp (Err _) ->
|
GetPersonResp (Err _) ->
|
||||||
@ -706,14 +689,14 @@ update key flags inav settings msg model =
|
|||||||
equips.items
|
equips.items
|
||||||
)
|
)
|
||||||
in
|
in
|
||||||
update key flags inav settings (ConcEquipMsg opts) model
|
update inav env (ConcEquipMsg opts) model
|
||||||
|
|
||||||
GetEquipResp (Err _) ->
|
GetEquipResp (Err _) ->
|
||||||
resultModel model
|
resultModel model
|
||||||
|
|
||||||
SaveResp (Ok res) ->
|
SaveResp (Ok res) ->
|
||||||
if res.success then
|
if res.success then
|
||||||
resultModelCmd ( model, Api.itemDetail flags model.item.id GetItemResp )
|
resultModelCmd ( model, Api.itemDetail env.flags model.item.id GetItemResp )
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModel model
|
resultModel model
|
||||||
@ -742,10 +725,10 @@ update key flags inav settings msg model =
|
|||||||
result_ =
|
result_ =
|
||||||
case inav.next of
|
case inav.next of
|
||||||
Just id ->
|
Just id ->
|
||||||
resultModelCmd ( model, Page.set key (ItemDetailPage id) )
|
resultModelCmd ( model, Page.set env.key (ItemDetailPage id) )
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModelCmd ( model, Page.set key (SearchPage Nothing) )
|
resultModelCmd ( model, Page.set env.key (SearchPage Nothing) )
|
||||||
in
|
in
|
||||||
{ result_ | removedItem = Just removedId }
|
{ result_ | removedItem = Just removedId }
|
||||||
|
|
||||||
@ -756,7 +739,7 @@ update key flags inav settings msg model =
|
|||||||
resultModel model
|
resultModel model
|
||||||
|
|
||||||
GetItemResp (Ok item) ->
|
GetItemResp (Ok item) ->
|
||||||
update key flags inav settings (SetItem item) model
|
update inav env (SetItem item) model
|
||||||
|
|
||||||
GetItemResp (Err _) ->
|
GetItemResp (Err _) ->
|
||||||
resultModel model
|
resultModel model
|
||||||
@ -770,7 +753,7 @@ update key flags inav settings msg model =
|
|||||||
ItemMailMsg m ->
|
ItemMailMsg m ->
|
||||||
let
|
let
|
||||||
( im, ic, fa ) =
|
( im, ic, fa ) =
|
||||||
Comp.ItemMail.update flags m model.itemMail
|
Comp.ItemMail.update env.flags m model.itemMail
|
||||||
in
|
in
|
||||||
case fa of
|
case fa of
|
||||||
Comp.ItemMail.FormNone ->
|
Comp.ItemMail.FormNone ->
|
||||||
@ -798,7 +781,7 @@ update key flags inav settings msg model =
|
|||||||
( { model | mailSending = True }
|
( { model | mailSending = True }
|
||||||
, Cmd.batch
|
, Cmd.batch
|
||||||
[ Cmd.map ItemMailMsg ic
|
[ Cmd.map ItemMailMsg ic
|
||||||
, Api.sendMail flags mail SendMailResp
|
, Api.sendMail env.flags mail SendMailResp
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -850,7 +833,7 @@ update key flags inav settings msg model =
|
|||||||
MailSendFailed br.message
|
MailSendFailed br.message
|
||||||
}
|
}
|
||||||
, if br.success then
|
, if br.success then
|
||||||
Api.itemDetail flags model.item.id GetItemResp
|
Api.itemDetail env.flags model.item.id GetItemResp
|
||||||
|
|
||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
@ -895,7 +878,7 @@ update key flags inav settings msg model =
|
|||||||
Nothing ->
|
Nothing ->
|
||||||
let
|
let
|
||||||
( am, ac ) =
|
( am, ac ) =
|
||||||
Comp.AttachmentMeta.init flags id
|
Comp.AttachmentMeta.init env.flags id
|
||||||
|
|
||||||
nextMeta =
|
nextMeta =
|
||||||
Dict.insert id am model.attachMeta
|
Dict.insert id am model.attachMeta
|
||||||
@ -925,7 +908,7 @@ update key flags inav settings msg model =
|
|||||||
DeleteAttachConfirmed attachId ->
|
DeleteAttachConfirmed attachId ->
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Api.deleteAttachment flags attachId DeleteAttachResp
|
Api.deleteAttachment env.flags attachId DeleteAttachResp
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | attachModal = Nothing }, cmd )
|
resultModelCmd ( { model | attachModal = Nothing }, cmd )
|
||||||
|
|
||||||
@ -934,7 +917,7 @@ update key flags inav settings msg model =
|
|||||||
|
|
||||||
DeleteAttachResp (Ok res) ->
|
DeleteAttachResp (Ok res) ->
|
||||||
if res.success then
|
if res.success then
|
||||||
update key flags inav settings ReloadItem model
|
update inav env ReloadItem model
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModel model
|
resultModel model
|
||||||
@ -980,7 +963,7 @@ update key flags inav settings msg model =
|
|||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Api.deleteAttachments flags svm.ids DeleteAttachResp
|
Api.deleteAttachments env.flags svm.ids DeleteAttachResp
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | attachModal = Nothing, viewMode = SimpleView }, cmd )
|
resultModelCmd ( { model | attachModal = Nothing, viewMode = SimpleView }, cmd )
|
||||||
|
|
||||||
@ -1029,7 +1012,7 @@ update key flags inav settings msg model =
|
|||||||
List.map makeFileId model.selectedFiles
|
List.map makeFileId model.selectedFiles
|
||||||
|
|
||||||
uploads =
|
uploads =
|
||||||
Cmd.batch (Api.uploadAmend flags model.item.id model.selectedFiles AddFilesUploadResp)
|
Cmd.batch (Api.uploadAmend env.flags model.item.id model.selectedFiles AddFilesUploadResp)
|
||||||
|
|
||||||
tracker =
|
tracker =
|
||||||
Sub.batch <| List.map (\id -> Http.track id (AddFilesProgress id)) fileids
|
Sub.batch <| List.map (\id -> Http.track id (AddFilesProgress id)) fileids
|
||||||
@ -1112,7 +1095,7 @@ update key flags inav settings msg model =
|
|||||||
case result of
|
case result of
|
||||||
Just ( src, trg, _ ) ->
|
Just ( src, trg, _ ) ->
|
||||||
if src /= trg then
|
if src /= trg then
|
||||||
Api.moveAttachmentBefore flags
|
Api.moveAttachmentBefore env.flags
|
||||||
model.item.id
|
model.item.id
|
||||||
(MoveAttachment src trg)
|
(MoveAttachment src trg)
|
||||||
SaveResp
|
SaveResp
|
||||||
@ -1130,7 +1113,7 @@ update key flags inav settings msg model =
|
|||||||
Just mm ->
|
Just mm ->
|
||||||
let
|
let
|
||||||
( mm_, mc_, mv ) =
|
( mm_, mc_, mv ) =
|
||||||
Comp.DetailEdit.update flags lm mm
|
Comp.DetailEdit.update env.flags lm mm
|
||||||
|
|
||||||
( model_, cmd_ ) =
|
( model_, cmd_ ) =
|
||||||
case mv of
|
case mv of
|
||||||
@ -1138,7 +1121,7 @@ update key flags inav settings msg model =
|
|||||||
( { model | modalEdit = Nothing }, Cmd.none )
|
( { model | modalEdit = Nothing }, Cmd.none )
|
||||||
|
|
||||||
Just _ ->
|
Just _ ->
|
||||||
( model, Api.itemDetail flags model.item.id GetItemResp )
|
( model, Api.itemDetail env.flags model.item.id GetItemResp )
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
( { model | modalEdit = Just mm_ }, Cmd.none )
|
( { model | modalEdit = Just mm_ }, Cmd.none )
|
||||||
@ -1180,7 +1163,7 @@ update key flags inav settings msg model =
|
|||||||
Just oid ->
|
Just oid ->
|
||||||
let
|
let
|
||||||
( m, c ) =
|
( m, c ) =
|
||||||
Comp.DetailEdit.editOrg flags oid Comp.OrgForm.emptyModel
|
Comp.DetailEdit.editOrg env.flags oid Comp.OrgForm.emptyModel
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | modalEdit = Just m }, Cmd.map ModalEditMsg c )
|
resultModelCmd ( { model | modalEdit = Just m }, Cmd.map ModalEditMsg c )
|
||||||
|
|
||||||
@ -1198,7 +1181,7 @@ update key flags inav settings msg model =
|
|||||||
Just eid ->
|
Just eid ->
|
||||||
let
|
let
|
||||||
( m, c ) =
|
( m, c ) =
|
||||||
Comp.DetailEdit.editEquip flags eid Comp.EquipmentForm.emptyModel
|
Comp.DetailEdit.editEquip env.flags eid Comp.EquipmentForm.emptyModel
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | modalEdit = Just m }, Cmd.map ModalEditMsg c )
|
resultModelCmd ( { model | modalEdit = Just m }, Cmd.map ModalEditMsg c )
|
||||||
|
|
||||||
@ -1209,7 +1192,7 @@ update key flags inav settings msg model =
|
|||||||
let
|
let
|
||||||
( pm, pc ) =
|
( pm, pc ) =
|
||||||
Comp.DetailEdit.initCorrPerson
|
Comp.DetailEdit.initCorrPerson
|
||||||
flags
|
env.flags
|
||||||
model.item.id
|
model.item.id
|
||||||
Comp.PersonForm.emptyModel
|
Comp.PersonForm.emptyModel
|
||||||
in
|
in
|
||||||
@ -1222,7 +1205,7 @@ update key flags inav settings msg model =
|
|||||||
let
|
let
|
||||||
( p, c ) =
|
( p, c ) =
|
||||||
Comp.DetailEdit.initConcPerson
|
Comp.DetailEdit.initConcPerson
|
||||||
flags
|
env.flags
|
||||||
model.item.id
|
model.item.id
|
||||||
Comp.PersonForm.emptyModel
|
Comp.PersonForm.emptyModel
|
||||||
in
|
in
|
||||||
@ -1242,7 +1225,7 @@ update key flags inav settings msg model =
|
|||||||
Just pid ->
|
Just pid ->
|
||||||
let
|
let
|
||||||
( m, c ) =
|
( m, c ) =
|
||||||
Comp.DetailEdit.editPerson flags pid Comp.PersonForm.emptyModel
|
Comp.DetailEdit.editPerson env.flags pid Comp.PersonForm.emptyModel
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | modalEdit = Just m }, Cmd.map ModalEditMsg c )
|
resultModelCmd ( { model | modalEdit = Just m }, Cmd.map ModalEditMsg c )
|
||||||
|
|
||||||
@ -1318,7 +1301,7 @@ update key flags inav settings msg model =
|
|||||||
resultModelCmd
|
resultModelCmd
|
||||||
( model
|
( model
|
||||||
, Api.setAttachmentName
|
, Api.setAttachmentName
|
||||||
flags
|
env.flags
|
||||||
m.id
|
m.id
|
||||||
(Util.Maybe.fromString m.newName)
|
(Util.Maybe.fromString m.newName)
|
||||||
EditAttachNameResp
|
EditAttachNameResp
|
||||||
@ -1370,15 +1353,15 @@ update key flags inav settings msg model =
|
|||||||
in
|
in
|
||||||
if keys == Just Comp.KeyInput.ctrlC then
|
if keys == Just Comp.KeyInput.ctrlC then
|
||||||
if model.item.state == "created" then
|
if model.item.state == "created" then
|
||||||
update key flags inav settings ConfirmItem model_
|
update inav env ConfirmItem model_
|
||||||
|
|
||||||
else
|
else
|
||||||
update key flags inav settings UnconfirmItem model_
|
update inav env UnconfirmItem model_
|
||||||
|
|
||||||
else if keys == Just Comp.KeyInput.ctrlPoint then
|
else if keys == Just Comp.KeyInput.ctrlPoint then
|
||||||
case inav.next of
|
case inav.next of
|
||||||
Just id ->
|
Just id ->
|
||||||
resultModelCmd ( model_, Page.set key (ItemDetailPage id) )
|
resultModelCmd ( model_, Page.set env.key (ItemDetailPage id) )
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModel model_
|
resultModel model_
|
||||||
@ -1386,7 +1369,7 @@ update key flags inav settings msg model =
|
|||||||
else if keys == Just Comp.KeyInput.ctrlComma then
|
else if keys == Just Comp.KeyInput.ctrlComma then
|
||||||
case inav.prev of
|
case inav.prev of
|
||||||
Just id ->
|
Just id ->
|
||||||
resultModelCmd ( model_, Page.set key (ItemDetailPage id) )
|
resultModelCmd ( model_, Page.set env.key (ItemDetailPage id) )
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModel model_
|
resultModel model_
|
||||||
@ -1405,7 +1388,7 @@ update key flags inav settings msg model =
|
|||||||
let
|
let
|
||||||
model_ =
|
model_ =
|
||||||
{ model
|
{ model
|
||||||
| menuOpen = settings.sideMenuVisible
|
| menuOpen = env.settings.sideMenuVisible
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
resultModel model_
|
resultModel model_
|
||||||
@ -1416,12 +1399,13 @@ update key flags inav settings msg model =
|
|||||||
, sub = Sub.none
|
, sub = Sub.none
|
||||||
, linkTarget = lt
|
, linkTarget = lt
|
||||||
, removedItem = Nothing
|
, removedItem = Nothing
|
||||||
|
, selectionChange = Data.ItemIds.noChange
|
||||||
}
|
}
|
||||||
|
|
||||||
CustomFieldMsg lm ->
|
CustomFieldMsg lm ->
|
||||||
let
|
let
|
||||||
result =
|
result =
|
||||||
Comp.CustomFieldMultiInput.update flags lm model.customFieldsModel
|
Comp.CustomFieldMultiInput.update env.flags lm model.customFieldsModel
|
||||||
|
|
||||||
cmd_ =
|
cmd_ =
|
||||||
Cmd.map CustomFieldMsg result.cmd
|
Cmd.map CustomFieldMsg result.cmd
|
||||||
@ -1438,7 +1422,7 @@ update key flags inav settings msg model =
|
|||||||
( Cmd.none, model.customFieldSavingIcon )
|
( Cmd.none, model.customFieldSavingIcon )
|
||||||
|
|
||||||
FieldValueRemove field ->
|
FieldValueRemove field ->
|
||||||
( Api.deleteCustomValue flags
|
( Api.deleteCustomValue env.flags
|
||||||
model.item.id
|
model.item.id
|
||||||
field.id
|
field.id
|
||||||
(CustomFieldRemoveResp field.id)
|
(CustomFieldRemoveResp field.id)
|
||||||
@ -1446,7 +1430,7 @@ update key flags inav settings msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
FieldValueChange field value ->
|
FieldValueChange field value ->
|
||||||
( Api.putCustomValue flags
|
( Api.putCustomValue env.flags
|
||||||
model.item.id
|
model.item.id
|
||||||
(CustomFieldValue field.id value)
|
(CustomFieldValue field.id value)
|
||||||
(CustomFieldSaveResp field value)
|
(CustomFieldSaveResp field value)
|
||||||
@ -1497,7 +1481,7 @@ update key flags inav settings msg model =
|
|||||||
if res.success then
|
if res.success then
|
||||||
resultModelCmd
|
resultModelCmd
|
||||||
( model_
|
( model_
|
||||||
, Api.itemDetail flags model.item.id GetItemResp
|
, Api.itemDetail env.flags model.item.id GetItemResp
|
||||||
)
|
)
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -1551,7 +1535,7 @@ update key flags inav settings msg model =
|
|||||||
ReprocessFileConfirmed id ->
|
ReprocessFileConfirmed id ->
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Api.reprocessItem flags model.item.id [ id ] ReprocessFileResp
|
Api.reprocessItem env.flags model.item.id [ id ] ReprocessFileResp
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | attachModal = Nothing }, cmd )
|
resultModelCmd ( { model | attachModal = Nothing }, cmd )
|
||||||
|
|
||||||
@ -1572,7 +1556,7 @@ update key flags inav settings msg model =
|
|||||||
ReprocessItemConfirmed ->
|
ReprocessItemConfirmed ->
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Api.reprocessItem flags model.item.id [] ReprocessFileResp
|
Api.reprocessItem env.flags model.item.id [] ReprocessFileResp
|
||||||
in
|
in
|
||||||
resultModelCmd ( { model | itemModal = Nothing }, cmd )
|
resultModelCmd ( { model | itemModal = Nothing }, cmd )
|
||||||
|
|
||||||
@ -1594,9 +1578,9 @@ update key flags inav settings msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
RestoreItem ->
|
RestoreItem ->
|
||||||
resultModelCmd ( model, Api.restoreItem flags model.item.id SaveResp )
|
resultModelCmd ( model, Api.restoreItem env.flags model.item.id SaveResp )
|
||||||
|
|
||||||
ToggleShowQrItem id ->
|
ToggleShowQrItem _ ->
|
||||||
let
|
let
|
||||||
sqm =
|
sqm =
|
||||||
model.showQrModel
|
model.showQrModel
|
||||||
@ -1606,7 +1590,7 @@ update key flags inav settings msg model =
|
|||||||
in
|
in
|
||||||
resultModel { model | showQrModel = next, mobileItemMenuOpen = False }
|
resultModel { model | showQrModel = next, mobileItemMenuOpen = False }
|
||||||
|
|
||||||
ToggleShowQrAttach id ->
|
ToggleShowQrAttach _ ->
|
||||||
let
|
let
|
||||||
sqm =
|
sqm =
|
||||||
model.showQrModel
|
model.showQrModel
|
||||||
@ -1619,6 +1603,16 @@ update key flags inav settings msg model =
|
|||||||
PrintElement id ->
|
PrintElement id ->
|
||||||
resultModelCmd ( model, Ports.printElement id )
|
resultModelCmd ( model, Ports.printElement id )
|
||||||
|
|
||||||
|
ToggleSelectItem ->
|
||||||
|
let
|
||||||
|
res =
|
||||||
|
resultModel { model | mobileItemMenuOpen = False }
|
||||||
|
|
||||||
|
newSelection =
|
||||||
|
Data.ItemIds.toggle env.selectedItems model.item.id
|
||||||
|
in
|
||||||
|
{ res | selectionChange = newSelection }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Helper
|
--- Helper
|
||||||
|
@ -27,8 +27,10 @@ import Comp.ItemDetail.SingleAttachment
|
|||||||
import Comp.ItemMail
|
import Comp.ItemMail
|
||||||
import Comp.MenuBar as MB
|
import Comp.MenuBar as MB
|
||||||
import Comp.SentMails
|
import Comp.SentMails
|
||||||
|
import Data.Environment as Env
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Data.Icons as Icons
|
import Data.Icons as Icons
|
||||||
|
import Data.ItemIds
|
||||||
import Data.ItemNav exposing (ItemNav)
|
import Data.ItemNav exposing (ItemNav)
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
import Html exposing (..)
|
import Html exposing (..)
|
||||||
@ -39,13 +41,13 @@ import Page exposing (Page(..))
|
|||||||
import Styles as S
|
import Styles as S
|
||||||
|
|
||||||
|
|
||||||
view : Texts -> Flags -> ItemNav -> UiSettings -> Model -> Html Msg
|
view : Texts -> ItemNav -> Env.View -> Model -> Html Msg
|
||||||
view texts flags inav settings model =
|
view texts inav env model =
|
||||||
div [ class "flex flex-col h-full" ]
|
div [ class "flex flex-col h-full" ]
|
||||||
[ header texts settings inav model
|
[ header texts inav env model
|
||||||
|
|
||||||
-- , menuBar texts inav settings model
|
-- , menuBar texts inav settings model
|
||||||
, body texts flags inav settings model
|
, body texts env.flags inav env.settings model
|
||||||
, itemModal texts model
|
, itemModal texts model
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -60,25 +62,35 @@ itemModal texts model =
|
|||||||
span [ class "hidden" ] []
|
span [ class "hidden" ] []
|
||||||
|
|
||||||
|
|
||||||
header : Texts -> UiSettings -> ItemNav -> Model -> Html Msg
|
header : Texts -> ItemNav -> Env.View -> Model -> Html Msg
|
||||||
header texts settings inav model =
|
header texts inav env model =
|
||||||
div [ class "my-3" ]
|
div [ class "my-3" ]
|
||||||
[ Comp.ItemDetail.ItemInfoHeader.view texts.itemInfoHeader
|
[ Comp.ItemDetail.ItemInfoHeader.view texts.itemInfoHeader
|
||||||
settings
|
env.settings
|
||||||
model
|
model
|
||||||
(menuBar texts inav settings model)
|
(menuBar texts inav env model)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
menuBar : Texts -> ItemNav -> UiSettings -> Model -> Html Msg
|
menuBar : Texts -> ItemNav -> Env.View -> Model -> Html Msg
|
||||||
menuBar texts inav settings model =
|
menuBar texts inav env model =
|
||||||
let
|
let
|
||||||
keyDescr name =
|
keyDescr name =
|
||||||
if settings.itemDetailShortcuts && model.menuOpen then
|
if env.settings.itemDetailShortcuts && model.menuOpen then
|
||||||
" " ++ texts.key ++ "'" ++ name ++ "'."
|
" " ++ texts.key ++ "'" ++ name ++ "'."
|
||||||
|
|
||||||
else
|
else
|
||||||
""
|
""
|
||||||
|
|
||||||
|
isSelected =
|
||||||
|
Data.ItemIds.isMember env.selectedItems model.item.id
|
||||||
|
|
||||||
|
foldSelected fsel funsel =
|
||||||
|
if isSelected then
|
||||||
|
fsel
|
||||||
|
|
||||||
|
else
|
||||||
|
funsel
|
||||||
in
|
in
|
||||||
MB.view
|
MB.view
|
||||||
{ start =
|
{ start =
|
||||||
@ -210,7 +222,18 @@ menuBar texts inav settings model =
|
|||||||
, toggleMenu = ToggleMobileItemMenu
|
, toggleMenu = ToggleMobileItemMenu
|
||||||
, menuOpen = model.mobileItemMenuOpen
|
, menuOpen = model.mobileItemMenuOpen
|
||||||
, items =
|
, items =
|
||||||
[ { icon = i [ class "fa fa-envelope font-thin" ] []
|
[ { icon =
|
||||||
|
foldSelected
|
||||||
|
(i [ class "fa fa-check-square dark:text-lime-400 text-lime-600" ] [])
|
||||||
|
(i [ class "fa fa-tasks" ] [])
|
||||||
|
, label = foldSelected texts.deselectItem texts.selectItem
|
||||||
|
, disabled = False
|
||||||
|
, attrs =
|
||||||
|
[ href "#"
|
||||||
|
, onClick ToggleSelectItem
|
||||||
|
]
|
||||||
|
}
|
||||||
|
, { icon = i [ class "fa fa-envelope font-thin" ] []
|
||||||
, label = texts.sendMail
|
, label = texts.sendMail
|
||||||
, disabled = False
|
, disabled = False
|
||||||
, attrs =
|
, attrs =
|
||||||
@ -281,13 +304,28 @@ menuBar texts inav settings model =
|
|||||||
]
|
]
|
||||||
, end =
|
, end =
|
||||||
[ MB.CustomElement <|
|
[ MB.CustomElement <|
|
||||||
|
a
|
||||||
|
[ href "#"
|
||||||
|
, onClick ToggleSelectItem
|
||||||
|
, title (foldSelected texts.deselectItem texts.selectItem)
|
||||||
|
, class "hidden md:flex flex-row items-center h-full "
|
||||||
|
, classList
|
||||||
|
[ ( S.greenButton, isSelected )
|
||||||
|
, ( S.secondaryBasicButton, not isSelected )
|
||||||
|
]
|
||||||
|
]
|
||||||
|
[ foldSelected
|
||||||
|
(i [ class "fa fa-square-check" ] [])
|
||||||
|
(i [ class "fa fa-list-check" ] [])
|
||||||
|
]
|
||||||
|
, MB.CustomElement <|
|
||||||
a
|
a
|
||||||
[ class S.secondaryBasicButton
|
[ class S.secondaryBasicButton
|
||||||
, href "#"
|
, href "#"
|
||||||
, onClick UnconfirmItem
|
, onClick UnconfirmItem
|
||||||
, title texts.unconfirmItemMetadata
|
, title texts.unconfirmItemMetadata
|
||||||
, classList [ ( "hidden", model.item.state == "created" ) ]
|
, class "hidden"
|
||||||
, class "hidden md:block"
|
, classList [ ( "md:block", model.item.state /= "created" ) ]
|
||||||
]
|
]
|
||||||
[ i [ class "fa fa-eye-slash font-thin" ] []
|
[ i [ class "fa fa-eye-slash font-thin" ] []
|
||||||
]
|
]
|
||||||
|
@ -1594,8 +1594,8 @@ searchTabs texts ddd flags settings selectedItems model =
|
|||||||
i [ class "fa fa-check mr-2" ] []
|
i [ class "fa fa-check mr-2" ] []
|
||||||
|
|
||||||
else
|
else
|
||||||
i [ class "fa fa-list mr-2" ] []
|
i [ class "fa fa-list-check mr-2" ] []
|
||||||
, text "Show selection"
|
, text texts.showSelection
|
||||||
]
|
]
|
||||||
, a
|
, a
|
||||||
[ class "flex flex-row items-center"
|
[ class "flex flex-row items-center"
|
||||||
@ -1604,7 +1604,7 @@ searchTabs texts ddd flags settings selectedItems model =
|
|||||||
, Html.Events.onClick ClearSelection
|
, Html.Events.onClick ClearSelection
|
||||||
]
|
]
|
||||||
[ i [ class "fa fa-times mr-2" ] []
|
[ i [ class "fa fa-times mr-2" ] []
|
||||||
, text "Clear selection"
|
, text texts.clearSelection
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
@ -14,9 +14,7 @@ import Data.UiSettings exposing (UiSettings)
|
|||||||
|
|
||||||
|
|
||||||
type alias Update =
|
type alias Update =
|
||||||
{ bookmarkId : Maybe String
|
{ key : Nav.Key
|
||||||
, lastViewedItemId : Maybe String
|
|
||||||
, key : Nav.Key
|
|
||||||
, selectedItems : ItemIds
|
, selectedItems : ItemIds
|
||||||
, flags : Flags
|
, flags : Flags
|
||||||
, settings : UiSettings
|
, settings : UiSettings
|
||||||
|
@ -57,6 +57,8 @@ type alias Texts =
|
|||||||
, mailSendSuccessful : String
|
, mailSendSuccessful : String
|
||||||
, showQrCode : String
|
, showQrCode : String
|
||||||
, close : String
|
, close : String
|
||||||
|
, selectItem : String
|
||||||
|
, deselectItem : String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -93,6 +95,8 @@ gb =
|
|||||||
, mailSendSuccessful = "Mail sent."
|
, mailSendSuccessful = "Mail sent."
|
||||||
, showQrCode = "Show URL as QR code"
|
, showQrCode = "Show URL as QR code"
|
||||||
, close = "Close"
|
, close = "Close"
|
||||||
|
, selectItem = "Select this item"
|
||||||
|
, deselectItem = "Deselect this item"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -115,7 +119,7 @@ de =
|
|||||||
, addMoreFiles = "Diesem Dokument weitere Dateien anfügen"
|
, addMoreFiles = "Diesem Dokument weitere Dateien anfügen"
|
||||||
, confirmItemMetadata = "Metadaten bestätigen"
|
, confirmItemMetadata = "Metadaten bestätigen"
|
||||||
, confirm = "Bestätige"
|
, confirm = "Bestätige"
|
||||||
, unconfirmItemMetadata = "Widerrufe"
|
, unconfirmItemMetadata = "Widerrufe Bestätigung"
|
||||||
, reprocessItem = "Das Dokument erneut verarbeiten"
|
, reprocessItem = "Das Dokument erneut verarbeiten"
|
||||||
, deleteThisItem = "Das Dokument löschen"
|
, deleteThisItem = "Das Dokument löschen"
|
||||||
, undeleteThisItem = "Das Dokument wiederherstellen"
|
, undeleteThisItem = "Das Dokument wiederherstellen"
|
||||||
@ -129,4 +133,6 @@ de =
|
|||||||
, mailSendSuccessful = "E-Mail wurde versendet."
|
, mailSendSuccessful = "E-Mail wurde versendet."
|
||||||
, showQrCode = "Link als QR code anzeigen"
|
, showQrCode = "Link als QR code anzeigen"
|
||||||
, close = "Schließen"
|
, close = "Schließen"
|
||||||
|
, selectItem = "Zur Auswahl hinzufügen"
|
||||||
|
, deselectItem = "Aus Auswahl entfernen"
|
||||||
}
|
}
|
||||||
|
@ -64,7 +64,7 @@ de =
|
|||||||
, chooseDirection = "Wähle eine Richtung…"
|
, chooseDirection = "Wähle eine Richtung…"
|
||||||
, confirmUnconfirm = "Bestätige/Widerrufe Metadaten"
|
, confirmUnconfirm = "Bestätige/Widerrufe Metadaten"
|
||||||
, confirm = "Bestätige"
|
, confirm = "Bestätige"
|
||||||
, unconfirm = "Widerrufe"
|
, unconfirm = "Widerrufe Bestätigung"
|
||||||
, changeTagMode = "Wechsel den Änderungsmodus für Tags"
|
, changeTagMode = "Wechsel den Änderungsmodus für Tags"
|
||||||
, dueDateTab = "Fälligkeitsdatum"
|
, dueDateTab = "Fälligkeitsdatum"
|
||||||
, direction = Messages.Data.Direction.de
|
, direction = Messages.Data.Direction.de
|
||||||
|
@ -51,6 +51,8 @@ type alias Texts =
|
|||||||
, trashcan : String
|
, trashcan : String
|
||||||
, bookmarks : String
|
, bookmarks : String
|
||||||
, selection : String
|
, selection : String
|
||||||
|
, showSelection : String
|
||||||
|
, clearSelection : String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -86,6 +88,8 @@ gb =
|
|||||||
, trashcan = "Trash"
|
, trashcan = "Trash"
|
||||||
, bookmarks = "Bookmarks"
|
, bookmarks = "Bookmarks"
|
||||||
, selection = "Selection"
|
, selection = "Selection"
|
||||||
|
, showSelection = "Show selection"
|
||||||
|
, clearSelection = "Clear selection"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -121,4 +125,6 @@ de =
|
|||||||
, trashcan = "Papierkorb"
|
, trashcan = "Papierkorb"
|
||||||
, bookmarks = "Bookmarks"
|
, bookmarks = "Bookmarks"
|
||||||
, selection = "Auswahl"
|
, selection = "Auswahl"
|
||||||
|
, showSelection = "Auswahl anzeigen"
|
||||||
|
, clearSelection = "Auswahl aufheben"
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import Browser.Dom as Dom
|
|||||||
import Comp.ItemDetail
|
import Comp.ItemDetail
|
||||||
import Comp.ItemDetail.Model
|
import Comp.ItemDetail.Model
|
||||||
import Comp.LinkTarget exposing (LinkTarget)
|
import Comp.LinkTarget exposing (LinkTarget)
|
||||||
|
import Data.ItemIds exposing (ItemIds)
|
||||||
import Http
|
import Http
|
||||||
|
|
||||||
|
|
||||||
@ -45,4 +46,5 @@ type alias UpdateResult =
|
|||||||
, sub : Sub Msg
|
, sub : Sub Msg
|
||||||
, linkTarget : LinkTarget
|
, linkTarget : LinkTarget
|
||||||
, removedItem : Maybe String
|
, removedItem : Maybe String
|
||||||
|
, selectedItems : ItemIds
|
||||||
}
|
}
|
||||||
|
@ -8,29 +8,26 @@
|
|||||||
module Page.ItemDetail.Update exposing (update)
|
module Page.ItemDetail.Update exposing (update)
|
||||||
|
|
||||||
import Api
|
import Api
|
||||||
import Browser.Navigation as Nav
|
|
||||||
import Comp.ItemDetail
|
import Comp.ItemDetail
|
||||||
import Comp.ItemDetail.Model
|
import Comp.ItemDetail.Model
|
||||||
import Comp.LinkTarget
|
import Comp.LinkTarget
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Environment as Env
|
||||||
|
import Data.ItemIds
|
||||||
import Data.ItemNav exposing (ItemNav)
|
import Data.ItemNav exposing (ItemNav)
|
||||||
import Data.UiSettings exposing (UiSettings)
|
|
||||||
import Page exposing (Page(..))
|
import Page exposing (Page(..))
|
||||||
import Page.ItemDetail.Data exposing (Model, Msg(..), UpdateResult)
|
import Page.ItemDetail.Data exposing (Model, Msg(..), UpdateResult)
|
||||||
import Scroll
|
import Scroll
|
||||||
import Task
|
import Task
|
||||||
|
|
||||||
|
|
||||||
update : Nav.Key -> Flags -> ItemNav -> UiSettings -> Msg -> Model -> UpdateResult
|
update : ItemNav -> Env.Update -> Msg -> Model -> UpdateResult
|
||||||
update key flags inav settings msg model =
|
update inav env msg model =
|
||||||
case msg of
|
case msg of
|
||||||
Init id ->
|
Init id ->
|
||||||
let
|
let
|
||||||
result =
|
result =
|
||||||
Comp.ItemDetail.update key
|
Comp.ItemDetail.update inav
|
||||||
flags
|
env
|
||||||
inav
|
|
||||||
settings
|
|
||||||
Comp.ItemDetail.Model.Init
|
Comp.ItemDetail.Model.Init
|
||||||
model.detail
|
model.detail
|
||||||
|
|
||||||
@ -40,19 +37,20 @@ update key flags inav settings msg model =
|
|||||||
{ model = { model | detail = result.model }
|
{ model = { model | detail = result.model }
|
||||||
, cmd =
|
, cmd =
|
||||||
Cmd.batch
|
Cmd.batch
|
||||||
[ Api.itemDetail flags id ItemResp
|
[ Api.itemDetail env.flags id ItemResp
|
||||||
, Cmd.map ItemDetailMsg result.cmd
|
, Cmd.map ItemDetailMsg result.cmd
|
||||||
, Task.attempt ScrollResult task
|
, Task.attempt ScrollResult task
|
||||||
]
|
]
|
||||||
, sub = Sub.map ItemDetailMsg result.sub
|
, sub = Sub.map ItemDetailMsg result.sub
|
||||||
, linkTarget = result.linkTarget
|
, linkTarget = result.linkTarget
|
||||||
, removedItem = result.removedItem
|
, removedItem = result.removedItem
|
||||||
|
, selectedItems = env.selectedItems
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemDetailMsg lmsg ->
|
ItemDetailMsg lmsg ->
|
||||||
let
|
let
|
||||||
result =
|
result =
|
||||||
Comp.ItemDetail.update key flags inav settings lmsg model.detail
|
Comp.ItemDetail.update inav env lmsg model.detail
|
||||||
|
|
||||||
pageSwitch =
|
pageSwitch =
|
||||||
case result.linkTarget of
|
case result.linkTarget of
|
||||||
@ -60,13 +58,14 @@ update key flags inav settings msg model =
|
|||||||
Cmd.none
|
Cmd.none
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
Page.set key (SearchPage Nothing)
|
Page.set env.key (SearchPage Nothing)
|
||||||
in
|
in
|
||||||
{ model = { model | detail = result.model }
|
{ model = { model | detail = result.model }
|
||||||
, cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ]
|
, cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ]
|
||||||
, sub = Sub.map ItemDetailMsg result.sub
|
, sub = Sub.map ItemDetailMsg result.sub
|
||||||
, linkTarget = result.linkTarget
|
, linkTarget = result.linkTarget
|
||||||
, removedItem = result.removedItem
|
, removedItem = result.removedItem
|
||||||
|
, selectedItems = Data.ItemIds.apply env.selectedItems result.selectionChange
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemResp (Ok item) ->
|
ItemResp (Ok item) ->
|
||||||
@ -74,17 +73,28 @@ update key flags inav settings msg model =
|
|||||||
lmsg =
|
lmsg =
|
||||||
Comp.ItemDetail.Model.SetItem item
|
Comp.ItemDetail.Model.SetItem item
|
||||||
in
|
in
|
||||||
update key flags inav settings (ItemDetailMsg lmsg) model
|
update inav env (ItemDetailMsg lmsg) model
|
||||||
|
|
||||||
ItemResp (Err _) ->
|
ItemResp (Err _) ->
|
||||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing
|
unit env model
|
||||||
|
|
||||||
ScrollResult _ ->
|
ScrollResult _ ->
|
||||||
UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing
|
unit env model
|
||||||
|
|
||||||
UiSettingsUpdated ->
|
UiSettingsUpdated ->
|
||||||
let
|
let
|
||||||
lmsg =
|
lmsg =
|
||||||
ItemDetailMsg Comp.ItemDetail.Model.UiSettingsUpdated
|
ItemDetailMsg Comp.ItemDetail.Model.UiSettingsUpdated
|
||||||
in
|
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.EditForm
|
||||||
import Comp.ItemDetail.Model
|
import Comp.ItemDetail.Model
|
||||||
import Comp.MenuBar as MB
|
import Comp.MenuBar as MB
|
||||||
|
import Data.Environment as Env
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
import Data.ItemNav exposing (ItemNav)
|
import Data.ItemNav exposing (ItemNav)
|
||||||
import Data.UiSettings exposing (UiSettings)
|
import Data.UiSettings exposing (UiSettings)
|
||||||
@ -23,13 +24,13 @@ import Page.ItemDetail.Data exposing (..)
|
|||||||
import Styles as S
|
import Styles as S
|
||||||
|
|
||||||
|
|
||||||
viewSidebar : Texts -> Bool -> Flags -> UiSettings -> Model -> Html Msg
|
viewSidebar : Texts -> Env.View -> Model -> Html Msg
|
||||||
viewSidebar texts visible flags settings model =
|
viewSidebar texts env model =
|
||||||
div
|
div
|
||||||
[ id "sidebar"
|
[ id "sidebar"
|
||||||
, class S.sidebar
|
, class S.sidebar
|
||||||
, class S.sidebarBg
|
, class S.sidebarBg
|
||||||
, classList [ ( "hidden", not visible ) ]
|
, classList [ ( "hidden", not env.sidebarVisible ) ]
|
||||||
]
|
]
|
||||||
[ div
|
[ div
|
||||||
[ class S.header2
|
[ class S.header2
|
||||||
@ -57,16 +58,16 @@ viewSidebar texts visible flags settings model =
|
|||||||
, sticky = True
|
, sticky = True
|
||||||
}
|
}
|
||||||
, Html.map ItemDetailMsg
|
, 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 -> ItemNav -> Env.View -> Model -> Html Msg
|
||||||
viewContent texts inav flags settings model =
|
viewContent texts inav env model =
|
||||||
div
|
div
|
||||||
[ id "content"
|
[ id "content"
|
||||||
, class S.content
|
, class S.content
|
||||||
]
|
]
|
||||||
[ Html.map ItemDetailMsg
|
[ Html.map ItemDetailMsg
|
||||||
(Comp.ItemDetail.view2 texts.itemDetail flags inav settings model.detail)
|
(Comp.ItemDetail.view2 texts.itemDetail inav env model.detail)
|
||||||
]
|
]
|
||||||
|
@ -234,6 +234,7 @@ type Msg
|
|||||||
| ToggleExpandCollapseRows
|
| ToggleExpandCollapseRows
|
||||||
| ToggleBookmarkCurrentQueryView
|
| ToggleBookmarkCurrentQueryView
|
||||||
| BookmarkQueryMsg Comp.BookmarkQueryManage.Msg
|
| BookmarkQueryMsg Comp.BookmarkQueryManage.Msg
|
||||||
|
| ItemSelectionChanged
|
||||||
|
|
||||||
|
|
||||||
type SearchType
|
type SearchType
|
||||||
|
@ -50,8 +50,8 @@ type alias UpdateResult =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
update : Texts -> Env.Update -> Msg -> Model -> UpdateResult
|
update : Texts -> Maybe String -> Maybe String -> Env.Update -> Msg -> Model -> UpdateResult
|
||||||
update texts env msg model =
|
update texts bookmarkId lastViewedItemId env msg model =
|
||||||
case msg of
|
case msg of
|
||||||
Init ->
|
Init ->
|
||||||
let
|
let
|
||||||
@ -65,14 +65,14 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
setBookmark =
|
setBookmark =
|
||||||
Maybe.map (\bmId -> SearchMenuMsg <| Comp.SearchMenu.SetBookmark bmId) env.bookmarkId
|
Maybe.map (\bmId -> SearchMenuMsg <| Comp.SearchMenu.SetBookmark bmId) bookmarkId
|
||||||
|> Maybe.withDefault DoNothing
|
|> Maybe.withDefault DoNothing
|
||||||
in
|
in
|
||||||
makeResult env <|
|
makeResult env.selectedItems <|
|
||||||
Util.Update.andThen3
|
Util.Update.andThen3
|
||||||
[ update texts env (SearchMenuMsg Comp.SearchMenu.Init)
|
[ update texts bookmarkId lastViewedItemId env (SearchMenuMsg Comp.SearchMenu.Init)
|
||||||
, update texts env setBookmark
|
, update texts bookmarkId lastViewedItemId env setBookmark
|
||||||
, doSearch env searchParam
|
, doSearch env.selectedItems searchParam
|
||||||
]
|
]
|
||||||
model
|
model
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ update texts env msg model =
|
|||||||
nm =
|
nm =
|
||||||
{ model | searchOffset = 0, powerSearchInput = Comp.PowerSearchInput.init }
|
{ model | searchOffset = 0, powerSearchInput = Comp.PowerSearchInput.init }
|
||||||
in
|
in
|
||||||
update texts env (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
|
update texts bookmarkId lastViewedItemId env (SearchMenuMsg Comp.SearchMenu.ResetForm) nm
|
||||||
|
|
||||||
SearchMenuMsg m ->
|
SearchMenuMsg m ->
|
||||||
let
|
let
|
||||||
@ -125,10 +125,10 @@ update texts env msg model =
|
|||||||
|
|
||||||
result =
|
result =
|
||||||
if nextState.stateChange && not model.searchInProgress then
|
if nextState.stateChange && not model.searchInProgress then
|
||||||
doSearch env searchParam newModel
|
doSearch env.selectedItems searchParam newModel
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env ( newModel, Cmd.none )
|
resultModelCmd env.selectedItems ( newModel, Cmd.none )
|
||||||
in
|
in
|
||||||
{ result
|
{ result
|
||||||
| cmd =
|
| cmd =
|
||||||
@ -144,10 +144,10 @@ update texts env msg model =
|
|||||||
SetLinkTarget lt ->
|
SetLinkTarget lt ->
|
||||||
case linkTargetMsg lt of
|
case linkTargetMsg lt of
|
||||||
Just m ->
|
Just m ->
|
||||||
update texts env m model
|
update texts bookmarkId lastViewedItemId env m model
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
makeResult env ( model, Cmd.none, Sub.none )
|
makeResult env.selectedItems ( model, Cmd.none, Sub.none )
|
||||||
|
|
||||||
ItemCardListMsg m ->
|
ItemCardListMsg m ->
|
||||||
let
|
let
|
||||||
@ -197,7 +197,7 @@ update texts env msg model =
|
|||||||
else
|
else
|
||||||
Set.empty
|
Set.empty
|
||||||
in
|
in
|
||||||
resultModelCmd env ( { model | itemRowsOpen = itemRows, viewMenuOpen = False }, Cmd.none )
|
resultModelCmd env.selectedItems ( { model | itemRowsOpen = itemRows, viewMenuOpen = False }, Cmd.none )
|
||||||
|
|
||||||
ItemSearchResp scroll (Ok list) ->
|
ItemSearchResp scroll (Ok list) ->
|
||||||
let
|
let
|
||||||
@ -211,14 +211,14 @@ update texts env msg model =
|
|||||||
, moreAvailable = list.groups /= []
|
, moreAvailable = list.groups /= []
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
makeResult env <|
|
makeResult env.selectedItems <|
|
||||||
Util.Update.andThen3
|
Util.Update.andThen3
|
||||||
[ update texts env (ItemCardListMsg (Comp.ItemCardList.SetResults list))
|
[ update texts bookmarkId lastViewedItemId env (ItemCardListMsg (Comp.ItemCardList.SetResults list))
|
||||||
, if scroll then
|
, if scroll then
|
||||||
scrollToCard env
|
scrollToCard env.selectedItems lastViewedItemId
|
||||||
|
|
||||||
else
|
else
|
||||||
\next -> makeResult env ( next, Cmd.none, Sub.none )
|
\next -> makeResult env.selectedItems ( next, Cmd.none, Sub.none )
|
||||||
]
|
]
|
||||||
m
|
m
|
||||||
|
|
||||||
@ -235,10 +235,10 @@ update texts env msg model =
|
|||||||
, moreAvailable = list.groups /= []
|
, moreAvailable = list.groups /= []
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
update texts env (ItemCardListMsg (Comp.ItemCardList.AddResults list)) m
|
update texts bookmarkId lastViewedItemId env (ItemCardListMsg (Comp.ItemCardList.AddResults list)) m
|
||||||
|
|
||||||
ItemSearchAddResp (Err _) ->
|
ItemSearchAddResp (Err _) ->
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| moreInProgress = False
|
| moreInProgress = False
|
||||||
}
|
}
|
||||||
@ -246,7 +246,7 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
ItemSearchResp _ (Err _) ->
|
ItemSearchResp _ (Err _) ->
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| searchInProgress = False
|
| searchInProgress = False
|
||||||
}
|
}
|
||||||
@ -268,10 +268,10 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
in
|
in
|
||||||
if model.searchInProgress then
|
if model.searchInProgress then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
doSearch env param nm
|
doSearch env.selectedItems param nm
|
||||||
|
|
||||||
RefreshView ->
|
RefreshView ->
|
||||||
let
|
let
|
||||||
@ -285,10 +285,10 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
in
|
in
|
||||||
if model.searchInProgress then
|
if model.searchInProgress then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
doSearch env param model
|
doSearch env.selectedItems param model
|
||||||
|
|
||||||
ToggleSelectView ->
|
ToggleSelectView ->
|
||||||
let
|
let
|
||||||
@ -303,45 +303,45 @@ update texts env msg model =
|
|||||||
PublishView q ->
|
PublishView q ->
|
||||||
( PublishView q, Cmd.none )
|
( PublishView q, Cmd.none )
|
||||||
in
|
in
|
||||||
resultModelCmd env ( { model | viewMode = nextView }, cmd )
|
resultModelCmd env.selectedItems ( { model | viewMode = nextView }, cmd )
|
||||||
|
|
||||||
LoadMore ->
|
LoadMore ->
|
||||||
if model.moreAvailable then
|
if model.moreAvailable then
|
||||||
doSearchMore env model |> resultModelCmd env
|
doSearchMore env model |> resultModelCmd env.selectedItems
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
SetBasicSearch str ->
|
SetBasicSearch str ->
|
||||||
let
|
let
|
||||||
smMsg =
|
smMsg =
|
||||||
SearchMenuMsg (Comp.SearchMenu.SetTextSearch str)
|
SearchMenuMsg (Comp.SearchMenu.SetTextSearch str)
|
||||||
in
|
in
|
||||||
update texts env smMsg model
|
update texts bookmarkId lastViewedItemId env smMsg model
|
||||||
|
|
||||||
ToggleSearchType ->
|
ToggleSearchType ->
|
||||||
case model.searchTypeDropdownValue of
|
case model.searchTypeDropdownValue of
|
||||||
BasicSearch ->
|
BasicSearch ->
|
||||||
update texts env (SearchMenuMsg Comp.SearchMenu.SetFulltextSearch) model
|
update texts bookmarkId lastViewedItemId env (SearchMenuMsg Comp.SearchMenu.SetFulltextSearch) model
|
||||||
|
|
||||||
ContentOnlySearch ->
|
ContentOnlySearch ->
|
||||||
update texts env (SearchMenuMsg Comp.SearchMenu.SetNamesSearch) model
|
update texts bookmarkId lastViewedItemId env (SearchMenuMsg Comp.SearchMenu.SetNamesSearch) model
|
||||||
|
|
||||||
KeyUpSearchbarMsg (Just Enter) ->
|
KeyUpSearchbarMsg (Just Enter) ->
|
||||||
update texts env (DoSearch model.searchTypeDropdownValue) model
|
update texts bookmarkId lastViewedItemId env (DoSearch model.searchTypeDropdownValue) model
|
||||||
|
|
||||||
KeyUpSearchbarMsg _ ->
|
KeyUpSearchbarMsg _ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
ScrollResult _ ->
|
ScrollResult _ ->
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Process.sleep 800 |> Task.perform (always ClearItemDetailId)
|
Process.sleep 800 |> Task.perform (always ClearItemDetailId)
|
||||||
in
|
in
|
||||||
resultModelCmd env ( model, cmd )
|
resultModelCmd env.selectedItems ( model, cmd )
|
||||||
|
|
||||||
ClearItemDetailId ->
|
ClearItemDetailId ->
|
||||||
resultModelCmd env ( { model | scrollToCard = Nothing }, Cmd.none )
|
resultModelCmd env.selectedItems ( { model | scrollToCard = Nothing }, Cmd.none )
|
||||||
|
|
||||||
SelectAllItems ->
|
SelectAllItems ->
|
||||||
let
|
let
|
||||||
@ -352,16 +352,12 @@ update texts env msg model =
|
|||||||
Data.ItemIds.apply env.selectedItems (Data.ItemIds.selectAll visible)
|
Data.ItemIds.apply env.selectedItems (Data.ItemIds.selectAll visible)
|
||||||
|
|
||||||
res_ =
|
res_ =
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
in
|
in
|
||||||
{ res_ | selectedItems = itemIds }
|
{ res_ | selectedItems = itemIds }
|
||||||
|
|
||||||
SelectNoItems ->
|
SelectNoItems ->
|
||||||
let
|
resultModelCmd Data.ItemIds.empty ( model, Cmd.none )
|
||||||
result =
|
|
||||||
update texts env (SearchMenuMsg <| Comp.SearchMenu.setIncludeSelection False) model
|
|
||||||
in
|
|
||||||
{ result | selectedItems = Data.ItemIds.empty }
|
|
||||||
|
|
||||||
DeleteSelectedConfirmed ->
|
DeleteSelectedConfirmed ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -370,7 +366,7 @@ update texts env msg model =
|
|||||||
cmd =
|
cmd =
|
||||||
Api.deleteAllItems env.flags (Data.ItemIds.toList env.selectedItems) DeleteAllResp
|
Api.deleteAllItems env.flags (Data.ItemIds.toList env.selectedItems) DeleteAllResp
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -383,7 +379,7 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
RestoreSelectedConfirmed ->
|
RestoreSelectedConfirmed ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -392,7 +388,7 @@ update texts env msg model =
|
|||||||
cmd =
|
cmd =
|
||||||
Api.restoreAllItems env.flags (Data.ItemIds.toList env.selectedItems) DeleteAllResp
|
Api.restoreAllItems env.flags (Data.ItemIds.toList env.selectedItems) DeleteAllResp
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -405,7 +401,7 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
DeleteAllResp (Ok res) ->
|
DeleteAllResp (Ok res) ->
|
||||||
if res.success then
|
if res.success then
|
||||||
@ -422,19 +418,19 @@ update texts env msg model =
|
|||||||
, selectedItems = env.selectedItems
|
, selectedItems = env.selectedItems
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
doSearch env param nm
|
doSearch env.selectedItems param nm
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
DeleteAllResp (Err _) ->
|
DeleteAllResp (Err _) ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
RequestReprocessSelected ->
|
RequestReprocessSelected ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
if Data.ItemIds.isEmpty env.selectedItems then
|
if Data.ItemIds.isEmpty env.selectedItems then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
@ -448,15 +444,15 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
resultModelCmd env ( model_, Cmd.none )
|
resultModelCmd env.selectedItems ( model_, Cmd.none )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
CloseConfirmModal ->
|
CloseConfirmModal ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode = SelectView { svm | confirmModal = Nothing, action = NoneAction }
|
| viewMode = SelectView { svm | confirmModal = Nothing, action = NoneAction }
|
||||||
}
|
}
|
||||||
@ -464,20 +460,20 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
ReprocessSelectedConfirmed ->
|
ReprocessSelectedConfirmed ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
if Data.ItemIds.isEmpty env.selectedItems then
|
if Data.ItemIds.isEmpty env.selectedItems then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
cmd =
|
cmd =
|
||||||
Api.reprocessMultiple env.flags (Data.ItemIds.toList env.selectedItems) DeleteAllResp
|
Api.reprocessMultiple env.flags (Data.ItemIds.toList env.selectedItems) DeleteAllResp
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -490,13 +486,13 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
RequestDeleteSelected ->
|
RequestDeleteSelected ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
if Data.ItemIds.isEmpty env.selectedItems then
|
if Data.ItemIds.isEmpty env.selectedItems then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
@ -510,16 +506,16 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
resultModelCmd env ( model_, Cmd.none )
|
resultModelCmd env.selectedItems ( model_, Cmd.none )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
RequestRestoreSelected ->
|
RequestRestoreSelected ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
if Data.ItemIds.isEmpty env.selectedItems then
|
if Data.ItemIds.isEmpty env.selectedItems then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
@ -533,37 +529,37 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
in
|
in
|
||||||
resultModelCmd env ( model_, Cmd.none )
|
resultModelCmd env.selectedItems ( model_, Cmd.none )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
EditSelectedItems ->
|
EditSelectedItems ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
if svm.action == EditSelected then
|
if svm.action == EditSelected then
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model | viewMode = SelectView { svm | action = NoneAction } }
|
( { model | viewMode = SelectView { svm | action = NoneAction } }
|
||||||
, Cmd.none
|
, Cmd.none
|
||||||
)
|
)
|
||||||
|
|
||||||
else if Data.ItemIds.isEmpty env.selectedItems then
|
else if Data.ItemIds.isEmpty env.selectedItems then
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model | viewMode = SelectView { svm | action = EditSelected } }
|
( { model | viewMode = SelectView { svm | action = EditSelected } }
|
||||||
, Cmd.none
|
, Cmd.none
|
||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
MergeSelectedItems ->
|
MergeSelectedItems ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
if svm.action == MergeSelected then
|
if svm.action == MergeSelected then
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -582,7 +578,7 @@ update texts env msg model =
|
|||||||
( mm, mc ) =
|
( mm, mc ) =
|
||||||
Comp.ItemMerge.initQuery env.flags model.searchMenuModel.searchMode q
|
Comp.ItemMerge.initQuery env.flags model.searchMenuModel.searchMode q
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -595,10 +591,10 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
MergeItemsMsg lmsg ->
|
MergeItemsMsg lmsg ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -623,18 +619,20 @@ update texts env msg model =
|
|||||||
in
|
in
|
||||||
if result.outcome == Comp.ItemMerge.OutcomeMerged then
|
if result.outcome == Comp.ItemMerge.OutcomeMerged then
|
||||||
update texts
|
update texts
|
||||||
|
bookmarkId
|
||||||
|
lastViewedItemId
|
||||||
env
|
env
|
||||||
(DoSearch model.searchTypeDropdownValue)
|
(DoSearch model.searchTypeDropdownValue)
|
||||||
model_
|
model_
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( model_
|
( model_
|
||||||
, Cmd.map MergeItemsMsg result.cmd
|
, Cmd.map MergeItemsMsg result.cmd
|
||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
PublishSelectedItems ->
|
PublishSelectedItems ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -644,7 +642,7 @@ update texts env msg model =
|
|||||||
( mm, mc ) =
|
( mm, mc ) =
|
||||||
Comp.PublishItems.init env.flags
|
Comp.PublishItems.init env.flags
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -663,7 +661,7 @@ update texts env msg model =
|
|||||||
( mm, mc ) =
|
( mm, mc ) =
|
||||||
Comp.PublishItems.initQuery env.flags q
|
Comp.PublishItems.initQuery env.flags q
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model
|
( { model
|
||||||
| viewMode =
|
| viewMode =
|
||||||
SelectView
|
SelectView
|
||||||
@ -676,10 +674,10 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
PublishItemsMsg lmsg ->
|
PublishItemsMsg lmsg ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -701,18 +699,20 @@ update texts env msg model =
|
|||||||
in
|
in
|
||||||
if result.outcome == Comp.PublishItems.OutcomeDone then
|
if result.outcome == Comp.PublishItems.OutcomeDone then
|
||||||
update texts
|
update texts
|
||||||
|
bookmarkId
|
||||||
|
lastViewedItemId
|
||||||
env
|
env
|
||||||
(DoSearch model.searchTypeDropdownValue)
|
(DoSearch model.searchTypeDropdownValue)
|
||||||
model_
|
model_
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( model_
|
( model_
|
||||||
, Cmd.map PublishItemsMsg result.cmd
|
, Cmd.map PublishItemsMsg result.cmd
|
||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
EditMenuMsg lmsg ->
|
EditMenuMsg lmsg ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -755,14 +755,14 @@ update texts env msg model =
|
|||||||
res.change
|
res.change
|
||||||
(MultiUpdateResp res.change)
|
(MultiUpdateResp res.change)
|
||||||
in
|
in
|
||||||
makeResult env
|
makeResult env.selectedItems
|
||||||
( { model | viewMode = SelectView svm_ }
|
( { model | viewMode = SelectView svm_ }
|
||||||
, Cmd.batch [ cmd_, upCmd ]
|
, Cmd.batch [ cmd_, upCmd ]
|
||||||
, sub_
|
, sub_
|
||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
MultiUpdateResp change (Ok res) ->
|
MultiUpdateResp change (Ok res) ->
|
||||||
let
|
let
|
||||||
@ -771,23 +771,23 @@ update texts env msg model =
|
|||||||
in
|
in
|
||||||
if res.success then
|
if res.success then
|
||||||
-- replace changed items in the view
|
-- replace changed items in the view
|
||||||
resultModelCmd env ( nm, loadChangedItems env.flags model.searchMenuModel.searchMode env.selectedItems )
|
resultModelCmd env.selectedItems ( nm, loadChangedItems env.flags model.searchMenuModel.searchMode env.selectedItems )
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env ( nm, Cmd.none )
|
resultModelCmd env.selectedItems ( nm, Cmd.none )
|
||||||
|
|
||||||
MultiUpdateResp change (Err _) ->
|
MultiUpdateResp change (Err _) ->
|
||||||
makeResult env
|
makeResult env.selectedItems
|
||||||
( updateSelectViewNameState False model change
|
( updateSelectViewNameState False model change
|
||||||
, Cmd.none
|
, Cmd.none
|
||||||
, Sub.none
|
, Sub.none
|
||||||
)
|
)
|
||||||
|
|
||||||
ReplaceChangedItemsResp (Ok items) ->
|
ReplaceChangedItemsResp (Ok items) ->
|
||||||
resultModelCmd env ( replaceItems model items, Cmd.none )
|
resultModelCmd env.selectedItems ( replaceItems model items, Cmd.none )
|
||||||
|
|
||||||
ReplaceChangedItemsResp (Err _) ->
|
ReplaceChangedItemsResp (Err _) ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
UiSettingsUpdated ->
|
UiSettingsUpdated ->
|
||||||
let
|
let
|
||||||
@ -805,7 +805,7 @@ update texts env msg model =
|
|||||||
model_ =
|
model_ =
|
||||||
{ model | viewMode = viewMode }
|
{ model | viewMode = viewMode }
|
||||||
in
|
in
|
||||||
update texts env (DoSearch model.lastSearchType) model_
|
update texts bookmarkId lastViewedItemId env (DoSearch model.lastSearchType) model_
|
||||||
|
|
||||||
SearchStatsResp result ->
|
SearchStatsResp result ->
|
||||||
let
|
let
|
||||||
@ -815,7 +815,7 @@ update texts env msg model =
|
|||||||
stats =
|
stats =
|
||||||
Result.withDefault model.searchStats result
|
Result.withDefault model.searchStats result
|
||||||
in
|
in
|
||||||
update texts env lm { model | searchStats = stats }
|
update texts bookmarkId lastViewedItemId env lm { model | searchStats = stats }
|
||||||
|
|
||||||
TogglePreviewFullWidth ->
|
TogglePreviewFullWidth ->
|
||||||
let
|
let
|
||||||
@ -825,7 +825,7 @@ update texts env msg model =
|
|||||||
cmd =
|
cmd =
|
||||||
Api.saveUserClientSettingsBy env.flags newSettings ClientSettingsSaveResp
|
Api.saveUserClientSettingsBy env.flags newSettings ClientSettingsSaveResp
|
||||||
in
|
in
|
||||||
resultModelCmd env ( { model | viewMenuOpen = False }, cmd )
|
resultModelCmd env.selectedItems ( { model | viewMenuOpen = False }, cmd )
|
||||||
|
|
||||||
ClientSettingsSaveResp (Ok res) ->
|
ClientSettingsSaveResp (Ok res) ->
|
||||||
if res.success then
|
if res.success then
|
||||||
@ -837,10 +837,10 @@ update texts env msg model =
|
|||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
ClientSettingsSaveResp (Err _) ->
|
ClientSettingsSaveResp (Err _) ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
PowerSearchMsg lm ->
|
PowerSearchMsg lm ->
|
||||||
let
|
let
|
||||||
@ -855,19 +855,19 @@ update texts env msg model =
|
|||||||
in
|
in
|
||||||
case result.action of
|
case result.action of
|
||||||
Comp.PowerSearchInput.NoAction ->
|
Comp.PowerSearchInput.NoAction ->
|
||||||
makeResult env ( model_, cmd_, Sub.map PowerSearchMsg result.subs )
|
makeResult env.selectedItems ( model_, cmd_, Sub.map PowerSearchMsg result.subs )
|
||||||
|
|
||||||
Comp.PowerSearchInput.SubmitSearch ->
|
Comp.PowerSearchInput.SubmitSearch ->
|
||||||
update texts env (DoSearch model_.searchTypeDropdownValue) model_
|
update texts bookmarkId lastViewedItemId env (DoSearch model_.searchTypeDropdownValue) model_
|
||||||
|
|
||||||
KeyUpPowerSearchbarMsg (Just Enter) ->
|
KeyUpPowerSearchbarMsg (Just Enter) ->
|
||||||
update texts env (DoSearch model.searchTypeDropdownValue) model
|
update texts bookmarkId lastViewedItemId env (DoSearch model.searchTypeDropdownValue) model
|
||||||
|
|
||||||
KeyUpPowerSearchbarMsg _ ->
|
KeyUpPowerSearchbarMsg _ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
RemoveItem id ->
|
RemoveItem id ->
|
||||||
update texts env (ItemCardListMsg (Comp.ItemCardList.RemoveItem id)) model
|
update texts bookmarkId lastViewedItemId env (ItemCardListMsg (Comp.ItemCardList.RemoveItem id)) model
|
||||||
|
|
||||||
TogglePublishCurrentQueryView ->
|
TogglePublishCurrentQueryView ->
|
||||||
case createQuery env.selectedItems model of
|
case createQuery env.selectedItems model of
|
||||||
@ -876,30 +876,33 @@ update texts env msg model =
|
|||||||
( pm, pc ) =
|
( pm, pc ) =
|
||||||
Comp.PublishItems.initQuery env.flags q
|
Comp.PublishItems.initQuery env.flags q
|
||||||
in
|
in
|
||||||
resultModelCmd env ( { model | viewMode = PublishView pm, viewMenuOpen = False }, Cmd.map PublishViewMsg pc )
|
resultModelCmd env.selectedItems
|
||||||
|
( { model | viewMode = PublishView pm, viewMenuOpen = False }
|
||||||
|
, Cmd.map PublishViewMsg pc
|
||||||
|
)
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
ToggleBookmarkCurrentQueryView ->
|
ToggleBookmarkCurrentQueryView ->
|
||||||
case createQuery env.selectedItems model of
|
case createQuery env.selectedItems model of
|
||||||
Just q ->
|
Just q ->
|
||||||
case model.topWidgetModel of
|
case model.topWidgetModel of
|
||||||
BookmarkQuery _ ->
|
BookmarkQuery _ ->
|
||||||
resultModelCmd env ( { model | topWidgetModel = TopWidgetHidden, viewMenuOpen = False }, Cmd.none )
|
resultModelCmd env.selectedItems ( { model | topWidgetModel = TopWidgetHidden, viewMenuOpen = False }, Cmd.none )
|
||||||
|
|
||||||
TopWidgetHidden ->
|
TopWidgetHidden ->
|
||||||
let
|
let
|
||||||
( qm, qc ) =
|
( qm, qc ) =
|
||||||
Comp.BookmarkQueryManage.init (Q.render q)
|
Comp.BookmarkQueryManage.init (Q.render q)
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model | topWidgetModel = BookmarkQuery qm, viewMenuOpen = False }
|
( { model | topWidgetModel = BookmarkQuery qm, viewMenuOpen = False }
|
||||||
, Cmd.map BookmarkQueryMsg qc
|
, Cmd.map BookmarkQueryMsg qc
|
||||||
)
|
)
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
BookmarkQueryMsg lm ->
|
BookmarkQueryMsg lm ->
|
||||||
case model.topWidgetModel of
|
case model.topWidgetModel of
|
||||||
@ -927,7 +930,7 @@ update texts env msg model =
|
|||||||
else
|
else
|
||||||
Cmd.none
|
Cmd.none
|
||||||
in
|
in
|
||||||
makeResult env
|
makeResult env.selectedItems
|
||||||
( { model | topWidgetModel = nextModel }
|
( { model | topWidgetModel = nextModel }
|
||||||
, Cmd.batch
|
, Cmd.batch
|
||||||
[ Cmd.map BookmarkQueryMsg res.cmd
|
[ Cmd.map BookmarkQueryMsg res.cmd
|
||||||
@ -937,7 +940,7 @@ update texts env msg model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
TopWidgetHidden ->
|
TopWidgetHidden ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
PublishViewMsg lmsg ->
|
PublishViewMsg lmsg ->
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
@ -948,22 +951,22 @@ update texts env msg model =
|
|||||||
in
|
in
|
||||||
case result.outcome of
|
case result.outcome of
|
||||||
Comp.PublishItems.OutcomeInProgress ->
|
Comp.PublishItems.OutcomeInProgress ->
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model | viewMode = PublishView result.model }
|
( { model | viewMode = PublishView result.model }
|
||||||
, Cmd.map PublishViewMsg result.cmd
|
, Cmd.map PublishViewMsg result.cmd
|
||||||
)
|
)
|
||||||
|
|
||||||
Comp.PublishItems.OutcomeDone ->
|
Comp.PublishItems.OutcomeDone ->
|
||||||
resultModelCmd env
|
resultModelCmd env.selectedItems
|
||||||
( { model | viewMode = SearchView }
|
( { model | viewMode = SearchView }
|
||||||
, Cmd.map SearchMenuMsg (Comp.SearchMenu.refreshBookmarks env.flags)
|
, Cmd.map SearchMenuMsg (Comp.SearchMenu.refreshBookmarks env.flags)
|
||||||
)
|
)
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
resultModelCmd env ( model, Cmd.none )
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
ToggleViewMenu ->
|
ToggleViewMenu ->
|
||||||
resultModelCmd env ( { model | viewMenuOpen = not model.viewMenuOpen }, Cmd.none )
|
resultModelCmd env.selectedItems ( { model | viewMenuOpen = not model.viewMenuOpen }, Cmd.none )
|
||||||
|
|
||||||
ToggleShowGroups ->
|
ToggleShowGroups ->
|
||||||
let
|
let
|
||||||
@ -973,7 +976,7 @@ update texts env msg model =
|
|||||||
cmd =
|
cmd =
|
||||||
Api.saveUserClientSettingsBy env.flags newSettings ClientSettingsSaveResp
|
Api.saveUserClientSettingsBy env.flags newSettings ClientSettingsSaveResp
|
||||||
in
|
in
|
||||||
resultModelCmd env ( { model | viewMenuOpen = False }, cmd )
|
resultModelCmd env.selectedItems ( { model | viewMenuOpen = False }, cmd )
|
||||||
|
|
||||||
ToggleArrange am ->
|
ToggleArrange am ->
|
||||||
let
|
let
|
||||||
@ -983,7 +986,19 @@ update texts env msg model =
|
|||||||
cmd =
|
cmd =
|
||||||
Api.saveUserClientSettingsBy env.flags newSettings ClientSettingsSaveResp
|
Api.saveUserClientSettingsBy env.flags newSettings ClientSettingsSaveResp
|
||||||
in
|
in
|
||||||
resultModelCmd env ( { model | viewMenuOpen = False }, cmd )
|
resultModelCmd env.selectedItems ( { model | viewMenuOpen = False }, cmd )
|
||||||
|
|
||||||
|
ItemSelectionChanged ->
|
||||||
|
if Data.ItemIds.isEmpty env.selectedItems then
|
||||||
|
update texts
|
||||||
|
bookmarkId
|
||||||
|
lastViewedItemId
|
||||||
|
env
|
||||||
|
(SearchMenuMsg <| Comp.SearchMenu.setIncludeSelection False)
|
||||||
|
model
|
||||||
|
|
||||||
|
else
|
||||||
|
resultModelCmd env.selectedItems ( model, Cmd.none )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1068,16 +1083,16 @@ loadChangedItems flags smode ids =
|
|||||||
Api.itemSearch flags search ReplaceChangedItemsResp
|
Api.itemSearch flags search ReplaceChangedItemsResp
|
||||||
|
|
||||||
|
|
||||||
scrollToCard : Env.Update -> Model -> UpdateResult
|
scrollToCard : ItemIds -> Maybe String -> Model -> UpdateResult
|
||||||
scrollToCard env model =
|
scrollToCard selection lastViewedItemId model =
|
||||||
let
|
let
|
||||||
scroll id =
|
scroll id =
|
||||||
Scroll.scrollElementY "item-card-list" id 0.5 0.5
|
Scroll.scrollElementY "item-card-list" id 0.5 0.5
|
||||||
in
|
in
|
||||||
makeResult env <|
|
makeResult selection <|
|
||||||
case env.lastViewedItemId of
|
case lastViewedItemId of
|
||||||
Just id ->
|
Just id ->
|
||||||
( { model | scrollToCard = env.lastViewedItemId }
|
( { model | scrollToCard = lastViewedItemId }
|
||||||
, Task.attempt ScrollResult (scroll id)
|
, Task.attempt ScrollResult (scroll id)
|
||||||
, Sub.none
|
, Sub.none
|
||||||
)
|
)
|
||||||
@ -1091,8 +1106,8 @@ loadEditModel flags =
|
|||||||
Cmd.map EditMenuMsg (Comp.ItemDetail.MultiEditMenu.loadModel flags)
|
Cmd.map EditMenuMsg (Comp.ItemDetail.MultiEditMenu.loadModel flags)
|
||||||
|
|
||||||
|
|
||||||
doSearch : Env.Update -> SearchParam -> Model -> UpdateResult
|
doSearch : ItemIds -> SearchParam -> Model -> UpdateResult
|
||||||
doSearch env param model =
|
doSearch selection param model =
|
||||||
let
|
let
|
||||||
param_ =
|
param_ =
|
||||||
{ param | offset = 0 }
|
{ param | offset = 0 }
|
||||||
@ -1100,7 +1115,7 @@ doSearch env param model =
|
|||||||
searchCmd =
|
searchCmd =
|
||||||
doSearchCmd param_ model
|
doSearchCmd param_ model
|
||||||
in
|
in
|
||||||
resultModelCmd env
|
resultModelCmd selection
|
||||||
( { model
|
( { model
|
||||||
| searchInProgress = True
|
| searchInProgress = True
|
||||||
, searchOffset = 0
|
, searchOffset = 0
|
||||||
@ -1135,16 +1150,16 @@ doSearchMore env model =
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
resultModelCmd : Env.Update -> ( Model, Cmd Msg ) -> UpdateResult
|
resultModelCmd : ItemIds -> ( Model, Cmd Msg ) -> UpdateResult
|
||||||
resultModelCmd env ( m, c ) =
|
resultModelCmd selection ( m, c ) =
|
||||||
makeResult env ( m, c, Sub.none )
|
makeResult selection ( m, c, Sub.none )
|
||||||
|
|
||||||
|
|
||||||
makeResult : Env.Update -> ( Model, Cmd Msg, Sub Msg ) -> UpdateResult
|
makeResult : ItemIds -> ( Model, Cmd Msg, Sub Msg ) -> UpdateResult
|
||||||
makeResult env ( m, c, s ) =
|
makeResult selection ( m, c, s ) =
|
||||||
{ model = m
|
{ model = m
|
||||||
, cmd = c
|
, cmd = c
|
||||||
, sub = s
|
, sub = s
|
||||||
, appEvent = AppNothing
|
, appEvent = AppNothing
|
||||||
, selectedItems = env.selectedItems
|
, selectedItems = selection
|
||||||
}
|
}
|
||||||
|
@ -189,6 +189,26 @@ secondaryButtonHover =
|
|||||||
" hover:bg-gray-400 dark:hover:bg-slate-300 "
|
" hover:bg-gray-400 dark:hover:bg-slate-300 "
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- Secondary Basic Button
|
||||||
|
|
||||||
|
|
||||||
|
secondaryBasicButtonNoColor : String
|
||||||
|
secondaryBasicButtonNoColor =
|
||||||
|
" my-auto whitespace-nowrap text-center shadow-none focus:outline-none focus:ring focus:ring-opacity-75 "
|
||||||
|
|
||||||
|
|
||||||
|
secondaryBasicButtonMain : String
|
||||||
|
secondaryBasicButtonMain =
|
||||||
|
secondaryBasicButtonNoColor
|
||||||
|
++ " border-gray-500 dark:border-slate-500 text-gray-500 dark:text-slate-400 "
|
||||||
|
|
||||||
|
|
||||||
|
secondaryBasicButtonHover : String
|
||||||
|
secondaryBasicButtonHover =
|
||||||
|
" hover:bg-gray-600 hover:text-white dark:hover:text-white dark:hover:bg-slate-500 dark:hover:text-slate-100 "
|
||||||
|
|
||||||
|
|
||||||
secondaryBasicButton : String
|
secondaryBasicButton : String
|
||||||
secondaryBasicButton =
|
secondaryBasicButton =
|
||||||
secondaryBasicButtonRounded ++ secondaryBasicButtonPlain
|
secondaryBasicButtonRounded ++ secondaryBasicButtonPlain
|
||||||
@ -205,20 +225,6 @@ secondaryBasicButtonRounded =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Secondary Basic Button
|
|
||||||
|
|
||||||
|
|
||||||
secondaryBasicButtonMain : String
|
|
||||||
secondaryBasicButtonMain =
|
|
||||||
" my-auto whitespace-nowrap border-gray-500 dark:border-slate-500 text-gray-500 dark:text-slate-400 text-center shadow-none focus:outline-none focus:ring focus:ring-opacity-75 "
|
|
||||||
|
|
||||||
|
|
||||||
secondaryBasicButtonHover : String
|
|
||||||
secondaryBasicButtonHover =
|
|
||||||
" hover:bg-gray-600 hover:text-white dark:hover:text-white dark:hover:bg-slate-500 dark:hover:text-slate-100 "
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Delete Button
|
--- Delete Button
|
||||||
|
|
||||||
|
|
||||||
@ -248,6 +254,18 @@ deleteLabel =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- Green Button
|
||||||
|
|
||||||
|
|
||||||
|
greenButton : String
|
||||||
|
greenButton =
|
||||||
|
secondaryBasicButtonNoColor
|
||||||
|
++ secondaryBasicButtonRounded
|
||||||
|
++ " dark:bg-lime-600 dark:bg-opacity-30 dark:border-lime-600 dark:text-lime-400 "
|
||||||
|
++ " bg-lime-600 border-lime-600 text-white"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Others
|
--- Others
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user