Mercurial > urweb
annotate demo/crud2.ur @ 2297:6d56080f495c
Fix a read-after-free bug using a timestamp check
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Thu, 19 Nov 2015 13:18:58 -0500 |
parents | 669ac5e9a69e |
children |
rev | line source |
---|---|
adamc@422 | 1 table t : {Id : int, Nam : string, Ready : bool} |
adamc@708 | 2 PRIMARY KEY Id |
adamc@422 | 3 |
adamc@422 | 4 open Crud.Make(struct |
adamc@422 | 5 val tab = t |
adamc@422 | 6 |
adamc@422 | 7 val title = "Are you ready?" |
adamc@422 | 8 |
adamc@422 | 9 val cols = {Nam = Crud.string "Name", |
adamc@422 | 10 Ready = {Nam = "Ready", |
adamc@422 | 11 Show = (fn b => if b then |
adamc@422 | 12 <xml>Ready!</xml> |
adamc@422 | 13 else |
adamc@422 | 14 <xml>Not ready</xml>), |
adamc@823 | 15 Widget = (fn [nm :: Name] => <xml> |
adamc@422 | 16 <select{nm}> |
adamc@422 | 17 <option>Ready</option> |
adamc@422 | 18 <option>Not ready</option> |
adamc@422 | 19 </select> |
adamc@422 | 20 </xml>), |
adamc@823 | 21 WidgetPopulated = (fn [nm :: Name] b => <xml> |
adamc@422 | 22 <select{nm}> |
adamc@422 | 23 <option selected={b}>Ready</option> |
adamc@422 | 24 <option selected={not b}>Not ready</option> |
adamc@422 | 25 </select> |
adamc@422 | 26 </xml>), |
adamc@422 | 27 Parse = (fn s => |
adamc@422 | 28 case s of |
adamc@422 | 29 "Ready" => True |
adamc@422 | 30 | "Not ready" => False |
adamc@422 | 31 | _ => error <xml>Invalid ready/not ready</xml>), |
adamc@422 | 32 Inject = _ |
adamc@422 | 33 } |
adamc@422 | 34 } |
adamc@422 | 35 end) |