This repository has been archived by the owner on May 8, 2023. It is now read-only.
/
phase4.js
107 lines (90 loc) · 3.07 KB
/
phase4.js
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
let dictKittypeClass = {
0: "confirmed",
1: "extraction",
2: "incubate",
3: "meiosis",
4: "embryo",
5: "analysis",
6: "choiceready"
};
let dictOptionalsClass = {
0: "insertion",
1: "sickness",
2: "social"
};
loadStatus();
window.setInterval (loadStatus, 5000);
// Listener für Navbar-Responsive
document.getElementById("btnWrapNavbar").addEventListener("click", toggleNavbarResponsive);
//Orderoptionals setzen
let optionalItems = document.getElementsByClassName("statusoptionals")[0].getElementsByTagName("li");
function loadStatus() {
"use strict";
let xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
let statusJSON = JSON.parse(this.responseText);
if (statusJSON.length === 0) {
// Status nicht vorhanden
return;
}
// Status vorhanden
let kitStatus = parseInt(statusJSON["status"]);
setKitStatus(kitStatus);
setOptionalsStatus(statusJSON["optionals"]);
checkAllIsDone();
}
};
xmlhttp.open("GET", "getstatuschoice_session.php", true);
xmlhttp.send();
}
/**
* "active"-Klasse von allen radioButtons entfernen
* @param activeIndex Integer Index of Status to activate (0=sent, 1=delivered, 2=analysis, 3=done)
*/
function setKitStatus(activeIndex) {
"use strict";
let kitStatusCount = 7;
for (let i=0; i<kitStatusCount; i++) {
let progressItem = document.getElementsByClassName(dictKittypeClass[i])[0];
let progressItemClasses = progressItem.classList;
progressItemClasses.remove("active");
progressItemClasses.remove("animate");
if (i <= activeIndex) {
progressItemClasses.add("active");
} else if (i===activeIndex+1) {
progressItemClasses.add("animate");
}
}
}
function setOptionalsStatus(optionalsDict) {
let maxOptionalsStatusCount = 3;
for (let i=0; i<optionalItems.length; i++) {
let optionalItem = optionalItems[i];
let progressItemClasses = optionalItem.classList;
progressItemClasses.remove("active");
}
for (let i=0; i<maxOptionalsStatusCount; i++) {
let optionalDone = optionalsDict[i];
if (optionalDone != null && optionalDone === "1") {
document.getElementsByClassName(dictOptionalsClass[i])[0].classList.add("active");
}
}
}
function checkAllIsDone() {
let done = true;
// Button aktivieren, wenn Status komplett
if (!document.getElementsByClassName("choiceready")[0].classList.contains("active")
|| !optionalItems[optionalItems.length-1].classList.contains("active")) {
done = false;
}
document.getElementById("getGenoChoiceResults").disabled = !done;
}
function toggleNavbarResponsive() {
let navbar = document.getElementsByClassName("navlist")[0];
if (navbar.classList.contains("responsive")) {
navbar.classList.remove("responsive");
} else {
navbar.classList.add("responsive");
}
}