From 7cecdb6bde4c44d655ef17e3e5d72e6e03a8ba9a Mon Sep 17 00:00:00 2001 From: josh Date: Wed, 22 Jul 2026 21:25:54 +1000 Subject: [PATCH] Added engine count/type filters --- .../Components/FlightsGoneBy/FlightFilter.vue | 52 +++++++++++++++++++ resources/js/Pages/UserProfile.vue | 10 ++++ 2 files changed, 62 insertions(+) diff --git a/resources/js/Components/FlightsGoneBy/FlightFilter.vue b/resources/js/Components/FlightsGoneBy/FlightFilter.vue index 87086cf..bfeeb9a 100644 --- a/resources/js/Components/FlightsGoneBy/FlightFilter.vue +++ b/resources/js/Components/FlightsGoneBy/FlightFilter.vue @@ -23,6 +23,8 @@ const emit = defineEmits<{ seatTypes: number[] manufacturers: string[] aircraftModels: number[] + engineTypes: string[] + engineCounts: number[] airportRegions: number[] otherUsers: string[] }] @@ -62,6 +64,8 @@ function buildOptions(flights: Flight[]) { const regionRanges = new Set() const manufacturers = new Map() const aircraftModels = new Map() + const engineTypes = new Map() + const engineCounts = new Map() const airportRegions = new Map }>() const otherUsers = new Set() @@ -120,6 +124,12 @@ function buildOptions(flights: Flight[]) { if (f.aircraft?.id != null && f.aircraft?.display_name_short) aircraftModels.set(f.aircraft.id, { id: f.aircraft.id, name: f.aircraft.display_name_short }) + if (f.aircraft?.engine_type) + engineTypes.set(f.aircraft.engine_type, { name: f.aircraft.engine_type }) + + if (f.aircraft?.engine_count != null) + engineCounts.set(f.aircraft.engine_count, { count: f.aircraft.engine_count }) + flightScopes.add(f.scope) flightRanges.add(f.range) regionRanges.add(f.region_range) @@ -144,6 +154,8 @@ function buildOptions(flights: Flight[]) { regionRanges: regionRangeOrder.filter(r => regionRanges.has(r)).map(r => ({ value: r, label: REGION_RANGE_LABELS[r] })), manufacturers: [...manufacturers.values()].sort((a, b) => a.name.localeCompare(b.name)), aircraftModels: [...aircraftModels.values()].sort((a, b) => a.name.localeCompare(b.name)), + engineTypes: [...engineTypes.values()].sort((a, b) => a.name.localeCompare(b.name)), + engineCounts: [...engineCounts.values()].sort((a, b) => a.count - b.count), airportRegions: [...airportRegions.values()].sort((a, b) => a.name.localeCompare(b.name)), otherUsers: [...otherUsers].sort((a, b) => a.localeCompare(b)), } @@ -167,6 +179,8 @@ const selectedFlightReasons = ref([]) const selectedSeatTypes = ref([]) const selectedManufacturers = ref([]) const selectedAircraftModels = ref([]) +const selectedEngineTypes = ref([]) +const selectedEngineCounts = ref([]) const selectedAirportRegions = ref([]) const selectedOtherUsers = ref([]) @@ -197,6 +211,8 @@ function emitFilters() { seatTypes: selectedSeatTypes.value, manufacturers: selectedManufacturers.value, aircraftModels: selectedAircraftModels.value, + engineTypes: selectedEngineTypes.value, + engineCounts: selectedEngineCounts.value, airportRegions: selectedAirportRegions.value, otherUsers: selectedOtherUsers.value, }) @@ -496,6 +512,42 @@ const countryFlagClass = (code: string) => + + + + + + + + ([]) const selectedSeatTypes = ref([]) const selectedManufacturers = ref([]) const selectedAircraftModels = ref([]) +const selectedEngineTypes = ref([]) +const selectedEngineCounts = ref([]) const selectedAirportRegions = ref([]) const selectedOtherUsers = ref([]) @@ -74,6 +76,8 @@ const activeFilterCount = computed(() => selectedSeatTypes.value.length + selectedManufacturers.value.length + selectedAircraftModels.value.length + + selectedEngineTypes.value.length + + selectedEngineCounts.value.length + selectedAirportRegions.value.length + selectedOtherUsers.value.length ) @@ -93,6 +97,8 @@ function onFiltersChange(filters: { seatTypes: number[] manufacturers: string[] aircraftModels: number[] + engineTypes: string[] + engineCounts: number[] airportRegions: number[] otherUsers: string[] }) { @@ -111,6 +117,8 @@ function onFiltersChange(filters: { selectedSeatTypes.value = filters.seatTypes selectedManufacturers.value = filters.manufacturers selectedAircraftModels.value = filters.aircraftModels + selectedEngineTypes.value = filters.engineTypes + selectedEngineCounts.value = filters.engineCounts selectedAirportRegions.value = filters.airportRegions selectedOtherUsers.value = filters.otherUsers } @@ -141,6 +149,8 @@ function matchesFilters(f: Flight): boolean { if (selectedSeatTypes.value.length && !selectedSeatTypes.value.includes(f.seat_type?.id ?? -1)) return false if (selectedManufacturers.value.length && !selectedManufacturers.value.includes(f.aircraft?.manufacturer_code ?? '')) return false if (selectedAircraftModels.value.length && !selectedAircraftModels.value.includes(f.aircraft?.id ?? -1)) return false + if (selectedEngineTypes.value.length && !selectedEngineTypes.value.includes(f.aircraft?.engine_type ?? '')) return false + if (selectedEngineCounts.value.length && !selectedEngineCounts.value.includes(f.aircraft?.engine_count ?? -1)) return false if (selectedAirportRegions.value.length) { const depRegion = f.departure_airport.region?.id const arrRegion = f.arrival_airport.region?.id