diff --git a/management-ui/src/customcompometns/AdminDeviceDropdown.vue b/management-ui/src/customcompometns/AdminDeviceDropdown.vue index 9195329..af6f5dc 100644 --- a/management-ui/src/customcompometns/AdminDeviceDropdown.vue +++ b/management-ui/src/customcompometns/AdminDeviceDropdown.vue @@ -12,12 +12,8 @@ import { Ellipsis } from 'lucide-vue-next' import type { Device, Users } from '@/lib/interfaces' // import { api } from '@/lib/api' -const props = defineProps<{ - row: Device - allUsers?: Users[] - onRowUpdated?: (row: Device, payload: { name: string; userIds: string[] }) => void - onRowDeleted?: (row: Device) => void -}>() // ← accept full row + +const props = defineProps<{ row: Device; allUsers?: Users[] }>() const isEditOpen = ref(false) const isDeleteOpen = ref(false) @@ -32,13 +28,11 @@ const emit = defineEmits<{ function onDeleteConfirmed() { // await api.delete(`/devices/${encodeURIComponent(props.row.guid)}`) isDeleteOpen.value = false - // emit('refresh') - props.onRowDeleted?.(props.row) + emit('deleted') } function onEditConfirm(_payload: { name: string; userIds: string[] }) { isEditOpen.value = false - // emit('refresh') - props.onRowUpdated?.(props.row, _payload) + emit('updated', _payload) } function onTaskConfirm() { diff --git a/management-ui/src/customcompometns/AdminTrackerDropdown.vue b/management-ui/src/customcompometns/AdminTrackerDropdown.vue new file mode 100644 index 0000000..6362f69 --- /dev/null +++ b/management-ui/src/customcompometns/AdminTrackerDropdown.vue @@ -0,0 +1,66 @@ + + + diff --git a/management-ui/src/customcompometns/Admincomponent.vue b/management-ui/src/customcompometns/Admincomponent.vue index 3077630..74dc469 100644 --- a/management-ui/src/customcompometns/Admincomponent.vue +++ b/management-ui/src/customcompometns/Admincomponent.vue @@ -3,6 +3,7 @@ import { Tabs, TabsContent, TabsTrigger, TabsList } from '@/components/ui/tabs' import DataTableNoCheckbox from './DataTableNoCheckbox.vue' import AdminUserDropdonw from './AdminUserDropdonw.vue' import AdminDeviceDropdown from './AdminDeviceDropdown.vue' +import AdminTrackerDropdown from './AdminTrackerDropdown.vue' import type { Device, Users } from '@/lib/interfaces' import { Button } from '@/components/ui/button' import { onBeforeUnmount, onMounted, ref, computed } from 'vue' @@ -208,8 +209,8 @@ onBeforeUnmount(() => { :columns="device_columns" :data="device_data" :dropdownComponent="AdminDeviceDropdown" - :onRowUpdated="handleDeviceUpdated" - :onRowDeleted="handleDeviceDeleted" + @row-updated="handleDeviceUpdated" + @row-deleted="handleDeviceDeleted" :dropdownProps="{ allUsers: user_data }" /> @@ -218,9 +219,9 @@ onBeforeUnmount(() => { diff --git a/management-ui/src/customcompometns/EditDeviceDialog.vue b/management-ui/src/customcompometns/EditDeviceDialog.vue index a517cfa..3f748a7 100644 --- a/management-ui/src/customcompometns/EditDeviceDialog.vue +++ b/management-ui/src/customcompometns/EditDeviceDialog.vue @@ -67,11 +67,6 @@ function initFromDevice() { selectedUserIds.value = [...originalIds.value] initedForGuid.value = guid.value - console.log('[EditDeviceDialog:init]', { - guid: guid.value, - originalName: originalName.value, - originalIds: [...originalIds.value], - }) } // When dialog opens, initialize once for this guid @@ -89,16 +84,6 @@ watch( { immediate: true } ) -// If allUsers arrives later AND we haven't successfully initialized for this guid, -// try again (but only when open). -// watch( -// () => props.allUsers, -// () => { -// if (props.modelValue && guid.value && initedForGuid.value !== guid.value) { -// initFromDevice() -// } -// } -// ) // If allUsers arrives later, and we couldn't map on first init, map now. watch( @@ -129,17 +114,12 @@ watch( if (mapped.length > 0) { originalIds.value = mapped selectedUserIds.value = [...mapped] - console.log('[EditDeviceDialog:remap-after-allUsers]', { mapped }) } } }, { immediate: false } ) -// Just to see live edits from AssignDevice -watch(selectedUserIds, (v) => { - console.log('[EditDeviceDialog:selectedUserIds]', [...v]) -}, { deep: true }) // ---------- Save ---------- const saving = ref(false) @@ -161,11 +141,6 @@ async function onSave() { errorText.value = null saving.value = true try { - console.log('[EditDeviceDialog:compare]', { - originalIds: [...originalIds.value], - selectedUserIds: [...selectedUserIds.value], - }) - const ops: Promise[] = [] const nameChanged = changedName() @@ -195,7 +170,6 @@ async function onSave() { emit('updated', { name: name.value, userIds: [...selectedUserIds.value] }) emit('update:modelValue', false) } catch (err: any) { - console.error('[EditDeviceDialog:onSave] error', err) errorText.value = err?.response?.data?.message || 'Failed to save changes.' } finally { saving.value = false diff --git a/management-ui/src/customcompometns/EditTrackerDialog.vue b/management-ui/src/customcompometns/EditTrackerDialog.vue new file mode 100644 index 0000000..f9b0f71 --- /dev/null +++ b/management-ui/src/customcompometns/EditTrackerDialog.vue @@ -0,0 +1,216 @@ + + +