fix: prikaži shared putne naloge u kontekstu i filtriraj zatvorene u dropdownu
- scopedWorkOrders: u context modu uključi i putne naloge koji su dodijeljeni taskovima kontekstne dizalice (cross-crane shared WO), a ne samo one čiji vehicle === hydratedSelectedVehicleId - selectedTaskWorkOrders: prikaži samo otvorene naloge (status != closed) u dropdownu za dodjelu putnog naloga tasku - Ažuriran emptyMessage tablice da sugerira prebacivanje na 'svi nalozi' Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -423,8 +423,19 @@ export default function FleetDashboardShell({ initialSection = 'dashboard', page
|
||||
if (!hydratedSelectedVehicleId) {
|
||||
return [];
|
||||
}
|
||||
return codeSorted.filter((order) => String(order.vehicle) === String(hydratedSelectedVehicleId));
|
||||
}, [workOrders, workOrderScope, hydratedSelectedVehicleId, user?.id, user?.is_serviser, user?.is_team_member, workOrderCodeSortDirection]);
|
||||
// Collect work order IDs that are directly assigned to tasks of the context crane.
|
||||
// This covers cross-crane shared work orders: a WO created for crane A can be
|
||||
// assigned to a task of crane B — it should still appear in crane B's context view.
|
||||
const contextTaskWorkOrderIds = new Set(
|
||||
tasks
|
||||
.filter((t) => String(t.vehicle || '') === String(hydratedSelectedVehicleId) && t.work_order)
|
||||
.map((t) => String(t.work_order))
|
||||
);
|
||||
return codeSorted.filter(
|
||||
(order) => String(order.vehicle) === String(hydratedSelectedVehicleId)
|
||||
|| contextTaskWorkOrderIds.has(String(order.id))
|
||||
);
|
||||
}, [workOrders, tasks, workOrderScope, hydratedSelectedVehicleId, user?.id, user?.is_serviser, user?.is_team_member, workOrderCodeSortDirection]);
|
||||
const pageSize = 10;
|
||||
const totalPages = Math.max(1, Math.ceil(scopedWorkOrders.length / pageSize));
|
||||
const latestWorkOrders = useMemo(
|
||||
@@ -541,8 +552,11 @@ export default function FleetDashboardShell({ initialSection = 'dashboard', page
|
||||
}, [serviceRecords, selectedTask?.id]);
|
||||
const selectedTaskWorkOrders = useMemo(() => {
|
||||
if (!selectedTask) return [];
|
||||
// Show ALL work orders — cross-crane sharing is allowed so no vehicle filter.
|
||||
return [...workOrders].sort((a, b) => String(b.date || '').localeCompare(String(a.date || '')));
|
||||
// Only open work orders in the dropdown — closed ones cannot receive new tasks.
|
||||
// Cross-crane sharing allowed: no vehicle filter.
|
||||
return [...workOrders]
|
||||
.filter((order) => String(order.status || '').toLowerCase() !== 'closed')
|
||||
.sort((a, b) => String(b.date || '').localeCompare(String(a.date || '')));
|
||||
}, [selectedTask, workOrders]);
|
||||
|
||||
useEffect(() => {
|
||||
@@ -945,7 +959,7 @@ export default function FleetDashboardShell({ initialSection = 'dashboard', page
|
||||
workOrderScope === 'context'
|
||||
? (!hydratedSelectedVehicleId
|
||||
? 'Odaberite dizalicu za prikaz putnih naloga iz servisnog konteksta.'
|
||||
: 'Nema dostupnih putnih naloga za odabrani servisni kontekst.')
|
||||
: 'Nema dostupnih putnih naloga za odabrani servisni kontekst. Možete prebaciti na prikaz svih naloga.')
|
||||
: 'Nema dostupnih putnih naloga.'
|
||||
}
|
||||
renderRow={(workOrder) => (
|
||||
|
||||
Reference in New Issue
Block a user