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