mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 10:58:26 +00:00
Fix and enhance custom-multi-input field
This commit is contained in:
77
modules/webapp/src/main/elm/Data/CustomFieldChange.elm
Normal file
77
modules/webapp/src/main/elm/Data/CustomFieldChange.elm
Normal file
@ -0,0 +1,77 @@
|
||||
module Data.CustomFieldChange exposing
|
||||
( CustomFieldChange(..)
|
||||
, CustomFieldValueCollect
|
||||
, collectValues
|
||||
, emptyCollect
|
||||
, isValueChange
|
||||
, toFieldValues
|
||||
)
|
||||
|
||||
import Api.Model.CustomField exposing (CustomField)
|
||||
import Api.Model.CustomFieldValue exposing (CustomFieldValue)
|
||||
import Dict exposing (Dict)
|
||||
|
||||
|
||||
type CustomFieldChange
|
||||
= NoFieldChange
|
||||
| FieldValueRemove CustomField
|
||||
| FieldValueChange CustomField String
|
||||
| FieldCreateNew
|
||||
|
||||
|
||||
type CustomFieldValueCollect
|
||||
= CustomFieldValueCollect (Dict String String)
|
||||
|
||||
|
||||
emptyCollect : CustomFieldValueCollect
|
||||
emptyCollect =
|
||||
CustomFieldValueCollect Dict.empty
|
||||
|
||||
|
||||
collectValues :
|
||||
CustomFieldChange
|
||||
-> CustomFieldValueCollect
|
||||
-> CustomFieldValueCollect
|
||||
collectValues change collector =
|
||||
let
|
||||
dict =
|
||||
case collector of
|
||||
CustomFieldValueCollect d ->
|
||||
d
|
||||
in
|
||||
case change of
|
||||
NoFieldChange ->
|
||||
collector
|
||||
|
||||
FieldValueRemove f ->
|
||||
CustomFieldValueCollect (Dict.remove f.id dict)
|
||||
|
||||
FieldValueChange f v ->
|
||||
CustomFieldValueCollect (Dict.insert f.id v dict)
|
||||
|
||||
FieldCreateNew ->
|
||||
collector
|
||||
|
||||
|
||||
toFieldValues : CustomFieldValueCollect -> List CustomFieldValue
|
||||
toFieldValues dict =
|
||||
case dict of
|
||||
CustomFieldValueCollect d ->
|
||||
Dict.toList d
|
||||
|> List.map (\( k, v ) -> CustomFieldValue k v)
|
||||
|
||||
|
||||
isValueChange : CustomFieldChange -> Bool
|
||||
isValueChange change =
|
||||
case change of
|
||||
NoFieldChange ->
|
||||
False
|
||||
|
||||
FieldValueRemove _ ->
|
||||
True
|
||||
|
||||
FieldValueChange _ _ ->
|
||||
True
|
||||
|
||||
FieldCreateNew ->
|
||||
False
|
Reference in New Issue
Block a user