diff --git a/modules/webapp/src/main/elm/Api.elm b/modules/webapp/src/main/elm/Api.elm index 77ee3c20..53a9982a 100644 --- a/modules/webapp/src/main/elm/Api.elm +++ b/modules/webapp/src/main/elm/Api.elm @@ -10,6 +10,7 @@ module Api exposing , changeFolderName , changePassword , checkCalEvent + , confirmMultiple , createImapSettings , createMailSettings , createNewFolder @@ -107,6 +108,7 @@ module Api exposing , startReIndex , submitNotifyDueItems , toggleTags + , unconfirmMultiple , updateNotifyDueItems , updateScanMailbox , upload @@ -1284,6 +1286,34 @@ getJobQueueStateTask flags = --- Item (Mulit Edit) +confirmMultiple : + Flags + -> Set String + -> (Result Http.Error BasicResult -> msg) + -> Cmd msg +confirmMultiple flags ids receive = + Http2.authPut + { url = flags.config.baseUrl ++ "/api/v1/sec/items/confirm" + , account = getAccount flags + , body = Http.jsonBody (Api.Model.IdList.encode (IdList (Set.toList ids))) + , expect = Http.expectJson receive Api.Model.BasicResult.decoder + } + + +unconfirmMultiple : + Flags + -> Set String + -> (Result Http.Error BasicResult -> msg) + -> Cmd msg +unconfirmMultiple flags ids receive = + Http2.authPut + { url = flags.config.baseUrl ++ "/api/v1/sec/items/unconfirm" + , account = getAccount flags + , body = Http.jsonBody (Api.Model.IdList.encode (IdList (Set.toList ids))) + , expect = Http.expectJson receive Api.Model.BasicResult.decoder + } + + setTagsMultiple : Flags -> ItemsAndRefs diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/EditMenu.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/EditMenu.elm index 561f1ef8..dd707a0e 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/EditMenu.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/EditMenu.elm @@ -81,6 +81,7 @@ type Msg | UpdateThrottle | RemoveDueDate | RemoveDate + | ConfirmMsg Bool | FolderDropdownMsg (Comp.Dropdown.Msg IdName) | TagDropdownMsg (Comp.Dropdown.Msg Tag) | DirDropdownMsg (Comp.Dropdown.Msg Direction) @@ -201,6 +202,9 @@ resultNone model = update : Flags -> Msg -> Model -> UpdateResult update flags msg model = case msg of + ConfirmMsg flag -> + resultNoCmd (ConfirmChange flag) model + TagDropdownMsg m -> let ( m2, _ ) = @@ -553,7 +557,26 @@ renderEditForm cfg settings model = in div [ class cfg.menuClass ] [ div [ class "ui form warning" ] - [ optional [ Data.Fields.Tag ] <| + [ div [ class "field" ] + [ div + [ class "ui fluid buttons" + ] + [ button + [ class "ui primary button" + , onClick (ConfirmMsg True) + ] + [ text "Confirm" + ] + , div [ class "or" ] [] + , button + [ class "ui secondary button" + , onClick (ConfirmMsg False) + ] + [ text "Unconfirm" + ] + ] + ] + , optional [ Data.Fields.Tag ] <| div [ class "field" ] [ label [] [ Icons.tagsIcon "grey" diff --git a/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm b/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm index 7d9c1c85..802a24b1 100644 --- a/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm +++ b/modules/webapp/src/main/elm/Comp/ItemDetail/FormChange.elm @@ -30,6 +30,7 @@ type FormChange | ItemDateChange (Maybe Int) | DueDateChange (Maybe Int) | NameChange String + | ConfirmChange Bool multiUpdate : @@ -114,5 +115,12 @@ multiUpdate flags ids change receive = in Api.setConcEquipmentMultiple flags data receive + ConfirmChange flag -> + if flag then + Api.confirmMultiple flags ids receive + + else + Api.unconfirmMultiple flags ids receive + NoFormChange -> Cmd.none