From 4bbe3f6807f90d482f2de8698be68ec7f4c7b8d4 Mon Sep 17 00:00:00 2001
From: Wira Basalamah
Date: Mon, 8 Jun 2026 16:09:24 +0700
Subject: [PATCH] Polish device registry identity displays
---
CODEX_HANDOFF.md | 5 +++-
ui/device-registry-monitoring/index.html | 14 ++++++++++-
ui/device-technical-detail/index.html | 30 ++++++++++++++++++++----
ui/soundbox-ops/index.html | 11 +++++----
4 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/CODEX_HANDOFF.md b/CODEX_HANDOFF.md
index 6fe3eb9..cbdd0d3 100644
--- a/CODEX_HANDOFF.md
+++ b/CODEX_HANDOFF.md
@@ -16,14 +16,17 @@ Dokumen ini adalah snapshot kerja terakhir untuk melanjutkan project tanpa perlu
- KPI warning sekarang menunjukkan breakdown stale vs degraded;
- KPI card bisa dipakai sebagai quick filter;
- tabel Fleet Status menampilkan health bar, reason, signal, dan battery;
- - Device ID menjadi link langsung ke technical detail;
+ - kolom utama Fleet Status sekarang memakai Serial Number sebagai identitas utama, dengan device code hanya sebagai detail sekunder;
- Remote Actions menambahkan tombol `Power Off Device`;
- layout mobile header/filter dibuat full-width agar tidak overflow.
- Registry `/ui/device-registry-monitoring` sekarang mendukung koreksi device metadata:
+ - tabel dan detail mengutamakan Serial Number, bukan internal device id;
- menu row punya `Edit Device`;
+ - menu row baris bawah otomatis membuka ke atas agar tidak tertutup pagination;
- modal edit bisa koreksi `serial_number/dev-sn`, vendor, model, communication mode, status, dan firmware version;
- perubahan model ikut memperbarui `capability_profile_json` dari katalog model aktif;
- backend menolak duplicate `serial_number` supaya config pull/MQTT lookup tidak ambigu.
+- Device Technical Detail mengutamakan Serial Number di breadcrumb/title, menaruh device code sebagai detail, dan remote action menambahkan `Power Off Device`.
- Search UI yang sebelumnya dekoratif sudah mulai difungsikan:
- Admin Dashboard global search route ke Device Registry, Merchant List, atau Transaction History dengan `?q=`;
- Transaction History dan Merchant List membaca `?q=` sebagai initial search;
diff --git a/ui/device-registry-monitoring/index.html b/ui/device-registry-monitoring/index.html
index e2668cd..a67bd3b 100644
--- a/ui/device-registry-monitoring/index.html
+++ b/ui/device-registry-monitoring/index.html
@@ -1062,9 +1062,21 @@ Changing SN affects config pull lookup and MQTT topic routing. Use the physical
button.addEventListener("click", (event) => {
event.stopPropagation();
const rowId = event.currentTarget.getAttribute("data-id");
+ const activeMenu = Array.from(tableBody.querySelectorAll("[data-device-menu]"))
+ .find((menu) => menu.getAttribute("data-device-menu") === rowId);
+ const shouldOpen = Boolean(activeMenu?.classList.contains("hidden"));
tableBody.querySelectorAll("[data-device-menu]").forEach((menu) => {
- menu.classList.toggle("hidden", menu.getAttribute("data-device-menu") !== rowId || !menu.classList.contains("hidden"));
+ menu.classList.add("hidden", "top-12");
+ menu.classList.remove("bottom-12");
});
+ if (!activeMenu || !shouldOpen) {
+ return;
+ }
+ const buttonRect = event.currentTarget.getBoundingClientRect();
+ const availableBelow = window.innerHeight - buttonRect.bottom;
+ activeMenu.classList.toggle("top-12", availableBelow >= 190);
+ activeMenu.classList.toggle("bottom-12", availableBelow < 190);
+ activeMenu.classList.remove("hidden");
});
});
diff --git a/ui/device-technical-detail/index.html b/ui/device-technical-detail/index.html
index 15c694d..e35b34f 100644
--- a/ui/device-technical-detail/index.html
+++ b/ui/device-technical-detail/index.html
@@ -212,7 +212,7 @@