comparison demo/more/bid.ur @ 1028:8b7971e74335

Preload current assignment status
author Adam Chlipala <adamc@hcoop.net>
date Mon, 02 Nov 2009 14:14:32 -0500
parents be1aec7333a5
children 6bcc1020d5cd
comparison
equal deleted inserted replaced
1027:be1aec7333a5 1028:8b7971e74335
15 | _ => error <xml>Bid: Invalid Interest code</xml> 15 | _ => error <xml>Bid: Invalid Interest code</xml>
16 16
17 val linksForChair = 17 val linksForChair =
18 let 18 let
19 fun assignPapers () = 19 fun assignPapers () =
20 tup <- query (SELECT paper.Id, paper.{{M.paper}}, user.Id, user.Nam, bid.Interest 20 tup <- query (SELECT paper.Id, paper.{{M.paper}}, user.Id, user.Nam, bid.Interest, assignment.User
21 FROM paper JOIN bid ON bid.Paper = paper.Id 21 FROM paper JOIN bid ON bid.Paper = paper.Id
22 JOIN user ON bid.User = user.Id 22 JOIN user ON bid.User = user.Id
23 LEFT JOIN assignment ON assignment.Paper = paper.Id AND assignment.User = user.Id
23 ORDER BY paper.Id, bid.Interest, user.Nam) 24 ORDER BY paper.Id, bid.Interest, user.Nam)
24 (fn r (paper, int, acc, ints, papers) => 25 (fn r (paper, int, acc, ints, papers) =>
25 if (case paper of None => False | Some r' => r'.Id = r.Paper.Id) then 26 if (case paper of None => False | Some r' => r'.Id = r.Paper.Id) then
26 if int = r.Bid.Interest then 27 if int = r.Bid.Interest then
27 return (paper, int, (r.User.Id, r.User.Nam) :: acc, ints, papers) 28 return (paper, int, (r.User.Id, r.User.Nam, Option.isSome r.Assignment.User) :: acc,
29 ints, papers)
28 else 30 else
29 return (paper, r.Bid.Interest, (r.User.Id, r.User.Nam) :: [], 31 return (paper, r.Bid.Interest, (r.User.Id, r.User.Nam,
32 Option.isSome r.Assignment.User) :: [],
30 (int, acc) :: ints, papers) 33 (int, acc) :: ints, papers)
31 else 34 else
32 return (Some r.Paper, r.Bid.Interest, 35 return (Some r.Paper, r.Bid.Interest,
33 (r.User.Id, r.User.Nam) :: [], [], 36 (r.User.Id, r.User.Nam, Option.isSome r.Assignment.User) :: [], [],
34 case paper of 37 case paper of
35 None => papers 38 None => papers
36 | Some r => (r.Id, r -- #Id, (int, acc) :: ints) :: papers)) 39 | Some r => (r.Id, r -- #Id, (int, acc) :: ints) :: papers))
37 (None, #" ", [], [], []); 40 (None, #" ", [], [], []);
38 let 41 let
42 45
43 fun makePapers () = List.mapM (fn (pid, extra, ints) => 46 fun makePapers () = List.mapM (fn (pid, extra, ints) =>
44 ints <- List.mapM (fn (int, users) => 47 ints <- List.mapM (fn (int, users) =>
45 cg <- CheckGroup.create 48 cg <- CheckGroup.create
46 (List.mp 49 (List.mp
47 (fn (id, nam) => (id, txt nam, 50 (fn (id, nam, sel) =>
48 False)) 51 (id, txt nam, sel))
49 users); 52 users);
50 ex <- Expandable.create 53 ex <- Expandable.create
51 (CheckGroup.render cg); 54 (CheckGroup.render cg);
52 return (int, cg, ex)) ints; 55 return (int, cg, ex)) ints;
53 return (pid, extra, ints)) papersL 56 return (pid, extra, ints)) papersL