filtry pociągów

This commit is contained in:
2023-03-15 15:19:50 +01:00
parent 021474cfb0
commit 9e1df1fb61
8 changed files with 96 additions and 56 deletions
+18 -8
View File
@@ -1,9 +1,19 @@
export const enum TrainFilterType {
comments = "comments",
twr = "twr",
skr = "skr",
passenger = "passenger",
freight = "freight",
other = "other",
noTimetable = "noTimetable"
export enum TrainFilterSection {
TRAIN_TYPE = 'TRAIN_TYPE',
TIMETABLE_TYPE = 'TIMETABLE_TYPE',
COMMENTS = 'COMMENTS',
TIMETABLE = 'TIMETABLE',
}
export const enum TrainFilterType {
noComments = 'noComments',
withComments = 'withComments',
twr = 'twr',
skr = 'skr',
passenger = 'passenger',
freight = 'freight',
other = 'other',
noTimetable = 'noTimetable',
withTimetable = 'withTimetable',
}
+17 -10
View File
@@ -24,26 +24,33 @@ function filterTrainList(trainList: Train[], searchedTrain: string, searchedDriv
const isFiltered = filters.every((f) => {
if (f.isActive) return true;
if (!train.timetableData) return filters.find((filter) => filter.id == TrainFilterType.noTimetable)!.isActive;
switch (f.id) {
case TrainFilterType.comments:
return !train.timetableData.followingStops.some((stop) => stop.comments);
case TrainFilterType.noTimetable:
return train.timetableData;
case TrainFilterType.withTimetable:
return !train.timetableData;
case TrainFilterType.noComments:
return train.timetableData?.followingStops.some((stop) => stop.comments) || false;
case TrainFilterType.withComments:
return train.timetableData?.followingStops.every((stop) => stop.comments) || true;
case TrainFilterType.twr:
return !train.timetableData.TWR;
return !train.timetableData?.TWR || true;
case TrainFilterType.skr:
return !train.timetableData.SKR;
return !train.timetableData?.SKR || true;
case TrainFilterType.passenger:
return !/^[AMRE]\D{2}$/.test(train.timetableData.category);
return !/^[AMRE]\D{2}$/.test(train.timetableData?.category || '');
case TrainFilterType.freight:
return !train.timetableData.category.startsWith('T');
return !train.timetableData?.category.startsWith('T');
case TrainFilterType.other:
return !/^[PXZL]\D{2}$/.test(train.timetableData.category);
return !/^[PXZL]\D{2}$/.test(train.timetableData?.category || '');
default:
return true;
@@ -53,7 +60,7 @@ function filterTrainList(trainList: Train[], searchedTrain: string, searchedDriv
return (
(searchedTrain.length > 0 ? train.trainNo.toString().startsWith(searchedTrain) : true) &&
(searchedDriver.length > 0 ? train.driverName.toLowerCase().startsWith(searchedDriver.toLowerCase()) : true) &&
(!train.timetableData ? !train.online : true) &&
(!train.timetableData ? train.online : train.timetableData) &&
isFiltered
);
});