Add lamassu-admin-elm to this repo (#185)
This commit is contained in:
parent
5ee7e40872
commit
f4fc9d6328
134 changed files with 28171 additions and 83 deletions
95
lamassu-admin-elm/src/FieldSet/Rest.elm
Normal file
95
lamassu-admin-elm/src/FieldSet/Rest.elm
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
module FieldSet.Rest exposing (..)
|
||||
|
||||
import Json.Decode as D
|
||||
import Json.Encode as E
|
||||
import FieldSet.Types exposing (..)
|
||||
|
||||
|
||||
fieldPasswordDecoder : Bool -> FieldValue
|
||||
fieldPasswordDecoder present =
|
||||
if present then
|
||||
FieldPassword PasswordHidden
|
||||
else
|
||||
FieldPassword PasswordEmpty
|
||||
|
||||
|
||||
badInt : D.Decoder Int
|
||||
badInt =
|
||||
D.oneOf [ D.int ]
|
||||
|
||||
|
||||
fieldValueDecoder : String -> D.Decoder FieldValue
|
||||
fieldValueDecoder fieldType =
|
||||
case fieldType of
|
||||
"string" ->
|
||||
D.map FieldString D.string
|
||||
|
||||
"password" ->
|
||||
D.map fieldPasswordDecoder D.bool
|
||||
|
||||
"integer" ->
|
||||
D.map FieldInteger badInt
|
||||
|
||||
_ ->
|
||||
D.fail ("Unsupported field type: " ++ fieldType)
|
||||
|
||||
|
||||
fieldDecoder : D.Decoder Field
|
||||
fieldDecoder =
|
||||
(D.field "fieldType" D.string)
|
||||
|> D.andThen
|
||||
(\fieldType ->
|
||||
D.map6 Field
|
||||
(D.field "code" D.string)
|
||||
(D.field "display" D.string)
|
||||
(D.oneOf [ D.field "placeholder" D.string, D.succeed "" ])
|
||||
(D.field "required" D.bool)
|
||||
(D.field "value" (fieldValueDecoder fieldType))
|
||||
(D.field "value" (fieldValueDecoder fieldType))
|
||||
)
|
||||
|
||||
|
||||
encodeFieldValue : FieldValue -> E.Value
|
||||
encodeFieldValue fieldValue =
|
||||
case fieldValue of
|
||||
FieldString value ->
|
||||
E.string value
|
||||
|
||||
FieldPassword value ->
|
||||
case value of
|
||||
Password s ->
|
||||
E.string s
|
||||
|
||||
_ ->
|
||||
E.null
|
||||
|
||||
FieldInteger value ->
|
||||
E.int value
|
||||
|
||||
|
||||
maybeString : Maybe String -> E.Value
|
||||
maybeString maybeString =
|
||||
case maybeString of
|
||||
Nothing ->
|
||||
E.null
|
||||
|
||||
Just s ->
|
||||
E.string s
|
||||
|
||||
|
||||
encodeField : Field -> Maybe E.Value
|
||||
encodeField field =
|
||||
if isDirty field then
|
||||
Just
|
||||
(E.object
|
||||
[ ( "code", E.string field.code )
|
||||
, ( "value", encodeFieldValue field.value )
|
||||
]
|
||||
)
|
||||
else
|
||||
Nothing
|
||||
|
||||
|
||||
isDirty : Field -> Bool
|
||||
isDirty field =
|
||||
field.value /= field.loadedValue
|
||||
Loading…
Add table
Add a link
Reference in a new issue