mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-26 18:42:49 +00:00
feat(fleet): add last-maintenance date filter to wagons list
Adds maintenanceFrom/maintenanceTo to WagonListFilters and wires a wagons-only "Last maintenance" date-range filter into FleetResourcePage, alongside the existing Registered filter. Server-paged, so the range is resolved by the API (see wagons.service.ts).
This commit is contained in:
@@ -224,6 +224,21 @@ const FleetResourcePage = () => {
|
||||
secondary: true,
|
||||
toParams: dateRangeParams("createdFrom", "createdTo"),
|
||||
};
|
||||
// Wagons-only: "last maintenance" is a derived value (latest status-log
|
||||
// flip to MAINTENANCE), not a column other fleet resources have.
|
||||
const dateDefs: FilterDef[] =
|
||||
slug === "wagons"
|
||||
? [
|
||||
dateDef,
|
||||
{
|
||||
key: "lastMaintenance",
|
||||
label: "Last maintenance",
|
||||
type: "date",
|
||||
secondary: true,
|
||||
toParams: dateRangeParams("maintenanceFrom", "maintenanceTo"),
|
||||
},
|
||||
]
|
||||
: [dateDef];
|
||||
if (config?.listFilters?.length) {
|
||||
return [
|
||||
...config.listFilters.map((filter): FilterDef => ({
|
||||
@@ -235,13 +250,13 @@ const FleetResourcePage = () => {
|
||||
? (dynamicOptions[filter.dynamicOptions] ?? [])
|
||||
: (filter.options ?? []),
|
||||
})),
|
||||
dateDef,
|
||||
...dateDefs,
|
||||
];
|
||||
}
|
||||
const fallback = FALLBACK_STATUS_OPTIONS[slug];
|
||||
return fallback
|
||||
? [{ key: "status", label: "Status", type: "enum", multiple: false, options: fallback }, dateDef]
|
||||
: [dateDef];
|
||||
? [{ key: "status", label: "Status", type: "enum", multiple: false, options: fallback }, ...dateDefs]
|
||||
: dateDefs;
|
||||
}, [config, dynamicOptions, slug]);
|
||||
|
||||
const controls = useFilters(filterDefs, { pageSize: 10 });
|
||||
|
||||
@@ -51,6 +51,10 @@ export interface WagonListFilters {
|
||||
/** Registration day range (YYYY-MM-DD), both ends inclusive. */
|
||||
createdFrom?: string;
|
||||
createdTo?: string;
|
||||
/** Last-maintenance day range (YYYY-MM-DD), both ends inclusive — matches
|
||||
* the latest status-log flip to MAINTENANCE, not a stored column. */
|
||||
maintenanceFrom?: string;
|
||||
maintenanceTo?: string;
|
||||
/** Only read by `getPaged`. */
|
||||
page?: number;
|
||||
pageSize?: number;
|
||||
@@ -67,6 +71,8 @@ const wagonListQuery = (filters: WagonListFilters): string => {
|
||||
if (filters.trainNumber) params.set('trainNumber', filters.trainNumber);
|
||||
if (filters.createdFrom) params.set('createdFrom', filters.createdFrom);
|
||||
if (filters.createdTo) params.set('createdTo', filters.createdTo);
|
||||
if (filters.maintenanceFrom) params.set('maintenanceFrom', filters.maintenanceFrom);
|
||||
if (filters.maintenanceTo) params.set('maintenanceTo', filters.maintenanceTo);
|
||||
if (filters.page) params.set('page', String(filters.page));
|
||||
if (filters.pageSize) params.set('pageSize', String(filters.pageSize));
|
||||
const qs = params.toString();
|
||||
|
||||
Reference in New Issue
Block a user