blob: 9a533f080a548e769a03be85b10b515839f7d6ad [file] [log] [blame]
Ferran Lópeza514bea2020-10-03 23:02:10 +02001
2var elements = document.getElementsByClassName("button");
3Array.from(elements).forEach(function(element) {
4 element.addEventListener('click', clickButton);
5 element.parent = element.parentNode.id;
6});
7var elements = document.getElementsByClassName("complex-button");
8Array.from(elements).forEach(function(element) {
9 element.addEventListener('click', clickButton);
10 element.parent = element.parentNode.id;
11});
12
13var final_JSON = {
14 "class": null,
15 "number": "",
16 "letter": ""
17};
18
19function fillInSummary() {
20 var begins = new Date(parseInt(final_JSON.class.begins)*1000);
21 var ends = new Date(parseInt(final_JSON.class.ends)*1000);
22
23 document.getElementById('subject-final').textContent = final_JSON.class.friendly_name || final_JSON.class.calendar_name;
24 document.getElementById('classroom-final').textContent = final_JSON.class.room;
25 document.getElementById('date-final').textContent = begins.toLocaleDateString();
26 document.getElementById('time-final').textContent = formatDate(begins) + ' - ' + formatDate(ends);
27 document.getElementById('letter-final').textContent = final_JSON.letter;
28 document.getElementById('number-final').textContent = final_JSON.number;
29}
30
31function clickButton(element) {
32 var btn = element.currentTarget;
33 var parent = btn.parent;
34
35 if (parent == "subject-container") {
36 // Canvi de background del button
37 var selectedClass = JSON.parse(btn.getAttribute('data-class'));
38 $("#subject-container .complex-button").removeClass("is-link")
39 btn.classList.add("is-link");
40 // Canvi JSON
41 final_JSON["class"] = selectedClass;
42 // Anchor següent pregunta
43 switchSection("section-2");
44 } else if (parent == "number-container") {
45 // Canvi de background del button
46 $("#number-container .button").removeClass("is-link is-light is-active")
47 btn.classList.add("is-link", "is-light", "is-active");
48 // Canvi JSON
49 final_JSON["number"] = btn.getAttribute('data-number');
50 // Introducció de totes les dades al resum final
51 fillInSummary();
52 // Anchor següent pregunta
53 switchSection("section-send");
54 } else if (parent == "letter-container") {
55 // Canvi de background del button
56 $("#letter-container .button").removeClass("is-link is-light is-active")
57 btn.classList.add("is-link", "is-light", "is-active");
58 // Canvi JSON
59 final_JSON["letter"] = btn.getAttribute('data-letter');
60 // Anchor següent pregunta
61 switchSection("section-3");
62 }
63}
64
65function formatDate(d) {
66 var str = "";
67 str += d.getHours();
68 str += ":";
69 if (d.getMinutes() < 10) str += "0";
70 str += d.getMinutes();
71 return str;
72}
73
74var api_url;
75
76window.addEventListener('load', _ => {
77// Check if user is signed in
78if (localStorage.getItem('devMode') == 'true') {
79 var banner = document.getElementById('dev-mode');
80 banner.addEventListener('click', _ => {
81 localStorage.devMode = 'false';
82 location.reload();
83 });
84 banner.classList.remove('hidden');
85 api_url = localStorage.getItem('apiUrl') || 'https://covid-tracability-backend-dev.sandbox.avm99963.com/api/v1/'
86} else {
87 api_url = "https://covid-tracability-backend-prod.sandbox.avm99963.com/api/v1/";
88}
89fetch(api_url + "isSignedIn", {
90 "mode": "cors",
91 "credentials": "include"
92})
93 .then(response => response.json())
94 .then(data => {
95 if (!data.payload.signedIn) {
96 console.log("Not signed in!");
97 fetch(api_url + "getAuthUrl", {
98 "mode": "cors",
99 "credentials": "include"
100 })
101 .then(response => response.json())
102 .then(data => {
103 // TODO: redirect here
104 // location.href = data.payload.url;
105 console.warn('Log in here: ', data.payload.url);
106 });
107 }
108 });
109
110fetch(api_url + "getCurrentClasses", {
111 "mode": "cors",
112 "credentials": "include"
113})
114 .then(response => response.json())
115 .then(data => {
116 if (data.payload.classes.length == 0) {
117 document.getElementById('no-subjects').classList.remove('hidden');
118 } else {
119 document.getElementById('fme-maps-container').classList.remove('hidden');
120 }
121
122 for (var [i, classe] of data.payload.classes.entries()) {
123 var hora_inici = formatDate(new Date(parseInt(classe.begins)*1000));
124 var hora_final = formatDate(new Date(parseInt(classe.ends)*1000));
125
126 var classeDiv = document.createElement('div');
127 classeDiv.classList.add('message', 'complex-button');
128 classeDiv.id = 'subject-' + classe.subject_id + '-' + classe.room;
129 classeDiv.setAttribute('data-class', JSON.stringify(classe));
130
131 var header = document.createElement('div');
132 header.classList.add('message-header');
133 header.textContent = classe.friendly_name || classe.calendar_name;
134
135 var body = document.createElement('div');
136 body.classList.add('message-body');
137
138 var div1 = document.createElement('div');
139 var span = document.createElement('span');
140 span.textContent = classe.room;
141
142 if (i > 0 && data.payload.classes[i-1].calendar_name == classe.calendar_name) {
143 div1.classList.add('has-text-danger', 'has-text-weight-bold');
144 } else if (i < data.payload.classes.length - 1 && data.payload.classes[i+1].calendar_name == classe.calendar_name) {
145 div1.classList.add('has-text-danger', 'has-text-weight-bold');
146 }
147
148 div1.textContent = 'Aula ';
149 div1.appendChild(span);
150
151 var div2 = document.createElement('div');
152 div2.textContent = hora_inici + ' - ' + hora_final;
153
154 body.appendChild(div1);
155 body.appendChild(div2);
156
157 classeDiv.appendChild(header);
158 classeDiv.appendChild(body);
159
160 document.getElementById("subject-container").appendChild(classeDiv);
161 }
162
163 var elements = document.getElementsByClassName("button");
164 Array.from(elements).forEach(function(element) {
165 element.addEventListener('click', clickButton);
166 element.parent = element.parentNode.id;
167 });
168 var elements = document.getElementsByClassName("complex-button");
169 Array.from(elements).forEach(function(element) {
170 element.addEventListener('click', clickButton);
171 element.parent = element.parentNode.id;
172 });
173 });
174});
175