completed new mapState
This commit is contained in:
@@ -14,12 +14,18 @@ interface MapStore {
|
|||||||
id: string;
|
id: string;
|
||||||
tab: "home" | "";
|
tab: "home" | "";
|
||||||
}[];
|
}[];
|
||||||
setOpenMissionMarker: (mission: { open: string[]; close: string[] }) => void;
|
setOpenMissionMarker: (mission: {
|
||||||
|
open: MapStore["openMissionMarker"];
|
||||||
|
close: string[];
|
||||||
|
}) => void;
|
||||||
openAircraftMarker: {
|
openAircraftMarker: {
|
||||||
id: string;
|
id: string;
|
||||||
tab: "home" | "fms" | "aircraft" | "mission" | "chat";
|
tab: "home" | "fms" | "aircraft" | "mission" | "chat";
|
||||||
}[];
|
}[];
|
||||||
setOpenAircraftMarker: (mission: { open: string[]; close: string[] }) => void;
|
setOpenAircraftMarker: (aircraft: {
|
||||||
|
open: MapStore["openAircraftMarker"];
|
||||||
|
close: string[];
|
||||||
|
}) => void;
|
||||||
searchElements: {
|
searchElements: {
|
||||||
id: number;
|
id: number;
|
||||||
nodes: {
|
nodes: {
|
||||||
@@ -52,16 +58,18 @@ export const useMapStore = create<MapStore>((set, get) => ({
|
|||||||
setOpenMissionMarker: ({ open, close }) => {
|
setOpenMissionMarker: ({ open, close }) => {
|
||||||
set((state) => ({
|
set((state) => ({
|
||||||
openMissionMarker: [...state.openMissionMarker, ...open].filter(
|
openMissionMarker: [...state.openMissionMarker, ...open].filter(
|
||||||
(id) => !close.includes(id),
|
(marker) => !close.includes(marker.id),
|
||||||
),
|
),
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
openAircraftMarker: [],
|
openAircraftMarker: [],
|
||||||
setOpenAircraftMarker: ({ open, close }) => {
|
setOpenAircraftMarker: ({ open, close }) => {
|
||||||
set((state) => ({
|
const oldMarkers = get().openAircraftMarker.filter(
|
||||||
openAircraftMarker: [...state.openAircraftMarker, ...open].filter(
|
(m) => !close.includes(m.id) && !open.find((o) => o.id === m.id),
|
||||||
(id) => !close.includes(id),
|
);
|
||||||
),
|
|
||||||
|
set(() => ({
|
||||||
|
openAircraftMarker: [...oldMarkers, ...open],
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
map: {
|
map: {
|
||||||
|
|||||||
@@ -163,7 +163,7 @@ const AircraftMarker = ({ aircraft }: { aircraft: Aircraft }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleClick = () => {
|
const handleClick = () => {
|
||||||
const open = openAircraftMarker.includes(aircraft.id);
|
const open = openAircraftMarker.some((m) => m.id === aircraft.id);
|
||||||
if (open) {
|
if (open) {
|
||||||
setOpenAircraftMarker({
|
setOpenAircraftMarker({
|
||||||
open: [],
|
open: [],
|
||||||
@@ -171,7 +171,12 @@ const AircraftMarker = ({ aircraft }: { aircraft: Aircraft }) => {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
setOpenAircraftMarker({
|
setOpenAircraftMarker({
|
||||||
open: [aircraft.id],
|
open: [
|
||||||
|
{
|
||||||
|
id: aircraft.id,
|
||||||
|
tab: "home",
|
||||||
|
},
|
||||||
|
],
|
||||||
close: [],
|
close: [],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -221,7 +226,7 @@ const AircraftMarker = ({ aircraft }: { aircraft: Aircraft }) => {
|
|||||||
)}"
|
)}"
|
||||||
style="
|
style="
|
||||||
background-color: ${FMS_STATUS_COLORS[aircraft.fmsStatus]};
|
background-color: ${FMS_STATUS_COLORS[aircraft.fmsStatus]};
|
||||||
${openAircraftMarker.includes(aircraft.id) ? "opacity: 0; pointer-events: none;" : ""}
|
${openAircraftMarker.some((m) => m.id === aircraft.id) ? "opacity: 0; pointer-events: none;" : ""}
|
||||||
">
|
">
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -268,7 +273,7 @@ const AircraftMarker = ({ aircraft }: { aircraft: Aircraft }) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
{openAircraftMarker.includes(aircraft.id) && (
|
{openAircraftMarker.some((m) => m.id === aircraft.id) && (
|
||||||
<SmartPopup
|
<SmartPopup
|
||||||
id={aircraft.id}
|
id={aircraft.id}
|
||||||
ref={popupRef}
|
ref={popupRef}
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ const MissionMarker = ({ mission }: { mission: Mission }) => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleClick = () => {
|
const handleClick = () => {
|
||||||
const open = openMissionMarker.includes(mission.id);
|
const open = openMissionMarker.some((m) => m.id === mission.id);
|
||||||
if (open) {
|
if (open) {
|
||||||
setOpenMissionMarker({
|
setOpenMissionMarker({
|
||||||
open: [],
|
open: [],
|
||||||
@@ -126,7 +126,12 @@ const MissionMarker = ({ mission }: { mission: Mission }) => {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
setOpenMissionMarker({
|
setOpenMissionMarker({
|
||||||
open: [mission.id],
|
open: [
|
||||||
|
{
|
||||||
|
id: mission.id,
|
||||||
|
tab: "home",
|
||||||
|
},
|
||||||
|
],
|
||||||
close: [],
|
close: [],
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -176,7 +181,7 @@ const MissionMarker = ({ mission }: { mission: Mission }) => {
|
|||||||
)}"
|
)}"
|
||||||
style="
|
style="
|
||||||
background-color: ${MISSION_STATUS_COLORS[mission.state]};
|
background-color: ${MISSION_STATUS_COLORS[mission.state]};
|
||||||
${openMissionMarker.includes(mission.id) ? "opacity: 0; pointer-events: none;" : ""}
|
${openMissionMarker.some((m) => m.id === mission.id) ? "opacity: 0; pointer-events: none;" : ""}
|
||||||
">
|
">
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -217,7 +222,7 @@ const MissionMarker = ({ mission }: { mission: Mission }) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
{openMissionMarker.includes(mission.id) && (
|
{openMissionMarker.some((m) => m.id === mission.id) && (
|
||||||
<SmartPopup
|
<SmartPopup
|
||||||
id={mission.id}
|
id={mission.id}
|
||||||
ref={popupRef}
|
ref={popupRef}
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user