Mercurial > urweb
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 |