Added Pilot Filter functionality
This commit is contained in:
@@ -11,6 +11,7 @@ import { getMissionsAPI } from "_querys/missions";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useMap } from "react-leaflet";
|
||||
import { HPGValidationRequired } from "_helpers/hpgValidationRequired";
|
||||
import { usePilotConnectionStore } from "_store/pilot/connectionStore";
|
||||
|
||||
const PopupContent = ({
|
||||
aircrafts,
|
||||
@@ -136,6 +137,7 @@ const PopupContent = ({
|
||||
export const MarkerCluster = () => {
|
||||
const map = useMap();
|
||||
const dispatchState = useDispatchConnectionStore((s) => s);
|
||||
const pilotState = usePilotConnectionStore((s) => s);
|
||||
const dispatcherConnected = dispatchState.status === "connected";
|
||||
const { data: aircrafts } = useQuery({
|
||||
queryKey: ["aircrafts"],
|
||||
@@ -155,9 +157,36 @@ export const MarkerCluster = () => {
|
||||
return missions.filter((m: Mission) => {
|
||||
if (m.state === "draft" && !dispatcherConnected) return false;
|
||||
if (dispatchState.hideDraftMissions && m.state === "draft") return false;
|
||||
if (
|
||||
pilotState.status === "connected" &&
|
||||
!pilotState.showOtherMissions &&
|
||||
pilotState.selectedStation
|
||||
)
|
||||
return m.missionStationIds.includes(pilotState.selectedStation.id);
|
||||
return true;
|
||||
});
|
||||
}, [missions, dispatcherConnected, dispatchState.hideDraftMissions]);
|
||||
}, [
|
||||
missions,
|
||||
dispatcherConnected,
|
||||
dispatchState.hideDraftMissions,
|
||||
pilotState.selectedStation,
|
||||
pilotState.showOtherMissions,
|
||||
pilotState.status,
|
||||
]);
|
||||
|
||||
const filteredAircrafts = useMemo(() => {
|
||||
return aircrafts?.filter((a: ConnectedAircraft) => {
|
||||
if (pilotState.status === "connected" && !pilotState.showOtherAircrafts) {
|
||||
return a.stationId === pilotState.connectedAircraft?.stationId;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}, [
|
||||
aircrafts,
|
||||
pilotState.status,
|
||||
pilotState.showOtherAircrafts,
|
||||
pilotState.connectedAircraft?.stationId,
|
||||
]);
|
||||
|
||||
// Track zoom level in state
|
||||
const [zoom, setZoom] = useState(() => map.getZoom());
|
||||
@@ -178,7 +207,7 @@ export const MarkerCluster = () => {
|
||||
lat: number;
|
||||
lng: number;
|
||||
}[] = [];
|
||||
aircrafts?.forEach((aircraft) => {
|
||||
filteredAircrafts?.forEach((aircraft) => {
|
||||
const lat = aircraft.posLat!;
|
||||
const lng = aircraft.posLng!;
|
||||
|
||||
@@ -255,7 +284,7 @@ export const MarkerCluster = () => {
|
||||
});
|
||||
|
||||
return clusterWithAvgPos;
|
||||
}, [aircrafts, filteredMissions, zoom]);
|
||||
}, [filteredAircrafts, filteredMissions, zoom]);
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user