Improved StationSelect
This commit is contained in:
@@ -107,8 +107,27 @@ export function StationsSelect({
|
|||||||
menuPlacement={menuPlacement}
|
menuPlacement={menuPlacement}
|
||||||
isMulti={isMulti}
|
isMulti={isMulti}
|
||||||
onChange={(v) => {
|
onChange={(v) => {
|
||||||
|
console.log("Selected values:", v);
|
||||||
setValue(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 hpgAmbulanceState = v.includes("RTW") ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED;
|
||||||
const hpgFireEngineState = v.includes("FW") ? 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;
|
const hpgPoliceState = v.includes("POL") ? HpgState.DISPATCHED : HpgState.NOT_REQUESTED;
|
||||||
|
|||||||
@@ -370,9 +370,17 @@ const Patientdetails = ({ mission }: { mission: Mission }) => {
|
|||||||
|
|
||||||
const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const [selectedStation, setSelectedStation] = useState<number | "RTW" | "POL" | "FW" | null>(
|
const [selectedStation, setSelectedStation] = useState<{
|
||||||
null,
|
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({
|
const { data: connectedAircrafts } = useQuery({
|
||||||
queryKey: ["aircrafts"],
|
queryKey: ["aircrafts"],
|
||||||
queryFn: () => getConnectedAircraftsAPI(),
|
queryFn: () => getConnectedAircraftsAPI(),
|
||||||
@@ -521,9 +529,14 @@ const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
|||||||
menuPlacement="top"
|
menuPlacement="top"
|
||||||
className="min-w-[320px] flex-1"
|
className="min-w-[320px] flex-1"
|
||||||
isMulti={false}
|
isMulti={false}
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
onChange={(v) => {
|
||||||
onChange={(v: any) => {
|
console.log("Selected station:", v);
|
||||||
setSelectedStation(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}
|
selectedStations={mission.missionStationIds}
|
||||||
filterSelected
|
filterSelected
|
||||||
@@ -536,24 +549,39 @@ const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
|||||||
<button
|
<button
|
||||||
className="btn btn-sm btn-primary btn-outline"
|
className="btn btn-sm btn-primary btn-outline"
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
if (typeof selectedStation === "string") {
|
if (
|
||||||
|
selectedStation.hpgAmbulanceState !== "NOT_REQUESTED" ||
|
||||||
|
selectedStation.hpgFireEngineState !== "NOT_REQUESTED" ||
|
||||||
|
selectedStation.hpgPoliceState !== "NOT_REQUESTED"
|
||||||
|
) {
|
||||||
|
// Determine which vehicle type is selected
|
||||||
|
let vehicleName: "RTW" | "POL" | "FW" | undefined;
|
||||||
|
if (selectedStation.hpgAmbulanceState !== "NOT_REQUESTED") {
|
||||||
|
vehicleName = "RTW";
|
||||||
|
} else if (selectedStation.hpgPoliceState !== "NOT_REQUESTED") {
|
||||||
|
vehicleName = "POL";
|
||||||
|
} else if (selectedStation.hpgFireEngineState !== "NOT_REQUESTED") {
|
||||||
|
vehicleName = "FW";
|
||||||
|
}
|
||||||
|
|
||||||
await sendAlertMutation.mutate({
|
await sendAlertMutation.mutate({
|
||||||
id: mission.id,
|
id: mission.id,
|
||||||
vehicleName: selectedStation,
|
vehicleName: vehicleName,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
if (!selectedStation) return;
|
if (typeof selectedStation.selectedStationId !== "number") return;
|
||||||
|
|
||||||
await updateMissionMutation.mutateAsync({
|
await updateMissionMutation.mutateAsync({
|
||||||
id: mission.id,
|
id: mission.id,
|
||||||
missionEdit: {
|
missionEdit: {
|
||||||
missionStationIds: {
|
missionStationIds: {
|
||||||
push: selectedStation,
|
push: selectedStation.selectedStationId,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
await sendAlertMutation.mutate({
|
await sendAlertMutation.mutate({
|
||||||
id: mission.id,
|
id: mission.id,
|
||||||
stationId: selectedStation,
|
stationId: selectedStation.selectedStationId,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|||||||
Reference in New Issue
Block a user