mirror of
				https://github.com/TheAnachronism/docspell.git
				synced 2025-10-30 21:40:12 +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 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 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user