support optional fields
This commit is contained in:
@@ -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))
|
||||
)
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user