diff --git a/modules/webapp/src/main/elm/App/Update.elm b/modules/webapp/src/main/elm/App/Update.elm index 04b752e0..b5381433 100644 --- a/modules/webapp/src/main/elm/App/Update.elm +++ b/modules/webapp/src/main/elm/App/Update.elm @@ -331,10 +331,18 @@ updateItemDetail lmsg model = ( hm, hc, hs ) = updateHome (Page.Home.Data.SetLinkTarget result.linkTarget) model_ + + ( hm1, hc1, hs1 ) = + case result.removedItem of + Just removedId -> + updateHome (Page.Home.Data.RemoveItem removedId) hm + + Nothing -> + ( hm, hc, hs ) in - ( hm - , Cmd.batch [ Cmd.map ItemDetailMsg result.cmd, hc ] - , Sub.batch [ Sub.map ItemDetailMsg result.sub, hs ] + ( hm1 + , Cmd.batch [ Cmd.map ItemDetailMsg result.cmd, hc, hc1 ] + , Sub.batch [ Sub.map ItemDetailMsg result.sub, hs, hs1 ] ) diff --git a/modules/webapp/src/main/elm/Comp/ItemCardList.elm b/modules/webapp/src/main/elm/Comp/ItemCardList.elm index d9087b59..4be8d40f 100644 --- a/modules/webapp/src/main/elm/Comp/ItemCardList.elm +++ b/modules/webapp/src/main/elm/Comp/ItemCardList.elm @@ -46,6 +46,7 @@ type Msg = SetResults ItemLightList | AddResults ItemLightList | ItemCardMsg ItemLight Comp.ItemCard.Msg + | RemoveItem String init : Model @@ -145,6 +146,13 @@ updateDrag dm _ msg model = result.selection result.linkTarget + RemoveItem id -> + UpdateResult { model | results = removeItemById id model.results } + Cmd.none + dm + Data.ItemSelection.Inactive + Comp.LinkTarget.LinkNone + --- View2 @@ -232,3 +240,15 @@ isMultiSelectMode cfg = Data.ItemSelection.Inactive -> False + + +removeItemById : String -> ItemLightList -> ItemLightList +removeItemById id list = + let + filterItem item = + item.id /= id + + filterGroup group = + { group | items = List.filter filterItem group.items } + in + { list | groups = List.map filterGroup list.groups } diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm index 58c44201..65246daf 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Model.elm @@ -276,7 +276,7 @@ type Msg | ItemModalCancelled | RequestDelete | SaveResp (Result Http.Error BasicResult) - | DeleteResp (Result Http.Error BasicResult) + | DeleteResp String (Result Http.Error BasicResult) | GetItemResp (Result Http.Error ItemDetail) | GetProposalResp (Result Http.Error ItemProposals) | RemoveDueDate @@ -352,22 +352,23 @@ type alias UpdateResult = , cmd : Cmd Msg , sub : Sub Msg , linkTarget : LinkTarget + , removedItem : Maybe String } resultModel : Model -> UpdateResult resultModel model = - UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone + UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing resultModelCmd : ( Model, Cmd Msg ) -> UpdateResult resultModelCmd ( model, cmd ) = - UpdateResult model cmd Sub.none Comp.LinkTarget.LinkNone + UpdateResult model cmd Sub.none Comp.LinkTarget.LinkNone Nothing resultModelCmdSub : ( Model, Cmd Msg, Sub Msg ) -> UpdateResult resultModelCmdSub ( model, cmd, sub ) = - UpdateResult model cmd sub Comp.LinkTarget.LinkNone + UpdateResult model cmd sub Comp.LinkTarget.LinkNone Nothing personMatchesOrg : Model -> Bool diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm index 7e2200f5..6e9ebe1f 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/Update.elm @@ -279,6 +279,7 @@ update key flags inav settings msg model = , res9.sub ] , linkTarget = Comp.LinkTarget.LinkNone + , removedItem = Nothing } SetActiveAttachment pos -> @@ -560,7 +561,7 @@ update key flags inav settings msg model = DeleteItemConfirmed -> let cmd = - Api.deleteItem flags model.item.id DeleteResp + Api.deleteItem flags model.item.id (DeleteResp model.item.id) in resultModelCmd ( { model | itemModal = Nothing }, cmd ) @@ -677,6 +678,7 @@ update key flags inav settings msg model = , cmd = Cmd.batch [ res1.cmd, res2.cmd ] , sub = Sub.batch [ res1.sub, res2.sub ] , linkTarget = Comp.LinkTarget.LinkNone + , removedItem = Nothing } GetPersonResp (Err _) -> @@ -720,19 +722,23 @@ update key flags inav settings msg model = SaveNameResp (Err _) -> resultModel { model | nameState = SaveFailed } - DeleteResp (Ok res) -> + DeleteResp removedId (Ok res) -> if res.success then - case inav.next of - Just id -> - resultModelCmd ( model, Page.set key (ItemDetailPage id) ) + let + result_ = + case inav.next of + Just id -> + resultModelCmd ( model, Page.set key (ItemDetailPage id) ) - Nothing -> - resultModelCmd ( model, Page.set key HomePage ) + Nothing -> + resultModelCmd ( model, Page.set key HomePage ) + in + { result_ | removedItem = Just removedId } else resultModel model - DeleteResp (Err _) -> + DeleteResp _ (Err _) -> resultModel model GetItemResp (Ok item) -> @@ -1421,6 +1427,7 @@ update key flags inav settings msg model = , cmd = Cmd.none , sub = Sub.none , linkTarget = lt + , removedItem = Nothing } CustomFieldMsg lm -> @@ -1747,6 +1754,7 @@ withSub ( m, c ) = m.customFieldThrottle ] , linkTarget = Comp.LinkTarget.LinkNone + , removedItem = Nothing } diff --git a/modules/webapp/src/main/elm/Page/Home/Data.elm b/modules/webapp/src/main/elm/Page/Home/Data.elm index 032c922f..8560ca9d 100644 --- a/modules/webapp/src/main/elm/Page/Home/Data.elm +++ b/modules/webapp/src/main/elm/Page/Home/Data.elm @@ -201,6 +201,7 @@ type Msg | RequestReprocessSelected | ReprocessSelectedConfirmed | ClientSettingsSaveResp UiSettings (Result Http.Error BasicResult) + | RemoveItem String type SearchType diff --git a/modules/webapp/src/main/elm/Page/Home/Update.elm b/modules/webapp/src/main/elm/Page/Home/Update.elm index dece6888..55a45ce7 100644 --- a/modules/webapp/src/main/elm/Page/Home/Update.elm +++ b/modules/webapp/src/main/elm/Page/Home/Update.elm @@ -652,6 +652,9 @@ update mId key flags settings msg model = KeyUpPowerSearchbarMsg _ -> withSub ( model, Cmd.none ) + RemoveItem id -> + update mId key flags settings (ItemCardListMsg (Comp.ItemCardList.RemoveItem id)) model + --- Helpers diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm b/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm index 84ee3605..0d679da7 100644 --- a/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm +++ b/modules/webapp/src/main/elm/Page/ItemDetail/Data.elm @@ -44,4 +44,5 @@ type alias UpdateResult = , cmd : Cmd Msg , sub : Sub Msg , linkTarget : LinkTarget + , removedItem : Maybe String } diff --git a/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm b/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm index 0d0a9a88..1ac23be2 100644 --- a/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm +++ b/modules/webapp/src/main/elm/Page/ItemDetail/Update.elm @@ -46,6 +46,7 @@ update key flags inav settings msg model = ] , sub = Sub.map ItemDetailMsg result.sub , linkTarget = result.linkTarget + , removedItem = result.removedItem } ItemDetailMsg lmsg -> @@ -65,6 +66,7 @@ update key flags inav settings msg model = , cmd = Cmd.batch [ pageSwitch, Cmd.map ItemDetailMsg result.cmd ] , sub = Sub.map ItemDetailMsg result.sub , linkTarget = result.linkTarget + , removedItem = result.removedItem } ItemResp (Ok item) -> @@ -75,10 +77,10 @@ update key flags inav settings msg model = update key flags inav settings (ItemDetailMsg lmsg) model ItemResp (Err _) -> - UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone + UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing ScrollResult _ -> - UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone + UpdateResult model Cmd.none Sub.none Comp.LinkTarget.LinkNone Nothing UiSettingsUpdated -> let