diff --git a/management-ui/src/customcompometns/Admincomponent.vue b/management-ui/src/customcompometns/Admincomponent.vue index 74dc469..86a2081 100644 --- a/management-ui/src/customcompometns/Admincomponent.vue +++ b/management-ui/src/customcompometns/Admincomponent.vue @@ -52,6 +52,24 @@ function usernamesFromIds(ids: string[]): string { return ids.map(id => idToName.value.get(String(id))).filter(Boolean).join(', ') } +// ---- NEW: immediate UI updates for Users table ---- +function handleUserUpdated( + row: Users, + payload: { id: string; username: string; role: 'admin' | 'user' } +) { + const idNum = Number(payload.id || row.id) + user_data.value = user_data.value.map(u => + u.id === idNum + ? { ...u, username: payload.username, role: payload.role } + : u + ) +} + +function handleUserDeleted(row: Users) { + const idNum = row.id + user_data.value = user_data.value.filter(u => u.id !== idNum) +} + // ---------------- Devices ---------------- type ApiDeviceUser = { id: number; username: string; role: string } type ApiDevice = { guid: string; name: string; users?: ApiDeviceUser[] } @@ -201,6 +219,8 @@ onBeforeUnmount(() => { :columns="user_columns" :data="user_data" :dropdownComponent="AdminUserDropdonw" + @row-updated="handleUserUpdated" + @row-deleted="handleUserDeleted" /> diff --git a/management-ui/src/customcompometns/EditUserDialog.vue b/management-ui/src/customcompometns/EditUserDialog.vue index 9130178..b6190de 100644 --- a/management-ui/src/customcompometns/EditUserDialog.vue +++ b/management-ui/src/customcompometns/EditUserDialog.vue @@ -92,7 +92,7 @@ function onSave() {