Reset hidden fields on confirm

On confirm hidden fields are cleared, so that no "confirmed"
information is attached that the user has never seen.
This commit is contained in:
Eike Kettner 2020-09-21 14:38:40 +02:00
parent ed1d13e712
commit a5bc6b53a9
4 changed files with 97 additions and 21 deletions

View File

@ -192,7 +192,13 @@ updateItemDetail lmsg model =
Page.Home.Data.itemNav model.itemDetailModel.detail.item.id model.homeModel Page.Home.Data.itemNav model.itemDetailModel.detail.item.id model.homeModel
( lm, lc, ls ) = ( lm, lc, ls ) =
Page.ItemDetail.Update.update model.key model.flags inav.next lmsg model.itemDetailModel Page.ItemDetail.Update.update
model.key
model.flags
inav.next
model.uiSettings
lmsg
model.itemDetailModel
in in
( { model ( { model
| itemDetailModel = lm | itemDetailModel = lm

View File

@ -24,7 +24,7 @@ emptyModel =
Comp.ItemDetail.Model.emptyModel Comp.ItemDetail.Model.emptyModel
update : Nav.Key -> Flags -> Maybe String -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) update : Nav.Key -> Flags -> Maybe String -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update = update =
Comp.ItemDetail.Update.update Comp.ItemDetail.Update.update

View File

@ -31,7 +31,9 @@ import Comp.PersonForm
import Comp.SentMails import Comp.SentMails
import Comp.YesNoDimmer import Comp.YesNoDimmer
import Data.Direction exposing (Direction) import Data.Direction exposing (Direction)
import Data.Fields exposing (Field)
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings)
import DatePicker import DatePicker
import Dict import Dict
import Html exposing (..) import Html exposing (..)
@ -125,10 +127,11 @@ type Msg
| StartEditCorrOrgModal | StartEditCorrOrgModal
| StartEditPersonModal (Comp.Dropdown.Model IdName) | StartEditPersonModal (Comp.Dropdown.Model IdName)
| StartEditEquipModal | StartEditEquipModal
| ResetHiddenMsg Field (Result Http.Error BasicResult)
update : Nav.Key -> Flags -> Maybe String -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) update : Nav.Key -> Flags -> Maybe String -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update key flags next msg model = update key flags next settings msg model =
case msg of case msg of
Init -> Init ->
let let
@ -152,12 +155,18 @@ update key flags next msg model =
SetItem item -> SetItem item ->
let let
( m1, c1, s1 ) = ( m1, c1, s1 ) =
update key flags next (TagDropdownMsg (Comp.Dropdown.SetSelection item.tags)) model update key
flags
next
settings
(TagDropdownMsg (Comp.Dropdown.SetSelection item.tags))
model
( m2, c2, s2 ) = ( m2, c2, s2 ) =
update key update key
flags flags
next next
settings
(DirDropdownMsg (DirDropdownMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(Data.Direction.fromString item.direction (Data.Direction.fromString item.direction
@ -172,6 +181,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(OrgDropdownMsg (OrgDropdownMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.corrOrg (item.corrOrg
@ -186,6 +196,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(CorrPersonMsg (CorrPersonMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.corrPerson (item.corrPerson
@ -200,6 +211,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(ConcPersonMsg (ConcPersonMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.concPerson (item.concPerson
@ -214,6 +226,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(ConcEquipMsg (ConcEquipMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.concEquipment (item.concEquipment
@ -225,12 +238,13 @@ update key flags next msg model =
m5 m5
( m7, c7, s7 ) = ( m7, c7, s7 ) =
update key flags next AddFilesReset m6 update key flags next settings AddFilesReset m6
( m8, c8, s8 ) = ( m8, c8, s8 ) =
update key update key
flags flags
next next
settings
(FolderDropdownMsg (FolderDropdownMsg
(Comp.Dropdown.SetSelection (Comp.Dropdown.SetSelection
(item.folder (item.folder
@ -477,7 +491,11 @@ update key flags next msg model =
noSub ( model, setNotes flags model ) noSub ( model, setNotes flags model )
ConfirmItem -> ConfirmItem ->
noSub ( model, Api.setConfirmed flags model.item.id SaveResp ) let
resetCmds =
resetHiddenFields settings flags model.item.id ResetHiddenMsg
in
noSub ( model, Cmd.batch (Api.setConfirmed flags model.item.id SaveResp :: resetCmds) )
UnconfirmItem -> UnconfirmItem ->
noSub ( model, Api.setUnconfirmed flags model.item.id SaveResp ) noSub ( model, Api.setUnconfirmed flags model.item.id SaveResp )
@ -535,7 +553,7 @@ update key flags next msg model =
noSub ( { model | deleteItemConfirm = cm }, cmd ) noSub ( { model | deleteItemConfirm = cm }, cmd )
RequestDelete -> RequestDelete ->
update key flags next (DeleteItemConfirm Comp.YesNoDimmer.activate) model update key flags next settings (DeleteItemConfirm Comp.YesNoDimmer.activate) model
SetCorrOrgSuggestion idname -> SetCorrOrgSuggestion idname ->
noSub ( model, setCorrOrg flags model (Just idname) ) noSub ( model, setCorrOrg flags model (Just idname) )
@ -574,7 +592,7 @@ update key flags next msg model =
|> List.map mkIdName |> List.map mkIdName
|> Comp.Dropdown.SetOptions |> Comp.Dropdown.SetOptions
in in
update key flags next (FolderDropdownMsg opts) model_ update key flags next settings (FolderDropdownMsg opts) model_
GetFolderResp (Err _) -> GetFolderResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -585,7 +603,7 @@ update key flags next msg model =
Comp.Dropdown.SetOptions tags.items Comp.Dropdown.SetOptions tags.items
( m1, c1, s1 ) = ( m1, c1, s1 ) =
update key flags next (TagDropdownMsg tagList) model update key flags next settings (TagDropdownMsg tagList) model
in in
( m1, c1, s1 ) ( m1, c1, s1 )
@ -597,7 +615,7 @@ update key flags next msg model =
opts = opts =
Comp.Dropdown.SetOptions orgs.items Comp.Dropdown.SetOptions orgs.items
in in
update key flags next (OrgDropdownMsg opts) model update key flags next settings (OrgDropdownMsg opts) model
GetOrgResp (Err _) -> GetOrgResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -608,10 +626,10 @@ update key flags next msg model =
Comp.Dropdown.SetOptions ps.items Comp.Dropdown.SetOptions ps.items
( m1, c1, s1 ) = ( m1, c1, s1 ) =
update key flags next (CorrPersonMsg opts) model update key flags next settings (CorrPersonMsg opts) model
( m2, c2, s2 ) = ( m2, c2, s2 ) =
update key flags next (ConcPersonMsg opts) m1 update key flags next settings (ConcPersonMsg opts) m1
in in
( m2, Cmd.batch [ c1, c2 ], Sub.batch [ s1, s2 ] ) ( m2, Cmd.batch [ c1, c2 ], Sub.batch [ s1, s2 ] )
@ -626,7 +644,7 @@ update key flags next msg model =
equips.items equips.items
) )
in in
update key flags next (ConcEquipMsg opts) model update key flags next settings (ConcEquipMsg opts) model
GetEquipResp (Err _) -> GetEquipResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -657,7 +675,7 @@ update key flags next msg model =
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
GetItemResp (Ok item) -> GetItemResp (Ok item) ->
update key flags next (SetItem item) model update key flags next settings (SetItem item) model
GetItemResp (Err _) -> GetItemResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -852,7 +870,7 @@ update key flags next msg model =
DeleteAttachResp (Ok res) -> DeleteAttachResp (Ok res) ->
if res.success then if res.success then
update key flags next ReloadItem model update key flags next settings ReloadItem model
else else
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
@ -864,6 +882,7 @@ update key flags next msg model =
update key update key
flags flags
next next
settings
(DeleteAttachConfirm id Comp.YesNoDimmer.activate) (DeleteAttachConfirm id Comp.YesNoDimmer.activate)
model model
@ -1235,6 +1254,9 @@ update key flags next msg model =
EditAttachNameResp (Err _) -> EditAttachNameResp (Err _) ->
noSub ( model, Cmd.none ) noSub ( model, Cmd.none )
ResetHiddenMsg _ _ ->
noSub ( model, Cmd.none )
--- Helper --- Helper
@ -1372,3 +1394,45 @@ setErrored model fileid =
noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg ) noSub : ( Model, Cmd Msg ) -> ( Model, Cmd Msg, Sub Msg )
noSub ( m, c ) = noSub ( m, c ) =
( m, c, Sub.none ) ( m, c, Sub.none )
resetField : Flags -> String -> (Field -> Result Http.Error BasicResult -> msg) -> Field -> Cmd msg
resetField flags item tagger field =
case field of
Data.Fields.Tag ->
Api.setTags flags item Api.Model.ReferenceList.empty (tagger Data.Fields.Tag)
Data.Fields.Folder ->
Api.setFolder flags item Api.Model.OptionalId.empty (tagger Data.Fields.Folder)
Data.Fields.CorrOrg ->
Api.setCorrOrg flags item Api.Model.OptionalId.empty (tagger Data.Fields.CorrOrg)
Data.Fields.CorrPerson ->
Api.setCorrPerson flags item Api.Model.OptionalId.empty (tagger Data.Fields.CorrPerson)
Data.Fields.ConcPerson ->
Api.setConcPerson flags item Api.Model.OptionalId.empty (tagger Data.Fields.ConcPerson)
Data.Fields.ConcEquip ->
Api.setConcEquip flags item Api.Model.OptionalId.empty (tagger Data.Fields.ConcEquip)
Data.Fields.Date ->
Api.setItemDate flags item Api.Model.OptionalDate.empty (tagger Data.Fields.Date)
Data.Fields.DueDate ->
Api.setItemDueDate flags item Api.Model.OptionalDate.empty (tagger Data.Fields.DueDate)
Data.Fields.Direction ->
Cmd.none
resetHiddenFields :
UiSettings
-> Flags
-> String
-> (Field -> Result Http.Error BasicResult -> msg)
-> List (Cmd msg)
resetHiddenFields settings flags item tagger =
List.filter (Data.UiSettings.fieldHidden settings) Data.Fields.all
|> List.map (resetField flags item tagger)

View File

@ -5,18 +5,24 @@ import Browser.Navigation as Nav
import Comp.ItemDetail import Comp.ItemDetail
import Comp.ItemDetail.Update import Comp.ItemDetail.Update
import Data.Flags exposing (Flags) import Data.Flags exposing (Flags)
import Data.UiSettings exposing (UiSettings)
import Page.ItemDetail.Data exposing (Model, Msg(..)) import Page.ItemDetail.Data exposing (Model, Msg(..))
import Scroll import Scroll
import Task import Task
update : Nav.Key -> Flags -> Maybe String -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg ) update : Nav.Key -> Flags -> Maybe String -> UiSettings -> Msg -> Model -> ( Model, Cmd Msg, Sub Msg )
update key flags next msg model = update key flags next settings msg model =
case msg of case msg of
Init id -> Init id ->
let let
( lm, lc, ls ) = ( lm, lc, ls ) =
Comp.ItemDetail.update key flags next Comp.ItemDetail.Update.Init model.detail Comp.ItemDetail.update key
flags
next
settings
Comp.ItemDetail.Update.Init
model.detail
task = task =
Scroll.scroll "main-content" 0 0 0 0 Scroll.scroll "main-content" 0 0 0 0
@ -33,7 +39,7 @@ update key flags next msg model =
ItemDetailMsg lmsg -> ItemDetailMsg lmsg ->
let let
( lm, lc, ls ) = ( lm, lc, ls ) =
Comp.ItemDetail.update key flags next lmsg model.detail Comp.ItemDetail.update key flags next settings lmsg model.detail
in in
( { model | detail = lm } ( { model | detail = lm }
, Cmd.map ItemDetailMsg lc , Cmd.map ItemDetailMsg lc
@ -45,7 +51,7 @@ update key flags next msg model =
lmsg = lmsg =
Comp.ItemDetail.Update.SetItem item Comp.ItemDetail.Update.SetItem item
in in
update key flags next (ItemDetailMsg lmsg) model update key flags next settings (ItemDetailMsg lmsg) model
ItemResp (Err _) -> ItemResp (Err _) ->
( model, Cmd.none, Sub.none ) ( model, Cmd.none, Sub.none )