From f50ff1a6fb89cee8a9210687d81c58c2ba8c0038 Mon Sep 17 00:00:00 2001 From: SharglutDev Date: Tue, 25 Feb 2025 19:12:56 +0100 Subject: [PATCH] - rename some ref to train schedule in timetable item --- .../components/Timetable/Timetable.tsx | 16 ++++----- .../components/Timetable/TimetableToolbar.tsx | 4 +-- ...chedules.ts => useFilterTimetableItems.ts} | 35 +++++++++---------- .../components/Timetable/utils.ts | 14 ++++---- 4 files changed, 34 insertions(+), 35 deletions(-) rename front/src/modules/trainschedule/components/Timetable/{useFilterTrainSchedules.ts => useFilterTimetableItems.ts} (71%) diff --git a/front/src/modules/trainschedule/components/Timetable/Timetable.tsx b/front/src/modules/trainschedule/components/Timetable/Timetable.tsx index 96615ea3f27..443f726484e 100644 --- a/front/src/modules/trainschedule/components/Timetable/Timetable.tsx +++ b/front/src/modules/trainschedule/components/Timetable/Timetable.tsx @@ -30,7 +30,7 @@ import PacedTrainItem from './PacedTrain/PacedTrainItem'; import TimetableToolbar from './TimetableToolbar'; import TrainScheduleItem from './TrainScheduleItem'; import type { PacedTrainWithResult, TimetableItemResult, TrainScheduleWithDetails } from './types'; -import useFilterTrainSchedules from './useFilterTrainSchedules'; +import useFilterTimetableItems from './useFilterTimetableItems'; type TimetableProps = { setDisplayTrainScheduleManagement: (mode: string) => void; @@ -80,7 +80,7 @@ const Timetable = ({ dtoImport(); }, []); - const { filteredTrainSchedules, ...timetableFilters } = useFilterTrainSchedules(timetableItems); + const { filteredTimetableItems, ...timetableFilters } = useFilterTimetableItems(timetableItems); const toggleConflictsListExpanded = () => { setConflictsListExpanded(!conflictsListExpanded); @@ -113,8 +113,8 @@ const Timetable = ({ }; const currentDepartureDates = useMemo( - () => filteredTrainSchedules.map((train) => formatDepartureDate(train.startTime)), - [filteredTrainSchedules] + () => filteredTimetableItems.map((train) => formatDepartureDate(train.startTime)), + [filteredTimetableItems] ); const showDepartureDates = useMemo(() => { @@ -182,7 +182,7 @@ const Timetable = ({ showTrainDetails={showTrainDetails} toggleShowTrainDetails={toggleShowTrainDetails} timetableItems={timetableItems} - filteredTimetableItems={filteredTrainSchedules} + filteredTimetableItems={filteredTimetableItems} timetableFilters={timetableFilters} selectedTimetableItemIds={selectedTimetableItemIds} setSelectedTimetableItemIds={setSelectedTimetableItemIds} @@ -191,7 +191,7 @@ const Timetable = ({ isInSelection={selectedTimetableItemIds.length > 0} /> - {filteredTrainSchedules.map((timetableItem, index) => ( + {filteredTimetableItems.map((timetableItem, index) => (
{showDepartureDates[index] && (
@@ -241,8 +241,8 @@ const Timetable = ({ toggleConflictsList={toggleConflictsListExpanded} // TODO PACED TRAIN : Adapt this props to handle paced trains in issue trainSchedulesDetails={ - filteredTrainSchedules.filter((train) => - isTrainSchedule(train.id) + filteredTimetableItems.filter((timetableItem) => + isTrainSchedule(timetableItem.id) ) as TrainScheduleWithDetails[] } onConflictClick={handleConflictClick} diff --git a/front/src/modules/trainschedule/components/Timetable/TimetableToolbar.tsx b/front/src/modules/trainschedule/components/Timetable/TimetableToolbar.tsx index 1e017b84123..41061b0e143 100644 --- a/front/src/modules/trainschedule/components/Timetable/TimetableToolbar.tsx +++ b/front/src/modules/trainschedule/components/Timetable/TimetableToolbar.tsx @@ -24,7 +24,7 @@ import { formatTrainScheduleIdToEditoastTrainId, isTrainSchedule } from 'utils/t import FilterPanel from './FilterPanel'; import type { TimetableFilters, TimetableItemResult } from './types'; -import { timetableHasInvalidTrain } from './utils'; +import { timetableHasInvalidItem } from './utils'; type TimetableToolbarProps = { showTrainDetails: boolean; @@ -279,7 +279,7 @@ const TimetableToolbar = ({
)}
- {timetableHasInvalidTrain(filteredTimetableItems) && ( + {timetableHasInvalidItem(filteredTimetableItems) && (
diff --git a/front/src/modules/trainschedule/components/Timetable/useFilterTrainSchedules.ts b/front/src/modules/trainschedule/components/Timetable/useFilterTimetableItems.ts similarity index 71% rename from front/src/modules/trainschedule/components/Timetable/useFilterTrainSchedules.ts rename to front/src/modules/trainschedule/components/Timetable/useFilterTimetableItems.ts index 3edb7d6c341..5610d1eab60 100644 --- a/front/src/modules/trainschedule/components/Timetable/useFilterTrainSchedules.ts +++ b/front/src/modules/trainschedule/components/Timetable/useFilterTimetableItems.ts @@ -10,17 +10,16 @@ import type { TimetableItemResult, ValidityFilter, } from './types'; -import { extractTagCode, keepTrain } from './utils'; +import { extractTagCode, keepItem } from './utils'; /** - * Hook filtering a train schedules array for timetable train cards + * Hook filtering a timetable items array depending on some filters * @param timetableItems the timetable's items - * @param setDisplayedTimetableItems the function to update the trains to display in the timetable - * @returns all filters and their setters + * @returns all filters, their setters, the unique speed limit tags among all items and the filtered timetable items */ -const useFilterTrainSchedules = ( +const useFilterTimetableItems = ( timetableItems: TimetableItemResult[] -): TimetableFilters & { filteredTrainSchedules: TimetableItemResult[] } => { +): TimetableFilters & { filteredTimetableItems: TimetableItemResult[] } => { const [nameLabelFilter, setNameLabelFilter] = useState(''); const [rollingStockFilter, setRollingStockFilter] = useState(''); const [validityFilter, setValidityFilter] = useState('both'); @@ -32,27 +31,27 @@ const useFilterTrainSchedules = ( const debouncedRollingstockFilter = useDebounce(rollingStockFilter, 500); const uniqueTags = useMemo( - () => uniq(timetableItems.map((train) => extractTagCode(train.speedLimitTag))), + () => uniq(timetableItems.map((timetableItem) => extractTagCode(timetableItem.speedLimitTag))), [timetableItems] ); - const filteredTrainSchedules: TimetableItemResult[] = useMemo( + const filteredTimetableItems: TimetableItemResult[] = useMemo( () => - timetableItems.filter((trainSchedule) => { - if (!keepTrain(trainSchedule, debouncedNameLabelFilter)) return false; + timetableItems.filter((timetableItem) => { + if (!keepItem(timetableItem, debouncedNameLabelFilter)) return false; // Apply validity filter if (validityFilter !== 'both') { - if (validityFilter === 'valid' && !trainSchedule.isValid) return false; - if (validityFilter === 'invalid' && trainSchedule.isValid) return false; + if (validityFilter === 'valid' && !timetableItem.isValid) return false; + if (validityFilter === 'invalid' && timetableItem.isValid) return false; } // Apply scheduled points honored filter if (scheduledPointsHonoredFilter !== 'both') { - if (!trainSchedule.isValid) { + if (!timetableItem.isValid) { return false; } - const { scheduledPointsNotHonored } = trainSchedule; + const { scheduledPointsNotHonored } = timetableItem; if ( (scheduledPointsHonoredFilter === 'honored' && scheduledPointsNotHonored) || (scheduledPointsHonoredFilter === 'notHonored' && !scheduledPointsNotHonored) @@ -64,7 +63,7 @@ const useFilterTrainSchedules = ( // Apply tag filter if ( selectedTags.size > 0 && - !selectedTags.has(extractTagCode(trainSchedule.speedLimitTag)) + !selectedTags.has(extractTagCode(timetableItem.speedLimitTag)) ) { return false; } @@ -77,7 +76,7 @@ const useFilterTrainSchedules = ( reference = '', series = '', subseries = '', - } = trainSchedule.rollingStock?.metadata || {}; + } = timetableItem.rollingStock?.metadata || {}; if ( ![detail, family, reference, series, subseries].some((v) => v.toLowerCase().includes(debouncedRollingstockFilter.toLowerCase()) @@ -99,7 +98,7 @@ const useFilterTrainSchedules = ( ); return { - filteredTrainSchedules, + filteredTimetableItems, uniqueTags, nameLabelFilter, setNameLabelFilter, @@ -114,4 +113,4 @@ const useFilterTrainSchedules = ( }; }; -export default useFilterTrainSchedules; +export default useFilterTimetableItems; diff --git a/front/src/modules/trainschedule/components/Timetable/utils.ts b/front/src/modules/trainschedule/components/Timetable/utils.ts index cc23d980b6c..79134563d77 100644 --- a/front/src/modules/trainschedule/components/Timetable/utils.ts +++ b/front/src/modules/trainschedule/components/Timetable/utils.ts @@ -1,12 +1,12 @@ import specialCodeDictionary from './consts'; import type { TimetableItemResult } from './types'; -/** Filter train schedules by their names and labels */ -export const keepTrain = (train: TimetableItemResult, searchString: string): boolean => { +/** Filter timetable items by their names and labels */ +export const keepItem = (item: TimetableItemResult, searchString: string): boolean => { if (searchString) { - const searchStringInName = train.trainName.toLowerCase().includes(searchString.toLowerCase()); - const searchStringInTags = train.labels - ? train.labels.join('').toLowerCase().includes(searchString.toLowerCase()) + const searchStringInName = item.trainName.toLowerCase().includes(searchString.toLowerCase()); + const searchStringInTags = item.labels + ? item.labels.join('').toLowerCase().includes(searchString.toLowerCase()) : false; return searchStringInName || searchStringInTags; } @@ -25,5 +25,5 @@ export const extractTagCode = (tag?: string | null) => { return matches ? matches[0] : tag; }; -export const timetableHasInvalidTrain = (trains: TimetableItemResult[]) => - trains.some((train) => train.invalidReason); +export const timetableHasInvalidItem = (timetableItems: TimetableItemResult[]) => + timetableItems.some((timetableItem) => timetableItem.invalidReason);