mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-07-04 16:48:26 +00:00
Indicate saving when changing name for multiple items
This commit is contained in:
@ -23,7 +23,8 @@ import Api.Model.ItemSearch
|
|||||||
import Browser.Dom as Dom
|
import Browser.Dom as Dom
|
||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
import Comp.ItemCardList
|
import Comp.ItemCardList
|
||||||
import Comp.ItemDetail.EditMenu
|
import Comp.ItemDetail.EditMenu exposing (SaveNameState(..))
|
||||||
|
import Comp.ItemDetail.FormChange exposing (FormChange)
|
||||||
import Comp.SearchMenu
|
import Comp.SearchMenu
|
||||||
import Comp.YesNoDimmer
|
import Comp.YesNoDimmer
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
@ -60,6 +61,7 @@ type alias SelectViewModel =
|
|||||||
, action : SelectActionMode
|
, action : SelectActionMode
|
||||||
, deleteAllConfirm : Comp.YesNoDimmer.Model
|
, deleteAllConfirm : Comp.YesNoDimmer.Model
|
||||||
, editModel : Comp.ItemDetail.EditMenu.Model
|
, editModel : Comp.ItemDetail.EditMenu.Model
|
||||||
|
, saveNameState : SaveNameState
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -69,6 +71,7 @@ initSelectViewModel =
|
|||||||
, action = NoneAction
|
, action = NoneAction
|
||||||
, deleteAllConfirm = Comp.YesNoDimmer.initActive
|
, deleteAllConfirm = Comp.YesNoDimmer.initActive
|
||||||
, editModel = Comp.ItemDetail.EditMenu.init
|
, editModel = Comp.ItemDetail.EditMenu.init
|
||||||
|
, saveNameState = SaveSuccess
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -167,7 +170,7 @@ type Msg
|
|||||||
| DeleteSelectedConfirmMsg Comp.YesNoDimmer.Msg
|
| DeleteSelectedConfirmMsg Comp.YesNoDimmer.Msg
|
||||||
| EditSelectedItems
|
| EditSelectedItems
|
||||||
| EditMenuMsg Comp.ItemDetail.EditMenu.Msg
|
| EditMenuMsg Comp.ItemDetail.EditMenu.Msg
|
||||||
| MultiUpdateResp (Result Http.Error BasicResult)
|
| MultiUpdateResp FormChange (Result Http.Error BasicResult)
|
||||||
| ReplaceChangedItemsResp (Result Http.Error ItemLightList)
|
| ReplaceChangedItemsResp (Result Http.Error ItemLightList)
|
||||||
| DeleteAllResp (Result Http.Error BasicResult)
|
| DeleteAllResp (Result Http.Error BasicResult)
|
||||||
|
|
||||||
|
@ -3,12 +3,12 @@ module Page.Home.Update exposing (update)
|
|||||||
import Api
|
import Api
|
||||||
import Api.Model.IdList exposing (IdList)
|
import Api.Model.IdList exposing (IdList)
|
||||||
import Api.Model.ItemLightList exposing (ItemLightList)
|
import Api.Model.ItemLightList exposing (ItemLightList)
|
||||||
import Api.Model.ItemSearch exposing (ItemSearch)
|
import Api.Model.ItemSearch
|
||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Comp.FixedDropdown
|
import Comp.FixedDropdown
|
||||||
import Comp.ItemCardList
|
import Comp.ItemCardList
|
||||||
import Comp.ItemDetail.EditMenu
|
import Comp.ItemDetail.EditMenu exposing (SaveNameState(..))
|
||||||
import Comp.ItemDetail.FormChange
|
import Comp.ItemDetail.FormChange exposing (FormChange(..))
|
||||||
import Comp.SearchMenu
|
import Comp.SearchMenu
|
||||||
import Comp.YesNoDimmer
|
import Comp.YesNoDimmer
|
||||||
import Data.Flags exposing (Flags)
|
import Data.Flags exposing (Flags)
|
||||||
@ -435,7 +435,16 @@ update mId key flags settings msg model =
|
|||||||
Comp.ItemDetail.EditMenu.update flags lmsg svm.editModel
|
Comp.ItemDetail.EditMenu.update flags lmsg svm.editModel
|
||||||
|
|
||||||
svm_ =
|
svm_ =
|
||||||
{ svm | editModel = res.model }
|
{ svm
|
||||||
|
| editModel = res.model
|
||||||
|
, saveNameState =
|
||||||
|
case res.change of
|
||||||
|
NameChange _ ->
|
||||||
|
Saving
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
svm.saveNameState
|
||||||
|
}
|
||||||
|
|
||||||
cmd_ =
|
cmd_ =
|
||||||
Cmd.map EditMenuMsg res.cmd
|
Cmd.map EditMenuMsg res.cmd
|
||||||
@ -447,7 +456,7 @@ update mId key flags settings msg model =
|
|||||||
Comp.ItemDetail.FormChange.multiUpdate flags
|
Comp.ItemDetail.FormChange.multiUpdate flags
|
||||||
svm.ids
|
svm.ids
|
||||||
res.change
|
res.change
|
||||||
MultiUpdateResp
|
(MultiUpdateResp res.change)
|
||||||
in
|
in
|
||||||
( { model | viewMode = SelectView svm_ }
|
( { model | viewMode = SelectView svm_ }
|
||||||
, Cmd.batch [ cmd_, upCmd ]
|
, Cmd.batch [ cmd_, upCmd ]
|
||||||
@ -457,21 +466,28 @@ update mId key flags settings msg model =
|
|||||||
_ ->
|
_ ->
|
||||||
noSub ( model, Cmd.none )
|
noSub ( model, Cmd.none )
|
||||||
|
|
||||||
MultiUpdateResp (Ok res) ->
|
MultiUpdateResp change (Ok res) ->
|
||||||
|
let
|
||||||
|
nm =
|
||||||
|
updateSelectViewNameState res.success model change
|
||||||
|
in
|
||||||
if res.success then
|
if res.success then
|
||||||
case model.viewMode of
|
case model.viewMode of
|
||||||
SelectView svm ->
|
SelectView svm ->
|
||||||
-- replace changed items in the view
|
-- replace changed items in the view
|
||||||
noSub ( model, loadChangedItems flags svm.ids )
|
noSub ( nm, loadChangedItems flags svm.ids )
|
||||||
|
|
||||||
_ ->
|
_ ->
|
||||||
noSub ( model, Cmd.none )
|
noSub ( nm, Cmd.none )
|
||||||
|
|
||||||
else
|
else
|
||||||
noSub ( model, Cmd.none )
|
noSub ( nm, Cmd.none )
|
||||||
|
|
||||||
MultiUpdateResp (Err _) ->
|
MultiUpdateResp change (Err _) ->
|
||||||
noSub ( model, Cmd.none )
|
( updateSelectViewNameState False model change
|
||||||
|
, Cmd.none
|
||||||
|
, Sub.none
|
||||||
|
)
|
||||||
|
|
||||||
ReplaceChangedItemsResp (Ok items) ->
|
ReplaceChangedItemsResp (Ok items) ->
|
||||||
noSub ( replaceItems model items, Cmd.none )
|
noSub ( replaceItems model items, Cmd.none )
|
||||||
@ -484,6 +500,32 @@ update mId key flags settings msg model =
|
|||||||
--- Helpers
|
--- Helpers
|
||||||
|
|
||||||
|
|
||||||
|
updateSelectViewNameState : Bool -> Model -> FormChange -> Model
|
||||||
|
updateSelectViewNameState success model change =
|
||||||
|
case model.viewMode of
|
||||||
|
SelectView svm ->
|
||||||
|
case change of
|
||||||
|
NameChange _ ->
|
||||||
|
let
|
||||||
|
svm_ =
|
||||||
|
{ svm
|
||||||
|
| saveNameState =
|
||||||
|
if success then
|
||||||
|
SaveSuccess
|
||||||
|
|
||||||
|
else
|
||||||
|
SaveFailed
|
||||||
|
}
|
||||||
|
in
|
||||||
|
{ model | viewMode = SelectView svm_ }
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
model
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
model
|
||||||
|
|
||||||
|
|
||||||
replaceItems : Model -> ItemLightList -> Model
|
replaceItems : Model -> ItemLightList -> Model
|
||||||
replaceItems model newItems =
|
replaceItems model newItems =
|
||||||
let
|
let
|
||||||
|
@ -174,8 +174,11 @@ viewLeftMenu flags settings model =
|
|||||||
case svm.action of
|
case svm.action of
|
||||||
EditSelected ->
|
EditSelected ->
|
||||||
let
|
let
|
||||||
cfg =
|
cfg_ =
|
||||||
Comp.ItemDetail.EditMenu.defaultViewConfig
|
Comp.ItemDetail.EditMenu.defaultViewConfig
|
||||||
|
|
||||||
|
cfg =
|
||||||
|
{ cfg_ | nameState = svm.saveNameState }
|
||||||
in
|
in
|
||||||
[ div [ class "ui dividing header" ]
|
[ div [ class "ui dividing header" ]
|
||||||
[ text "Multi-Edit"
|
[ text "Multi-Edit"
|
||||||
@ -208,7 +211,7 @@ viewBar flags model =
|
|||||||
|
|
||||||
|
|
||||||
viewActionBar : Flags -> SelectViewModel -> Model -> Html Msg
|
viewActionBar : Flags -> SelectViewModel -> Model -> Html Msg
|
||||||
viewActionBar _ svm model =
|
viewActionBar _ svm _ =
|
||||||
let
|
let
|
||||||
selectCount =
|
selectCount =
|
||||||
Set.size svm.ids |> String.fromInt
|
Set.size svm.ids |> String.fromInt
|
||||||
|
Reference in New Issue
Block a user