diff demo/more/dbgrid.ur @ 935:2422360c78a3

Dropped in initial aggregate types
author Adam Chlipala <adamc@hcoop.net>
date Tue, 15 Sep 2009 09:40:51 -0400
parents 51bc7681c47e
children 6966d98c80b5
line wrap: on
line diff
--- a/demo/more/dbgrid.ur	Mon Sep 14 19:04:38 2009 -0400
+++ b/demo/more/dbgrid.ur	Tue Sep 15 09:40:51 2009 -0400
@@ -14,6 +14,11 @@
                  {Initialize : transaction global_t.1,
                   Handlers : global_t.1 -> colMeta' row global_t.2}
 
+con aggregateMeta = fn (row :: {Type}) (acc :: Type) =>
+                       {Initial : acc,
+                        Step : $row -> acc -> acc,
+                        Display : acc -> xbody}
+
 structure Direct = struct
     con metaBase = fn actual_input :: (Type * Type) =>
                   {Display : actual_input.2 -> xbody,
@@ -243,6 +248,9 @@
                  val keyFolder : folder key
                  val rowFolder : folder row
                  val colsFolder : folder cols
+
+                 con aggregates :: {Type}
+                 val aggregates : $(map (aggregateMeta (key ++ row)) aggregates)
              end) = struct
     open Grid.Make(struct
                        val list = query (SELECT * FROM {{M.tab}} AS T) (fn r rs => return (r.T :: rs)) []
@@ -285,5 +293,7 @@
                        val cols = M.cols
 
                        val folder = M.colsFolder
+
+                       val aggregates = M.aggregates
                    end)
 end