From 515ff6d6c3331f53e29e49cc3ee78a2909bf38eb Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Tue, 15 Jul 2025 23:46:22 -0700 Subject: [PATCH] Improved StationSelect --- .../dispatch/_components/StationSelect.tsx | 21 +++++++- .../map/_components/MissionMarkerTabs.tsx | 50 +++++++++++++++---- 2 files changed, 59 insertions(+), 12 deletions(-) diff --git a/apps/dispatch/app/(app)/dispatch/_components/StationSelect.tsx b/apps/dispatch/app/(app)/dispatch/_components/StationSelect.tsx index 53038bdb..09e3283b 100644 --- a/apps/dispatch/app/(app)/dispatch/_components/StationSelect.tsx +++ b/apps/dispatch/app/(app)/dispatch/_components/StationSelect.tsx @@ -107,8 +107,27 @@ export function StationsSelect({ menuPlacement={menuPlacement} isMulti={isMulti} onChange={(v) => { + console.log("Selected values:", v); setValue(v); - if (!isMulti) return onChange?.(v); + if (!isMulti) { + const singleValue = v as string; + const isVehicle = ["RTW", "FW", "POL"].includes(singleValue); + + const hpgAmbulanceState = + singleValue === "RTW" ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED; + const hpgFireEngineState = + singleValue === "FW" ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED; + const hpgPoliceState = + singleValue === "POL" ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED; + + onChange?.({ + selectedStationIds: isVehicle ? [] : [Number(singleValue)], + hpgAmbulanceState, + hpgFireEngineState, + hpgPoliceState, + }); + return; + } const hpgAmbulanceState = v.includes("RTW") ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED; const hpgFireEngineState = v.includes("FW") ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED; const hpgPoliceState = v.includes("POL") ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED; diff --git a/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx b/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx index d3a0c640..a7e99206 100644 --- a/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx +++ b/apps/dispatch/app/_components/map/_components/MissionMarkerTabs.tsx @@ -370,9 +370,17 @@ const Patientdetails = ({ mission }: { mission: Mission }) => { const Rettungsmittel = ({ mission }: { mission: Mission }) => { const queryClient = useQueryClient(); - const [selectedStation, setSelectedStation] = useState( - null, - ); + const [selectedStation, setSelectedStation] = useState<{ + selectedStationId: number | undefined; + hpgAmbulanceState: HpgState; + hpgFireEngineState: HpgState; + hpgPoliceState: HpgState; + }>({ + selectedStationId: undefined, + hpgAmbulanceState: HpgState.NOT_REQUESTED, + hpgFireEngineState: HpgState.NOT_REQUESTED, + hpgPoliceState: HpgState.NOT_REQUESTED, + }); const { data: connectedAircrafts } = useQuery({ queryKey: ["aircrafts"], queryFn: () => getConnectedAircraftsAPI(), @@ -521,9 +529,14 @@ const Rettungsmittel = ({ mission }: { mission: Mission }) => { menuPlacement="top" className="min-w-[320px] flex-1" isMulti={false} - // eslint-disable-next-line @typescript-eslint/no-explicit-any - onChange={(v: any) => { - setSelectedStation(v); + onChange={(v) => { + console.log("Selected station:", v); + setSelectedStation({ + selectedStationId: v?.selectedStationIds[0], + hpgAmbulanceState: mission.hpgAmbulanceState || HpgState.NOT_REQUESTED, + hpgFireEngineState: mission.hpgFireEngineState || HpgState.NOT_REQUESTED, + hpgPoliceState: mission.hpgPoliceState || HpgState.NOT_REQUESTED, + }); }} selectedStations={mission.missionStationIds} filterSelected @@ -536,24 +549,39 @@ const Rettungsmittel = ({ mission }: { mission: Mission }) => {