diff --git a/src/cg/layout.cg b/src/cg/layout.cg index dbb9119..5fe8237 100644 --- a/src/cg/layout.cg +++ b/src/cg/layout.cg @@ -55,4 +55,34 @@ align = hAlign vAlign w h child \ h = h }; + tableView = list \ w h \ + firstRow = unwrapOr "{}" (nth 0 list); + + columnNames = keys firstRow; + + colW = w / (len columnNames); + rowH = 24; + + rowFromRecord = r \ + (row { w = w, h = rowH } + (map (cn \ + cellValue = display (unwrapOr "" (getField cn r)); + Fixed 100 (cw ch \ (sizedText cellValue).ui) + ) columnNames) + ).ui; + + headerRow = (row { w = w, h = rowH } + (map (cn \ + Fixed colW (cw ch \ (sizedText cn).ui) + ) columnNames) + ).ui; + + bodyRows = map (r \ Fixed rowH (cw cch \ rowFromRecord r)) list; + + (col { w = 500, h = 500 } [ + Fixed rowH (cw ch \ headerRow), + ...bodyRows + ]).ui; + + @