aboutsummaryrefslogtreecommitdiffstats
path: root/js/src/jams.js
blob: ee2ee2ea076fe2a8f38619b121f1a6dd924a2e6c (plain) (blame)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
"use strict";

/* exported JamActions */

class JamActions {
    constructor(url, csrf_token) {
        this.url = url;
        this.csrf_token = csrf_token;
    }

    send(action, method, data, callback) {
        data["action"] = action;

        $.ajax(this.url, {
            "data": data,
            "dataType": "json",
            "headers": {"X-CSRFToken": this.csrf_token},
            "method": method,
        }).done(data => {
            if ("error_code" in data) {
                return callback(false, data);
            }

            return callback(true, data);
        }).fail(() => callback(false));
    }

    send_json(action, method, data, callback) {
        data["action"] = action;

        $.ajax(this.url, {
            "data": JSON.stringify(data),
            "dataType": "json",
            "headers": {"X-CSRFToken": this.csrf_token},
            "method": method
        }).done(data => {
            if ("error_code" in data) {
                return callback(false, data);
            }

            return callback(true, data);
        }).fail(() => callback(false));
    }

    set_state(jam, state, callback) {
        this.send(
            "state",
            "POST",
            {
                "jam": jam,
                "state": state
            },
            callback
        );
    }

    get_questions(callback) {
        this.send(
            "questions",
            "GET",
            {},
            callback
        );
    }

    create_question(data, callback) {
        this.send_json(
            "questions",
            "POST",
            data,
            callback
        );
    }

    delete_question(id, callback) {
        this.send(
            "question",
            "DELETE",
            {"id": id},
            callback
        );
    }

    associate_question(form, question, callback) {
        this.send(
            "associate_question",
            "POST",
            {
                "form": form,
                "question": question,
            },
            callback
        );
    }

    disassociate_question(form, question, callback) {
        this.send(
            "disassociate_question",
            "POST",
            {
                "form": form,
                "question": question,
            },
            callback
        );
    }

    create_infraction(id, reason, number, callback) {
        this.send(
            "infraction",
            "POST",
            {
                "participant": id,
                "reason": reason,
                "number": number
            },
            callback
        );
    }

    delete_infraction(id, callback) {
        this.send(
            "infraction",
            "DELETE",
            {"id": id},
            callback
        );
    }

    approve_application(id, callback) {
        this.send(
            "approve_application",
            "POST",
            {"id": id},
            callback
        );
    }

    unapprove_application(id, callback) {
        this.send(
            "unapprove_application",
            "POST",
            {"id": id},
            callback
        );
    }
}