From 8f8fb8c27b65401c21289299b9b529b1ec3283c9 Mon Sep 17 00:00:00 2001 From: Adam Chlipala Date: Mon, 2 Nov 2009 14:11:08 -0500 Subject: Saving paper assignments --- demo/more/bid.ur | 48 +++++++++++++++++++++++++++++++++--------------- demo/more/conference.ur | 5 +++-- demo/more/conference.urs | 3 ++- 3 files changed, 38 insertions(+), 18 deletions(-) (limited to 'demo') diff --git a/demo/more/bid.ur b/demo/more/bid.ur index 931fc9c0..98a48fc4 100644 --- a/demo/more/bid.ur +++ b/demo/more/bid.ur @@ -21,26 +21,26 @@ functor Make(M : Conference.INPUT) = struct FROM paper JOIN bid ON bid.Paper = paper.Id JOIN user ON bid.User = user.Id ORDER BY paper.Id, bid.Interest, user.Nam) - (fn r (pid, int, acc, ints, papers) => - if pid = Some r.Paper.Id then + (fn r (paper, int, acc, ints, papers) => + if (case paper of None => False | Some r' => r'.Id = r.Paper.Id) then if int = r.Bid.Interest then - return (pid, int, (r.User.Id, r.User.Nam) :: acc, ints, papers) + return (paper, int, (r.User.Id, r.User.Nam) :: acc, ints, papers) else - return (pid, r.Bid.Interest, (r.User.Id, r.User.Nam) :: [], + return (paper, r.Bid.Interest, (r.User.Id, r.User.Nam) :: [], (int, acc) :: ints, papers) else - return (Some r.Paper.Id, r.Bid.Interest, + return (Some r.Paper, r.Bid.Interest, (r.User.Id, r.User.Nam) :: [], [], - case pid of + case paper of None => papers - | Some pid => (pid, (int, acc) :: ints) :: papers)) + | Some r => (r.Id, r -- #Id, (int, acc) :: ints) :: papers)) (None, #" ", [], [], []); let val papersL = case tup.1 of - Some pid => (pid, (tup.2, tup.3) :: tup.4) :: tup.5 - | _ => [] + Some r => (r.Id, r -- #Id, (tup.2, tup.3) :: tup.4) :: tup.5 + | None => [] - fun makePapers () = List.mapM (fn (pid, ints) => + fun makePapers () = List.mapM (fn (pid, extra, ints) => ints <- List.mapM (fn (int, users) => cg <- CheckGroup.create (List.mp @@ -50,7 +50,13 @@ functor Make(M : Conference.INPUT) = struct ex <- Expandable.create (CheckGroup.render cg); return (int, cg, ex)) ints; - return (pid, ints)) papersL + return (pid, extra, ints)) papersL + + fun saveAssignment ls = + dml (DELETE FROM assignment WHERE TRUE); + List.app (fn (pid, uids) => + List.app (fn uid => dml (INSERT INTO assignment (Paper, User) + VALUES ({[pid]}, {[uid]}))) uids) ls in papers <- source []; @@ -59,9 +65,9 @@ functor Make(M : Conference.INPUT) = struct

Assign papers

+ return (List.mapX (fn (pid, extra, ints) =>
- Paper #{[pid]}: + #{[pid]}: {summarizePaper extra}: this <- CheckGroup.selected cg; total <- total; @@ -72,6 +78,17 @@ functor Make(M : Conference.INPUT) = struct {[intOut int]}: {Expandable.render ex}
) ints}
) papers)}/> + +
+