Mercurial > urweb
diff demo/more/bid.ur @ 1023:e46227efcbba
Bidding interface
author | Adam Chlipala <adamc@hcoop.net> |
---|---|
date | Sun, 01 Nov 2009 10:20:20 -0500 |
parents | 4de35df3d545 |
children | 7facf72aaf0a |
line wrap: on
line diff
--- a/demo/more/bid.ur Sat Oct 31 15:51:50 2009 -0400 +++ b/demo/more/bid.ur Sun Nov 01 10:20:20 2009 -0500 @@ -7,22 +7,51 @@ table assignment : {User : userId, Paper : paperId} PRIMARY KEY (User, Paper) - fun isOnPc id = - ro <- oneOrNoRows1 (SELECT user.OnPc - FROM user - WHERE user.Id = {[id]}); - return (case ro of - None => False - | Some r => r.OnPc) - val linksForPc = let - fun bid () = - me <- getLogin; - return <xml>Bidding time!</xml> + fun yourBids () = + me <- getPcLogin; + ps <- queryX (SELECT paper.Id, paper.{{M.paper}}, bid.Interest + FROM paper LEFT JOIN bid ON bid.Paper = paper.Id + AND bid.User = {[me.Id]}) + (fn r => <xml><entry> + <hidden{#Paper} value={show r.Paper.Id}/> + {useMore <xml><tr> + <td>{summarizePaper (r.Paper -- #Id)}</td> + <td><select{#Bid}> + {Select.selectChar ((#"-", "No") :: (#"_", "Maybe") :: (#"+", "Yes") :: []) + r.Bid.Interest} + </select></td> + </tr></xml>} + </entry></xml>); + return <xml><body> + <h1>Bid on papers</h1> + + <form> + <subforms{#Papers}><table> + <tr> <th>Paper</th> <th>Your Bid</th> </tr> + {ps} + </table></subforms> + <submit value="Change" action={changeBids}/> + </form> + </body></xml> + + and changeBids r = + me <- getPcLogin; + List.app (fn {Paper = p, Bid = b} => + case b of + "" => return () + | _ => let + val p = readError p + in + (dml (DELETE FROM bid WHERE Paper = {[p]} AND User = {[me.Id]}); + dml (INSERT INTO bid (Paper, User, Interest) + VALUES ({[p]}, {[me.Id]}, {[String.sub b 0]}))) + end) r.Papers; + yourBids () in <xml> - <li> <a link={bid ()}>Bid on papers</a></li> + <li> <a link={yourBids ()}>Bid on papers</a></li> </xml> end