summaryrefslogtreecommitdiff
path: root/demo/more/decision.ur
blob: 986658e8a8d9f6e7615d6b8dcaae5639c06cbbc4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
val decision = {Nam = "Decision",
                Initialize = None,
                Show = fn bo => cdata (case bo of
                                           None => "?"
                                         | Some True => "Accept"
                                         | Some False => "Reject"),
                Inject = _}

functor Make(M : sig
                 con paperOther :: {Type}
                 constraint [Id, Decision] ~ paperOther
                 include Conference.INPUT
                         where con paper = [Decision = option bool] ++ paperOther
             end) = struct
    open M

    val linksForChair =
        let
            fun makeDecisions () =
                ps <- queryX (SELECT paper.Id, paper.Decision, paper.{{M.paperOther}}
                              FROM paper
                              ORDER BY paper.Id)
                      (fn r => <xml><tr>
                        <td>{useMore (summarizePaper (r.Paper -- #Id))}</td>
                        <td><entry>
                          <hidden{#Paper} value={show r.Paper.Id}/>
                          <select{#Decision}>
                            <option selected={r.Paper.Decision = None}>?</option>
                            <option selected={r.Paper.Decision = Some True}>Accept</option>
                            <option selected={r.Paper.Decision = Some False}>Reject</option>
                        </select></entry></td>
                      </tr></xml>);
                return <xml><body>
                  <h1>Make acceptance decisions</h1>

                  <form><subforms{#Papers}>
                    <table>
                      <tr> <th>Paper</th> <th>Decision</th> </tr>
                      {ps}
                    </table>
                  </subforms></form>
                </body></xml>
        in
            <xml>
              <li><a link={makeDecisions ()}>Make acceptance decisions</a></li>
            </xml>
        end

    val linksForPc = <xml/>

    con yourPaperTables = []
    constraint [Paper] ~ yourPaperTables
    fun joinYourPaper [tabs] [paper] [[Paper] ~ tabs] [[Paper] ~ _] [tabs ~ yourPaperTables] [[Id] ~ paper]
        uid (fi : sql_from_items ([Paper = [Id = paperId] ++ paper] ++ tabs)) = fi
end