fixed marker color when mission is running, saving new pos to mission when pos is amended

This commit is contained in:
PxlLoewe
2025-05-22 20:31:12 -07:00
parent 8c695ba990
commit b2890b3ecc
4 changed files with 103 additions and 57 deletions

View File

@@ -35,6 +35,8 @@ import { deleteMissionAPI, editMissionAPI, sendMissionAPI } from "querys/mission
import { getConnectedAircraftsAPI } from "querys/aircrafts";
import { getStationsAPI } from "querys/stations";
import { useDispatchConnectionStore } from "_store/dispatch/connectionStore";
import { HPGValidationRequired } from "helpers/hpgValidationRequired";
import { getOsmAddress } from "querys/osm";
const Einsatzdetails = ({
mission,
@@ -53,6 +55,10 @@ const Einsatzdetails = ({
});
},
});
const { data: aircrafts } = useQuery({
queryKey: ["aircrafts"],
queryFn: getConnectedAircraftsAPI,
});
const sendAlertMutation = useMutation({
mutationKey: ["missions"],
mutationFn: (id: number) => sendMissionAPI(id, {}),
@@ -155,26 +161,36 @@ const Einsatzdetails = ({
<Navigation size={16} /> {mission.addressStreet}
</p>
<p className="flex items-center gap-2">
<LocateFixed size={16} /> {mission.addressZip} {mission.addressCity}
{mission.addressZip && mission.addressCity ? (
`${mission.addressZip} ${mission.addressCity}`
) : (
<span className="italic text-gray-400">PLZ Ort nicht angegeben</span>
)}
</p>
</div>
{mission.state === "draft" && (
<div>
<div className="divider mt-0 mb-0" />
<div className="form-control mb-2">
<label className="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
className="checkbox checkbox-sm checkbox-primary"
checked={ignoreHpg}
onChange={(e) => setIgnoreHpg(e.target.checked)}
/>
<span className="label-text font-semibold leading-6">
Ohne HPG-Mission alarmieren
</span>
</label>
</div>
{HPGValidationRequired(
mission.missionStationIds,
aircrafts,
mission.hpgMissionString,
) && (
<div className="form-control mb-2">
<label className="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
className="checkbox checkbox-sm checkbox-primary"
checked={ignoreHpg}
onChange={(e) => setIgnoreHpg(e.target.checked)}
/>
<span className="label-text font-semibold leading-6">
Ohne HPG-Mission alarmieren
</span>
</label>
</div>
)}
<div className="flex items-center gap-2 w-full">
{(!hpgNeedsAttention || ignoreHpg) &&
@@ -220,7 +236,23 @@ const Einsatzdetails = ({
{!ignoreHpg && mission.hpgValidationState === HpgValidationState.POSITION_AMANDED && (
<button
className="btn btn-sm btn-warning btn-outline flex-3"
onClick={() => sendAlertMutation.mutate(mission.id)}
onClick={async () => {
const { parsed } = await getOsmAddress(
mission.hpgLocationLat || mission.addressLat,
mission.hpgLocationLng || mission.addressLng,
);
await editMissionMutation.mutateAsync({
id: mission.id,
mission: {
addressLat: mission.hpgLocationLat || mission.addressLat,
addressLng: mission.hpgLocationLng || mission.addressLng,
addressStreet: parsed.addressStreet,
addressCity: parsed.addressCity,
addressZip: parsed.addressZip,
},
});
await sendAlertMutation.mutateAsync(mission.id);
}}
>
<span className="flex items-center gap-2">
<BellRing size={16} /> Mit neuer Position alarmieren