annotate demo/more/grid.urs @ 966:c2fe1dbaceb9

Paging + filtering seemingly working, but runtime system isn't GCing signals properly, so performance goes south quickly
author Adam Chlipala <adamc@hcoop.net>
date Sat, 19 Sep 2009 14:56:03 -0400
parents fbc3a0eef45a
children bb3fc575cfe7
rev   line source
adamc@944 1 con colMeta' = fn (row :: Type) (input :: Type) (filter :: Type) =>
adamc@915 2 {Header : string,
adamc@944 3 Project : row -> transaction input,
adamc@944 4 Update : row -> input -> transaction row,
adamc@944 5 Display : input -> xbody,
adamc@944 6 Edit : input -> xbody,
adamc@944 7 Validate : input -> signal bool,
adamc@944 8 CreateFilter : transaction filter,
adamc@944 9 DisplayFilter : filter -> xbody,
adamc@961 10 Filter : filter -> row -> signal bool,
adamc@961 11 Sort : option (row -> row -> bool)}
adamc@915 12
adamc@944 13 con colMeta = fn (row :: Type) (global_input_filter :: (Type * Type * Type)) =>
adamc@944 14 {Initialize : transaction global_input_filter.1,
adamc@944 15 Handlers : global_input_filter.1 -> colMeta' row global_input_filter.2 global_input_filter.3}
adamc@915 16
adamc@935 17 con aggregateMeta = fn (row :: Type) (acc :: Type) =>
adamc@935 18 {Initial : acc,
adamc@935 19 Step : row -> acc -> acc,
adamc@935 20 Display : acc -> xbody}
adamc@935 21
adamc@915 22 functor Make(M : sig
adamc@915 23 type row
adamc@936 24 type key
adamc@936 25 val keyOf : row -> key
adamc@936 26
adamc@915 27 val list : transaction (list row)
adamc@915 28 val new : transaction row
adamc@936 29 val save : key -> row -> transaction unit
adamc@936 30 val delete : key -> transaction unit
adamc@915 31
adamc@944 32 con cols :: {(Type * Type * Type)}
adamc@915 33 val cols : $(map (colMeta row) cols)
adamc@915 34
adamc@915 35 val folder : folder cols
adamc@935 36
adamc@935 37 con aggregates :: {Type}
adamc@935 38 val aggregates : $(map (aggregateMeta row) aggregates)
adamc@937 39 val aggFolder : folder aggregates
adamc@964 40
adamc@964 41 val pageLength : option int
adamc@915 42 end) : sig
adamc@915 43 type grid
adamc@915 44
adamc@915 45 val grid : transaction grid
adamc@915 46 val sync : grid -> transaction unit
adamc@915 47 val render : grid -> xbody
adamc@940 48
adamc@940 49 val showSelection : grid -> source bool
adamc@940 50 val selection : grid -> signal (list M.row)
adamc@940 51
adamc@915 52 style tabl
adamc@915 53 style tr
adamc@915 54 style th
adamc@915 55 style td
adamc@943 56 style agg
adamc@915 57 end