Show concerning/correspond person exclusively in dropdowns

Now a person that is not marked as "concerning only" is treated as
"correspondent only". The options of all dropdown fields are now
restricted to those subsets.

Issue: #332
This commit is contained in:
Eike Kettner
2020-11-27 23:13:37 +01:00
parent 3fabe0a582
commit 1091a4fbdc
4 changed files with 57 additions and 18 deletions

View File

@ -15,6 +15,7 @@ import Api.Model.FolderItem exposing (FolderItem)
import Api.Model.FolderList exposing (FolderList)
import Api.Model.IdName exposing (IdName)
import Api.Model.ItemProposals exposing (ItemProposals)
import Api.Model.PersonList exposing (PersonList)
import Api.Model.ReferenceList exposing (ReferenceList)
import Api.Model.Tag exposing (Tag)
import Api.Model.TagList exposing (TagList)
@ -102,7 +103,7 @@ type Msg
| ConcEquipMsg (Comp.Dropdown.Msg IdName)
| GetTagsResp (Result Http.Error TagList)
| GetOrgResp (Result Http.Error ReferenceList)
| GetPersonResp (Result Http.Error ReferenceList)
| GetPersonResp (Result Http.Error PersonList)
| GetEquipResp (Result Http.Error EquipmentList)
| GetFolderResp (Result Http.Error FolderList)
| CustomFieldMsg Comp.CustomFieldMultiInput.Msg
@ -172,7 +173,7 @@ loadModel flags =
Cmd.batch
[ Api.getTags flags "" GetTagsResp
, Api.getOrgLight flags GetOrgResp
, Api.getPersonsLight flags GetPersonResp
, Api.getPersons flags "" GetPersonResp
, Api.getEquipments flags "" GetEquipResp
, Api.getFolders flags "" False GetFolderResp
, Cmd.map CustomFieldMsg (Comp.CustomFieldMultiInput.initCmd flags)
@ -422,14 +423,20 @@ update flags msg model =
GetPersonResp (Ok ps) ->
let
opts =
Comp.Dropdown.SetOptions ps.items
( conc, corr ) =
List.partition .concerning ps.items
concRefs =
List.map (\e -> IdName e.id e.name) conc
corrRefs =
List.map (\e -> IdName e.id e.name) corr
res1 =
update flags (CorrPersonMsg opts) model
update flags (CorrPersonMsg (Comp.Dropdown.SetOptions corrRefs)) model
res2 =
update flags (ConcPersonMsg opts) res1.model
update flags (ConcPersonMsg (Comp.Dropdown.SetOptions concRefs)) res1.model
in
res2

View File

@ -20,6 +20,7 @@ import Api.Model.FolderList exposing (FolderList)
import Api.Model.IdName exposing (IdName)
import Api.Model.ItemDetail exposing (ItemDetail)
import Api.Model.ItemProposals exposing (ItemProposals)
import Api.Model.PersonList exposing (PersonList)
import Api.Model.ReferenceList exposing (ReferenceList)
import Api.Model.SentMails exposing (SentMails)
import Api.Model.Tag exposing (Tag)
@ -221,7 +222,7 @@ type Msg
| ConcEquipMsg (Comp.Dropdown.Msg IdName)
| GetTagsResp (Result Http.Error TagList)
| GetOrgResp (Result Http.Error ReferenceList)
| GetPersonResp (Result Http.Error ReferenceList)
| GetPersonResp (Result Http.Error PersonList)
| GetEquipResp (Result Http.Error EquipmentList)
| SetName String
| SetNotes String

View File

@ -606,14 +606,30 @@ update key flags inav settings msg model =
GetPersonResp (Ok ps) ->
let
opts =
Comp.Dropdown.SetOptions ps.items
( conc, corr ) =
List.partition .concerning ps.items
concRefs =
List.map (\e -> IdName e.id e.name) conc
corrRefs =
List.map (\e -> IdName e.id e.name) corr
res1 =
update key flags inav settings (CorrPersonMsg opts) model
update key
flags
inav
settings
(CorrPersonMsg (Comp.Dropdown.SetOptions corrRefs))
model
res2 =
update key flags inav settings (ConcPersonMsg opts) res1.model
update key
flags
inav
settings
(ConcPersonMsg (Comp.Dropdown.SetOptions concRefs))
res1.model
in
{ model = res2.model
, cmd = Cmd.batch [ res1.cmd, res2.cmd ]
@ -1410,7 +1426,7 @@ getOptions flags =
Cmd.batch
[ Api.getTags flags "" GetTagsResp
, Api.getOrgLight flags GetOrgResp
, Api.getPersonsLight flags GetPersonResp
, Api.getPersons flags "" GetPersonResp
, Api.getEquipments flags "" GetEquipResp
, Api.getFolders flags "" False GetFolderResp
]