summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraltaf-creator <dev@altafcreator.com>2026-01-16 21:32:36 +0800
committeraltaf-creator <dev@altafcreator.com>2026-01-16 21:32:36 +0800
commit3907c41203568f69b947bdde8f16f505eb26ba6a (patch)
treecc265acfcbada66c704744e99d3b02f9d8336502
parent586810f149954a33b9c27b1cb3efde3224a10640 (diff)
begin implementing OOS backend, status switcheroo
-rw-r--r--backend/main.py16
-rw-r--r--frontend/main.js13
2 files changed, 27 insertions, 2 deletions
diff --git a/backend/main.py b/backend/main.py
index c42e83f..db2519d 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -123,6 +123,11 @@ class FinishRequestData(BaseModel):
id: int
+class OverrideMachineData(BaseModel):
+ block: int
+ machine_id: int
+
+
class Status(Enum):
EMPTY = 0,
FINISHED = 1,
@@ -462,3 +467,14 @@ def notif_subscribe(data: notif.PushSubscriptionData, response: fastapi.Response
except Exception as err:
response.status_code = fastapi.status.HTTP_500_INTERNAL_SERVER_ERROR
return f"error, failed to save subscription {err}"
+
+
+# #### ADMIN PANEL API END POINTS ####
+
+
+# --- override each machine status
+@app.post("/override_status", response_class=PlainTextResponse)
+def override_status(data: OverrideMachineData, response: fastapi.Response, admin_auth: Annotated[str | None, fastapi.Cookie()] = None):
+ if not admin_auth:
+ response.status_code = fastapi.status.HTTP_401_UNAUTHORIZED
+ return "Unauthorised."
diff --git a/frontend/main.js b/frontend/main.js
index 962763d..ee61db1 100644
--- a/frontend/main.js
+++ b/frontend/main.js
@@ -214,8 +214,6 @@ async function updateMachines() {
machineTxts[i].innerHTML = minsLeft + " min(s) left";
if (machineDetailImgs[0]) machineDetailTitles[i].innerHTML = minsLeft + " minutes left"
} else if (status[0][i] == "OUTOFSERVICE") {
-
- } else if (status[0][i] == "FINISHED") {
if ((i + 1) % 2 == 0) {
machineImgs[i].src = "/assets/img/washer_down.png";
if (machineDetailImgs[0]) machineDetailImgs[i].src = "/assets/img/washer_down.png";
@@ -226,6 +224,17 @@ async function updateMachines() {
machineTxts[i].innerHTML = "Down"
if (machineDetailImgs[0]) machineDetailTitles[i].innerHTML = "Out of Service"
if (machineDetailImgs[0]) machineDetailDescs[i].innerHTML = "This machine is currently out of service, and is unavailable to use."
+ } else if (status[0][i] == "FINISHED") {
+ if ((i + 1) % 2 == 0) {
+ machineImgs[i].src = "/assets/img/washer_clothes.png";
+ if (machineDetailImgs[0]) machineDetailImgs[i].src = "/assets/img/washer_clothes.png";
+ } else {
+ machineImgs[i].src = "/assets/img/dryer_clothes.png";
+ if (machineDetailImgs[0]) machineDetailImgs[i].src = "/assets/img/dryer_clothes.png";
+ }
+ machineTxts[i].innerHTML = "Idle"
+ if (machineDetailImgs[0]) machineDetailTitles[i].innerHTML = "Idle"
+ if (machineDetailImgs[0]) machineDetailDescs[i].innerHTML = "Clothes may not be collected yet."
} else {
if ((i + 1) % 2 == 0) {
machineImgs[i].src = "/assets/img/washer_off.png";