Simplify draft monitoring + sockets logic
[qomet.git] / public / javascripts / monitor.js
CommitLineData
e99c53fb
BA
1// TODO: onglets pour chaque groupe + section déroulante questionnaire (chargé avec réponses)
2// NOM Prenom (par grp, puis alphabétique)
3// réponse : vert si OK (+ choix), rouge si faux, gris si texte (clic pour voir)
4// + temps total ?
5// click sur en-tête de colonne : tri alphabétique, tri décroissant...
6// Affiché si (hash du) mdp du cours est correctement entré
7// Doit reprendre les données en base si refresh (sinon : sockets)
8
e5ec7dea
BA
9let socket = null; //monitor answers in real time
10
e5ec7dea
BA
11new Vue({
12 el: "#monitor",
13 data: {
14 password: "", //from password field
15 assessment: null, //obtained after authentication
16 // Stage 0: unauthenticated (password),
17 // 1: authenticated (password hash validated), start monitoring
18 stage: 0,
f6648c37
BA
19 answers: {
20 displayAll: true,
21 showSolution: true, //TODO: allow to hide, to let teachers search too
22 inputs: [ ],
23 index : -1,
24 },
e5ec7dea 25 },
e5ec7dea
BA
26 methods: {
27 // stage 0 --> 1
28 startMonitoring: function() {
29 $.ajax("/start/monitoring", {
30 method: "GET",
31 data: {
f6648c37 32 password: this.password,
e5ec7dea
BA
33 aname: examName,
34 cname: courseName,
f6648c37 35 initials: initials,
e5ec7dea
BA
36 },
37 dataType: "json",
38 success: s => {
39 if (!!s.errmsg)
40 return this.warning(s.errmsg);
f6648c37 41 this.assessment = JSON.parse(s.assessment);
e5ec7dea 42 this.stage = 1;
f6648c37
BA
43 socket = io.connect("/", {
44 query: "aid=" + this.assessment._id + "&secret=" + s.secret
45 });
46 socket.on(message.newAnswer, m => {
47 let paperIdx = this.assessment.papers.findIndex( item => {
48 return item.number == m.number;
49 });
50 this.assessment.papers[paperIdx].inputs.push(m.input); //answer+index
e5ec7dea 51 });
e5ec7dea
BA
52 },
53 });
54 },
55 },
56});