summaryrefslogtreecommitdiff
path: root/frontend/admin
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/admin')
-rw-r--r--frontend/admin/admin-style.css5
-rw-r--r--frontend/admin/admin.js33
-rw-r--r--frontend/admin/panel.html14
3 files changed, 51 insertions, 1 deletions
diff --git a/frontend/admin/admin-style.css b/frontend/admin/admin-style.css
index e04a047..9c866ff 100644
--- a/frontend/admin/admin-style.css
+++ b/frontend/admin/admin-style.css
@@ -28,6 +28,11 @@
width: 128px;
}
+.admin-machine-container > div > span {
+ text-align: center;
+ font-weight: 600;
+}
+
.admin-machine-container > h2 {
writing-mode: vertical-lr;
transform: rotate(180deg);
diff --git a/frontend/admin/admin.js b/frontend/admin/admin.js
index 6f1ebce..ff1c463 100644
--- a/frontend/admin/admin.js
+++ b/frontend/admin/admin.js
@@ -38,9 +38,42 @@ async function panelLoginCheck() {
if (await checkLoginStatus()) {
msg.style.display = "none";
authDiv.style.display = "inherit";
+ return true;
} else {
msg.style.display = "inherit";
authDiv.style.display = "none";
+ return false;
+ }
+}
+
+async function syncMachineStatus() {
+ const response = await fetch(`${API_URL}/admin_machine_status`, {
+ method: "POST",
+ credentials: "include",
+ });
+ const data = await response.json();
+
+ for (let b = 0; b < data.length; b++) {
+ for (let m = 0; m < data[b].length; m++) {
+ const img = document.getElementById("h"+(b+1).toString()+"m"+(m+1).toString()+"img");
+ const dropdown = document.getElementById("h"+(b+1).toString()+"m"+(m+1).toString());
+
+ if (data[b][m] != "OUTOFSERVICE") {
+ if (m % 2 == 0) {
+ img.src = "/assets/img/dryer_off.png";
+ } else {
+ img.src = "/assets/img/washer_off.png";
+ }
+ dropdown.selectedIndex = 0;
+ } else {
+ if (m % 2 == 0) {
+ img.src = "/assets/img/dryer_down.png";
+ } else {
+ img.src = "/assets/img/washer_down.png";
+ }
+ dropdown.selectedIndex = 1;
+ }
+ }
}
}
diff --git a/frontend/admin/panel.html b/frontend/admin/panel.html
index 1169c30..4813c06 100644
--- a/frontend/admin/panel.html
+++ b/frontend/admin/panel.html
@@ -14,6 +14,7 @@
<div class="admin-machine-container" style="background-color: lightyellow;">
<h2>Block H2</h2>
<div>
+ <span>Dryer 1</span>
<img id="h2m1img" src="/assets/img/dryer_off.png" alt="">
<select id="h2m1" name="" onchange="overrideMachineStatus(2, 1);">
<option value="normal">Normal</option>
@@ -21,6 +22,7 @@
</select>
</div>
<div>
+ <span>Washer 1</span>
<img id="h2m2img" src="/assets/img/washer_off.png" alt="">
<select id="h2m2" name="" onchange="overrideMachineStatus(2, 2);">
<option value="normal">Normal</option>
@@ -28,6 +30,7 @@
</select>
</div>
<div>
+ <span>Dryer 2</span>
<img id="h2m3img" src="/assets/img/dryer_off.png" alt="">
<select id="h2m3" name="" onchange="overrideMachineStatus(2, 3);">
<option value="normal">Normal</option>
@@ -35,6 +38,7 @@
</select>
</div>
<div>
+ <span>Washer 2</span>
<img id="h2m4img" src="/assets/img/washer_off.png" alt="">
<select id="h2m4" name="" onchange="overrideMachineStatus(2, 4);">
<option value="normal">Normal</option>
@@ -45,6 +49,7 @@
<div class="admin-machine-container" style="background-color: skyblue;">
<h2>Block H1</h2>
<div>
+ <span>Dryer 1</span>
<img id="h1m1img" src="/assets/img/dryer_off.png" alt="">
<select id="h1m1" name="" onchange="overrideMachineStatus(1, 1);">
<option value="normal">Normal</option>
@@ -52,6 +57,7 @@
</select>
</div>
<div>
+ <span>Washer 1</span>
<img id="h1m2img" src="/assets/img/washer_off.png" alt="">
<select id="h1m2" name="" onchange="overrideMachineStatus(1, 2);">
<option value="normal">Normal</option>
@@ -59,6 +65,7 @@
</select>
</div>
<div>
+ <span>Dryer 2</span>
<img id="h1m3img" src="/assets/img/dryer_off.png" alt="">
<select id="h1m3" name="" onchange="overrideMachineStatus(1, 3);">
<option value="normal">Normal</option>
@@ -66,6 +73,7 @@
</select>
</div>
<div>
+ <span>Washer 2</span>
<img id="h1m4img" src="/assets/img/washer_off.png" alt="">
<select id="h1m4" name="" onchange="overrideMachineStatus(1, 4);">
<option value="normal">Normal</option>
@@ -77,7 +85,11 @@
</div>
<script src="admin.js"></script>
<script>
- panelLoginCheck();
+ (async () => {
+ if (await panelLoginCheck()) {
+ syncMachineStatus();
+ }
+ })();
</script>
</body>
</html>