add table to list view

This commit is contained in:
Alexander Foremny
2024-06-04 15:42:33 +02:00
parent ed753b0410
commit d5f3f2333a
3 changed files with 49 additions and 7 deletions

View File

@@ -147,6 +147,23 @@ header section {
margin-left: auto; } margin-left: auto; }
header section:first-child { header section:first-child {
margin-left: 0; } margin-left: 0; }
/* table layout */
th, td {
text-align: left;
padding: 0 16px;
line-height: 52px;
text-overflow: ellipsis;
}
/* table borders */
table {
border-collapse: collapse;
border-left: 1px solid gray;
border-right: 1px solid gray; }
th, td {
border-top: 1px solid gray;
border-bottom: 1px solid gray; }
|] |]
) )
] ]

View File

@@ -48,8 +48,8 @@ updateModel (FormSubmitted output) m =
viewModel :: Model -> View Action viewModel :: Model -> View Action
viewModel m = viewModel m =
div_ [] $ div_ [] $
[ viewSchema m.schema, [ schemaTable m.schema m.posts,
viewPosts m.posts, viewSchema m.schema,
viewForm m.input m.schema, viewForm m.input m.schema,
viewInput m.input viewInput m.input
] ]
@@ -63,8 +63,3 @@ viewForm input =
viewInput :: A.Value -> View Action viewInput :: A.Value -> View Action
viewInput input = viewInput input =
pre_ [] [text (toMisoString (A.encode input))] pre_ [] [text (toMisoString (A.encode input))]
viewPosts :: [A.Value] -> View Action
viewPosts posts = ol_ [] (viewPost <$> posts)
where
viewPost post = pre_ [] [text (toMisoString (A.encode post))]

View File

@@ -4,6 +4,7 @@
module Schema module Schema
( Schema, ( Schema,
viewSchema, viewSchema,
schemaTable,
schemaForm, schemaForm,
) )
where where
@@ -65,6 +66,35 @@ viewSchema schema =
) )
<$> (M.toList properties) <$> (M.toList properties)
schemaTable :: Schema -> [A.Value] -> View action
schemaTable schema values =
table_ [] [thead, tbody]
where
thead =
thead_ [] $
case schema.type_ of
Object properties ->
[ tr_ [] $
[ th_ [] [text (toMisoString k)]
| k <- M.keys properties
]
]
tbody = tbody_ [] $
case schema.type_ of
Object properties ->
[ tr_
[]
[ td_ [] $
[ text $
case getO (AK.fromString k) value of
A.String s -> toMisoString s
value -> toMisoString (A.encode value)
]
| k <- M.keys properties
]
| value <- values
]
schemaForm :: Schema -> F.Form A.Value A.Value schemaForm :: Schema -> F.Form A.Value A.Value
schemaForm schema = schemaForm schema =
fmap mergeJson . sequence $ fmap mergeJson . sequence $