Improved StationSelect
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -370,9 +370,17 @@ const Patientdetails = ({ mission }: { mission: Mission }) => {
|
||||
|
||||
const Rettungsmittel = ({ mission }: { mission: Mission }) => {
|
||||
const queryClient = useQueryClient();
|
||||
const [selectedStation, setSelectedStation] = useState<number | "RTW" | "POL" | "FW" | null>(
|
||||
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 }) => {
|
||||
<button
|
||||
className="btn btn-sm btn-primary btn-outline"
|
||||
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({
|
||||
id: mission.id,
|
||||
vehicleName: selectedStation,
|
||||
vehicleName: vehicleName,
|
||||
});
|
||||
} else {
|
||||
if (!selectedStation) return;
|
||||
if (typeof selectedStation.selectedStationId !== "number") return;
|
||||
|
||||
await updateMissionMutation.mutateAsync({
|
||||
id: mission.id,
|
||||
missionEdit: {
|
||||
missionStationIds: {
|
||||
push: selectedStation,
|
||||
push: selectedStation.selectedStationId,
|
||||
},
|
||||
},
|
||||
});
|
||||
await sendAlertMutation.mutate({
|
||||
id: mission.id,
|
||||
stationId: selectedStation,
|
||||
stationId: selectedStation.selectedStationId,
|
||||
});
|
||||
}
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user