From d739d883ed4f998e675cf2521e4f5fef6ff06837 Mon Sep 17 00:00:00 2001 From: Jason McCollum Date: Thu, 23 Jan 2025 14:30:28 -0800 Subject: [PATCH] Filter pre-solve vehicles to selected map layers --- .../pre-solve-vehicle-layer.selectors.ts | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/application/frontend/src/app/core/selectors/pre-solve-vehicle-layer.selectors.ts b/application/frontend/src/app/core/selectors/pre-solve-vehicle-layer.selectors.ts index 4e8920da..04a5bad3 100644 --- a/application/frontend/src/app/core/selectors/pre-solve-vehicle-layer.selectors.ts +++ b/application/frontend/src/app/core/selectors/pre-solve-vehicle-layer.selectors.ts @@ -18,10 +18,11 @@ import { createSelector } from '@ngrx/store'; import { Feature, Point } from '@turf/helpers'; import { fromDispatcherLatLng, fromDispatcherToTurfPoint } from 'src/app/util'; import * as fromLinearReferencing from '../../util/linear-referencing'; -import { MapVehicle, Vehicle } from '../models'; +import { MapVehicle, TravelMode, Vehicle } from '../models'; import * as fromDepot from './depot.selectors'; -import { selectVehicleInitialHeadings } from './map.selectors'; +import { selectUsedMapLayers, selectVehicleInitialHeadings } from './map.selectors'; import PreSolveVehicleSelectors from './pre-solve-vehicle.selectors'; +import { MapLayerId } from '../models/map'; export const vehicleToDeckGL = ( vehicle: Vehicle, @@ -66,17 +67,24 @@ export const selectFilteredVehiclesSelected = createSelector( PreSolveVehicleSelectors.selectFilteredVehiclesSelected, selectVehicleInitialHeadings, fromDepot.selectDepot, - (vehicles, headings, depot) => { + selectUsedMapLayers, + (vehicles, headings, depot, visibleMapLayers) => { const selectedVehicles: MapVehicle[] = []; - vehicles.forEach((vehicle) => { - if (vehicle.startWaypoint?.location?.latLng) { - const position = fromDispatcherLatLng(vehicle.startWaypoint.location.latLng); - const atDepot = depot - ? fromLinearReferencing.pointsAreCoincident(position, fromDispatcherLatLng(depot)) - : false; - selectedVehicles.push(vehicleToDeckGL(vehicle, position, headings[vehicle.id], atDepot)); - } - }); + vehicles + .filter((vehicle) => + vehicle.travelMode ?? TravelMode.DRIVING + ? visibleMapLayers[MapLayerId.FourWheel].visible + : visibleMapLayers[MapLayerId.Walking].visible + ) + .forEach((vehicle) => { + if (vehicle.startWaypoint?.location?.latLng) { + const position = fromDispatcherLatLng(vehicle.startWaypoint.location.latLng); + const atDepot = depot + ? fromLinearReferencing.pointsAreCoincident(position, fromDispatcherLatLng(depot)) + : false; + selectedVehicles.push(vehicleToDeckGL(vehicle, position, headings[vehicle.id], atDepot)); + } + }); return selectedVehicles; } );