From db724bd8cdb5cc0627171ab25db2b05a82554ad3 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Thu, 17 Sep 2009 14:27:00 -0400 Subject: Make filter argument to render, not create --- demo/more/grid.ur | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'demo/more/grid.ur') diff --git a/demo/more/grid.ur b/demo/more/grid.ur index 424c3b6f..6dd0543a 100644 --- a/demo/more/grid.ur +++ b/demo/more/grid.ur @@ -80,19 +80,13 @@ functor Make(M : sig (meta.Handlers state).CreateFilter) [_] M.folder M.cols cols; - rows <- Dlist.create {Filter = fn all => - row <- signal all.Row; - foldR3 [colMeta M.row] [fst3] [thd3] [fn _ => M.row -> signal bool] - (fn [nm :: Name] [p :: (Type * Type * Type)] - [rest :: {(Type * Type * Type)}] [[nm] ~ rest] - meta state filter combinedFilter row => - previous <- combinedFilter row; - this <- (meta.Handlers state).Filter filter row; - return (previous && this)) - (fn _ => return True) - [_] M.folder M.cols cols filters row}; + rows <- Dlist.create; sel <- source False; - return {Cols = cols, Rows = rows, Selection = sel, Filters = filters} + + return {Cols = cols, + Rows = rows, + Selection = sel, + Filters = filters} fun sync {Cols = cols, Rows = rows, ...} = Dlist.clear rows; @@ -207,7 +201,19 @@ functor Make(M : sig ) [_] M.folder grid.Cols M.cols cols)}/> - end) grid.Rows} + end) + {Filter = fn all => + row <- signal all.Row; + foldR3 [colMeta M.row] [fst3] [thd3] [fn _ => M.row -> signal bool] + (fn [nm :: Name] [p :: (Type * Type * Type)] + [rest :: {(Type * Type * Type)}] [[nm] ~ rest] + meta state filter combinedFilter row => + previous <- combinedFilter row; + this <- (meta.Handlers state).Filter filter row; + return (previous && this)) + (fn _ => return True) + [_] M.folder M.cols grid.Cols grid.Filters row} + grid.Rows} Monad.mapR2 [aggregateMeta M.row] [id] [id] (fn [nm :: Name] [t :: Type] meta acc => -- cgit v1.2.3