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