Mercurial > urweb
annotate demo/more/grid1.ur @ 915:5e8b6fa5b48f
Start 'more' demo with dbgrid
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Tue, 08 Sep 2009 07:48:57 -0400 |
parents | |
children | 0a91c6ee7eec |
rev | line source |
---|---|
adamc@915 | 1 open Dbgrid |
adamc@915 | 2 |
adamc@915 | 3 table t1 : {Id : int, A : string} |
adamc@915 | 4 PRIMARY KEY Id |
adamc@915 | 5 |
adamc@915 | 6 sequence s |
adamc@915 | 7 table t : {Id : int, A : int, B : string, C : bool, D : int} |
adamc@915 | 8 PRIMARY KEY Id, |
adamc@915 | 9 CONSTRAINT Foreign FOREIGN KEY (D) REFERENCES t1(Id) ON DELETE CASCADE |
adamc@915 | 10 |
adamc@915 | 11 fun page (n, s) = return <xml>A = {[n]}, B = {[s]}</xml> |
adamc@915 | 12 |
adamc@915 | 13 open Make(struct |
adamc@915 | 14 val tab = t |
adamc@915 | 15 con key = [Id = _] |
adamc@915 | 16 |
adamc@915 | 17 val raw = {Id = {New = nextval s, |
adamc@915 | 18 Inj = _}, |
adamc@915 | 19 A = {New = return 0, |
adamc@915 | 20 Inj = _}, |
adamc@915 | 21 B = {New = return "", |
adamc@915 | 22 Inj = _}, |
adamc@915 | 23 C = {New = return False, |
adamc@915 | 24 Inj = _}, |
adamc@915 | 25 D = {New = return 0, |
adamc@915 | 26 Inj = _}} |
adamc@915 | 27 |
adamc@915 | 28 structure F = Direct.Foreign(struct |
adamc@915 | 29 con nm = #Id |
adamc@915 | 30 val tab = t1 |
adamc@915 | 31 fun render r = r.A |
adamc@915 | 32 end) |
adamc@915 | 33 |
adamc@915 | 34 val cols = {Id = Direct.readOnly [#Id] ! "Id" Direct.int, |
adamc@915 | 35 A = Direct.editable [#A] ! "A" Direct.int, |
adamc@915 | 36 B = Direct.editable [#B] ! "B" Direct.string, |
adamc@915 | 37 C = Direct.editable [#C] ! "C" Direct.bool, |
adamc@915 | 38 D = Direct.editable [#D] ! "D" F.meta, |
adamc@915 | 39 DA = computed "2A" (fn r => 2 * r.A), |
adamc@915 | 40 Link = computedHtml "Link" (fn r => <xml><a link={page (r.A, r.B)}>Go</a></xml>)} |
adamc@915 | 41 end) |
adamc@915 | 42 |
adamc@915 | 43 fun main () = |
adamc@915 | 44 grid <- grid; |
adamc@915 | 45 return <xml> |
adamc@915 | 46 <head> |
adamc@915 | 47 <link rel="stylesheet" type="text/css" href="/defun/grid.css"/> |
adamc@915 | 48 </head> |
adamc@915 | 49 <body onload={sync grid}> |
adamc@915 | 50 {render grid} |
adamc@915 | 51 </body> |
adamc@915 | 52 </xml> |