mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-23 10:58:26 +00:00
87 lines
2.0 KiB
Elm
87 lines
2.0 KiB
Elm
module Data.CustomFieldChange exposing
|
|
( CustomFieldChange(..)
|
|
, CustomFieldValueCollect
|
|
, collectValues
|
|
, emptyCollect
|
|
, fromItemValues
|
|
, isValueChange
|
|
, toFieldValues
|
|
)
|
|
|
|
import Api.Model.CustomField exposing (CustomField)
|
|
import Api.Model.CustomFieldValue exposing (CustomFieldValue)
|
|
import Api.Model.ItemFieldValue exposing (ItemFieldValue)
|
|
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
|
|
|
|
|
|
fromItemValues : List { v | id : String, value : String } -> CustomFieldValueCollect
|
|
fromItemValues values =
|
|
List.map (\e -> ( e.id, e.value )) values
|
|
|> Dict.fromList
|
|
|> CustomFieldValueCollect
|