From e20e964083a048ad4cbb88cc1af3790694f51dfa Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Sun, 1 Nov 2009 10:20:20 -0500 Subject: Bidding interface --- demo/more/bid.ur | 53 +++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 41 insertions(+), 12 deletions(-) (limited to 'demo/more/bid.ur') diff --git a/demo/more/bid.ur b/demo/more/bid.ur index 5bcaea3a..692f8e14 100644 --- a/demo/more/bid.ur +++ b/demo/more/bid.ur @@ -7,22 +7,51 @@ functor Make(M : Conference.INPUT) = struct 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 Bidding time! + 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 => + + {useMore + {summarizePaper (r.Paper -- #Id)} + + {Select.selectChar ((#"-", "No") :: (#"_", "Maybe") :: (#"+", "Yes") :: []) + r.Bid.Interest} + + } + ); + return +

Bid on papers

+ +
+ + + {ps} +
Paper Your Bid
+ + +
+ + 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 -
  • Bid on papers
  • +
  • Bid on papers
  • end -- cgit v1.2.3