mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
The real live fleet page — FleetCrudPages.tsx (previous commit) turned
out to be dead code; every fleet route (locomotives/trains/wagons/
containers/cargoes/vehicles/drivers) actually renders this one,
config-driven off resources.ts. Highest-leverage single file in the
remaining inventory: 7 routes at once.
- filterDefs are built per slug from `config.listFilters` (status/yard/
wagon type/train…, wired to real server params via each def's
default `{key: value}` toParams) plus a "Registered" date range. The
3 slugs with no server list filters (trains/containers/cargoes) fall
back to a plain client-only Status filter off a fixed enum, not
"whatever status exists in the currently-loaded rows" — the latter
would be circular (filterDefs feeds useFilters, which feeds the
query that produces those rows).
- serverListFilters/pagedFilters derive straight from `controls.params`
instead of hand-picking each field off local state — the def keys
already match the API's param names, so this is mostly free.
- filteredRows keeps the original's exact "usesServerListFilters ⇒
trust the server, don't re-check client-side" short-circuit — some
server list filters (a wagon's `trainNumber` matches either of two
different columns) aren't expressible as a plain client-side field
equality, and re-applying them would silently break.
- Pagination moved from a local `usePagination()` (component state) to
useFilters' URL-backed page/pageSize — the whole point of this pass.
DataTable takes `controls.tableProps(total)` directly; FleetCardGrid
(not a DataTable) is fed the same pieces by hand.
- The two manual "reset on slug/filter change" effects are dropped —
a same-app nav Link to a bare path already clears the query string,
and useFilters already deletes `page` on every filter/search change.
- FleetToolbar's view-mode SegmentedControl moves into FilterBar's
`children` slot; its search/filters props are no longer used here.