Fix task refresh after work order close
Keep the linked work order visible in task details and force-refresh tasks immediately after work order changes so the dashboard table updates without a hard refresh.
This commit is contained in:
@@ -566,10 +566,17 @@ export default function FleetDashboardShell({ initialSection = 'dashboard', page
|
|||||||
}, [serviceRecords, selectedTask?.id]);
|
}, [serviceRecords, selectedTask?.id]);
|
||||||
const selectedTaskWorkOrders = useMemo(() => {
|
const selectedTaskWorkOrders = useMemo(() => {
|
||||||
if (!selectedTask) return [];
|
if (!selectedTask) return [];
|
||||||
// Only open work orders in the dropdown — closed ones cannot receive new tasks.
|
// Keep dropdown focused on open work orders, but preserve the task's already assigned
|
||||||
|
// work order even when it is closed so the reference remains visible/editable in task details.
|
||||||
// Cross-crane sharing allowed: no vehicle filter.
|
// Cross-crane sharing allowed: no vehicle filter.
|
||||||
|
const selectedWorkOrderId = String(selectedTask.work_order || '');
|
||||||
return [...workOrders]
|
return [...workOrders]
|
||||||
.filter((order) => String(order.status || '').toLowerCase() !== 'closed')
|
.filter((order) => {
|
||||||
|
const orderId = String(order.id || '');
|
||||||
|
const isClosed = String(order.status || '').toLowerCase() === 'closed';
|
||||||
|
if (!isClosed) return true;
|
||||||
|
return selectedWorkOrderId && orderId === selectedWorkOrderId;
|
||||||
|
})
|
||||||
.sort((a, b) => String(b.date || '').localeCompare(String(a.date || '')));
|
.sort((a, b) => String(b.date || '').localeCompare(String(a.date || '')));
|
||||||
}, [selectedTask, workOrders]);
|
}, [selectedTask, workOrders]);
|
||||||
|
|
||||||
@@ -614,7 +621,7 @@ export default function FleetDashboardShell({ initialSection = 'dashboard', page
|
|||||||
await updateWorkOrder(workOrder.id, changes);
|
await updateWorkOrder(workOrder.id, changes);
|
||||||
showToast('Nalog je uspješno ažuriran.', 'success');
|
showToast('Nalog je uspješno ažuriran.', 'success');
|
||||||
await fetchFleetDashboardData({ silent: true });
|
await fetchFleetDashboardData({ silent: true });
|
||||||
await fetchTasks();
|
await fetchTasks({ force: true });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showToast(error?.message || 'Ažuriranje naloga nije uspjelo.', 'error');
|
showToast(error?.message || 'Ažuriranje naloga nije uspjelo.', 'error');
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user