support optional fields

This commit is contained in:
Alexander Foremny
2024-06-06 22:42:44 +02:00
parent 612da78d17
commit b1a4822d59
4 changed files with 37 additions and 10 deletions

View File

@@ -10,6 +10,7 @@ where
import Api
import Data.Aeson qualified as A
import Data.Aeson.KeyMap qualified as AM
import Data.ByteString.Lazy.UTF8 as LB
import Data.Maybe
import Form qualified as F
import Miso
@@ -52,7 +53,8 @@ viewModel m = do
let input = (fromMaybe (A.Object AM.empty) m.input)
div_ [] $
[ viewForm input m.schema,
viewInput input
viewInput input,
viewOutput input m.schema
]
viewForm :: A.Value -> Schema -> View Action
@@ -64,3 +66,13 @@ viewForm input =
viewInput :: A.Value -> View Action
viewInput input =
pre_ [] [text (toMisoString (A.encode input))]
viewOutput :: A.Value -> Schema -> View Action
viewOutput input schema =
pre_ [] $
[ text $
toMisoString
( either ("Left " <>) (("Right " <>) . LB.toString) $
(A.encode <$> ((schemaForm schema).fill input))
)
]