did something with markers
This commit is contained in:
@@ -58,6 +58,7 @@ export const calculateAnchor = (
|
|||||||
y: rect.top + rect.height / 2,
|
y: rect.top + rect.height / 2,
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
const ownMarkerBounds = (ownMarker as HTMLElement).getBoundingClientRect();
|
const ownMarkerBounds = (ownMarker as HTMLElement).getBoundingClientRect();
|
||||||
const ownMarkerPosition = {
|
const ownMarkerPosition = {
|
||||||
x: ownMarkerBounds.left + ownMarkerBounds.width / 2,
|
x: ownMarkerBounds.left + ownMarkerBounds.width / 2,
|
||||||
@@ -75,6 +76,12 @@ export const calculateAnchor = (
|
|||||||
centerOfOverlappingMarkers.x /= markersPosition.length;
|
centerOfOverlappingMarkers.x /= markersPosition.length;
|
||||||
centerOfOverlappingMarkers.y /= markersPosition.length;
|
centerOfOverlappingMarkers.y /= markersPosition.length;
|
||||||
|
|
||||||
|
if (id == "2") {
|
||||||
|
console.log("markersInCluser", marksersInCluster);
|
||||||
|
console.log("ownMarkerPosition", ownMarkerPosition);
|
||||||
|
console.log("centerOfOverlappingMarkers", centerOfOverlappingMarkers);
|
||||||
|
}
|
||||||
|
|
||||||
if (marksersInCluster.length > 1) {
|
if (marksersInCluster.length > 1) {
|
||||||
if (centerOfOverlappingMarkers.y < ownMarkerPosition.y) {
|
if (centerOfOverlappingMarkers.y < ownMarkerPosition.y) {
|
||||||
if (centerOfOverlappingMarkers.x > ownMarkerPosition.x) {
|
if (centerOfOverlappingMarkers.x > ownMarkerPosition.x) {
|
||||||
|
|||||||
@@ -281,7 +281,6 @@ const AircraftMarker = ({ aircraft }: { aircraft: Aircraft }) => {
|
|||||||
|
|
||||||
const handleZoom = () => {
|
const handleZoom = () => {
|
||||||
const zoom = map.getZoom();
|
const zoom = map.getZoom();
|
||||||
console.log("zoom", zoom);
|
|
||||||
setHideMarker(zoom < 9);
|
setHideMarker(zoom < 9);
|
||||||
handleConflict();
|
handleConflict();
|
||||||
};
|
};
|
||||||
@@ -331,6 +330,8 @@ const AircraftMarker = ({ aircraft }: { aircraft: Aircraft }) => {
|
|||||||
</span>
|
</span>
|
||||||
<div
|
<div
|
||||||
data-id="${aircraft.id}"
|
data-id="${aircraft.id}"
|
||||||
|
data-anchor-lat="${aircraft.location.lat}"
|
||||||
|
data-anchor-lng="${aircraft.location.lng}"
|
||||||
id="marker-domain-${aircraft.id}"
|
id="marker-domain-${aircraft.id}"
|
||||||
class="${cn(
|
class="${cn(
|
||||||
"map-collision absolute w-[200%] h-[200%] top-0 left-0 transform pointer-events-none",
|
"map-collision absolute w-[200%] h-[200%] top-0 left-0 transform pointer-events-none",
|
||||||
|
|||||||
@@ -8,9 +8,7 @@ export const ContextMenu = () => {
|
|||||||
const map = useMap();
|
const map = useMap();
|
||||||
const { contextMenu, setContextMenu, setSearchElements, setSearchPopup } =
|
const { contextMenu, setContextMenu, setSearchElements, setSearchPopup } =
|
||||||
useMapStore();
|
useMapStore();
|
||||||
const setMissionFormValues = usePannelStore(
|
const { setMissionFormValues, setOpen } = usePannelStore((state) => state);
|
||||||
(state) => state.setMissionFormValues,
|
|
||||||
);
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleContextMenu = (e: any) => {
|
const handleContextMenu = (e: any) => {
|
||||||
setContextMenu({ lat: e.latlng.lat, lng: e.latlng.lng });
|
setContextMenu({ lat: e.latlng.lat, lng: e.latlng.lng });
|
||||||
@@ -72,7 +70,7 @@ export const ContextMenu = () => {
|
|||||||
place_rank: number;
|
place_rank: number;
|
||||||
type: string;
|
type: string;
|
||||||
};
|
};
|
||||||
console.log(data);
|
setOpen(true);
|
||||||
setMissionFormValues({
|
setMissionFormValues({
|
||||||
addressLat: contextMenu.lat,
|
addressLat: contextMenu.lat,
|
||||||
addressLng: contextMenu.lng,
|
addressLng: contextMenu.lng,
|
||||||
|
|||||||
@@ -277,6 +277,8 @@ const MissionMarker = ({ mission }: { mission: Mission }) => {
|
|||||||
${mission.missionKeywordAbbreviation} ${mission.missionKeywordName}
|
${mission.missionKeywordAbbreviation} ${mission.missionKeywordName}
|
||||||
</span>
|
</span>
|
||||||
<div
|
<div
|
||||||
|
data-anchor-lat="${mission.addressLat}"
|
||||||
|
data-anchor-lng="${mission.addressLng}"
|
||||||
data-id="${mission.id}"
|
data-id="${mission.id}"
|
||||||
id="marker-domain-${mission.id}"
|
id="marker-domain-${mission.id}"
|
||||||
class="${cn(
|
class="${cn(
|
||||||
|
|||||||
@@ -124,9 +124,7 @@ export const MarkerCluster = () => {
|
|||||||
const existingClusterIndex = newCluster.findIndex(
|
const existingClusterIndex = newCluster.findIndex(
|
||||||
(c) => Math.abs(c.lat - lat) < 1 && Math.abs(c.lng - lng) < 1,
|
(c) => Math.abs(c.lat - lat) < 1 && Math.abs(c.lng - lng) < 1,
|
||||||
);
|
);
|
||||||
console.log("existingClusterIndex", existingClusterIndex);
|
|
||||||
const existingCluster = newCluster[existingClusterIndex];
|
const existingCluster = newCluster[existingClusterIndex];
|
||||||
console.log("existingCluster", existingCluster, lat, lng);
|
|
||||||
if (existingCluster) {
|
if (existingCluster) {
|
||||||
newCluster = [...newCluster].map((c, i) => {
|
newCluster = [...newCluster].map((c, i) => {
|
||||||
if (i === existingClusterIndex) {
|
if (i === existingClusterIndex) {
|
||||||
@@ -218,7 +216,6 @@ export const MarkerCluster = () => {
|
|||||||
map.off("zoomend", handleZoom);
|
map.off("zoomend", handleZoom);
|
||||||
};
|
};
|
||||||
}, [map, aircrafts, missions]);
|
}, [map, aircrafts, missions]);
|
||||||
console.log("cluster", cluster);
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{cluster.map((c, i) => (
|
{cluster.map((c, i) => (
|
||||||
|
|||||||
Binary file not shown.
15
packages/database/prisma/schema/connectedAircraft.prisma
Normal file
15
packages/database/prisma/schema/connectedAircraft.prisma
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
model connectedAircraft {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
userId String
|
||||||
|
publicUser Json
|
||||||
|
lastHeartbeat DateTime @default(now())
|
||||||
|
stationId Int
|
||||||
|
loginTime DateTime @default(now())
|
||||||
|
esimatedLogoutTime DateTime?
|
||||||
|
logoutTime DateTime?
|
||||||
|
positionLogIds Int[] @default([])
|
||||||
|
|
||||||
|
// relations:
|
||||||
|
user User @relation(fields: [userId], references: [id])
|
||||||
|
station Station @relation(fields: [stationId], references: [id])
|
||||||
|
}
|
||||||
12
packages/database/prisma/schema/connectedDispatch.prisma
Normal file
12
packages/database/prisma/schema/connectedDispatch.prisma
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
model ConnectedDispatch {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
userId String
|
||||||
|
publicUser Json
|
||||||
|
lastHeartbeat DateTime @default(now())
|
||||||
|
loginTime DateTime @default(now())
|
||||||
|
esimatedLogoutTime DateTime?
|
||||||
|
logoutTime DateTime?
|
||||||
|
|
||||||
|
// relations:
|
||||||
|
user User @relation(fields: [userId], references: [id])
|
||||||
|
}
|
||||||
13
packages/database/prisma/schema/positionLog.prisma
Normal file
13
packages/database/prisma/schema/positionLog.prisma
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
model PositionLog {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
userId String
|
||||||
|
simulator String
|
||||||
|
lat Float
|
||||||
|
lng Float
|
||||||
|
alt Int
|
||||||
|
speed Int
|
||||||
|
heading Int
|
||||||
|
timestamp DateTime @default(now())
|
||||||
|
// relations:
|
||||||
|
user User @relation(fields: [userId], references: [id])
|
||||||
|
}
|
||||||
@@ -35,4 +35,5 @@ model Station {
|
|||||||
|
|
||||||
MissionsOnStations MissionsOnStations[]
|
MissionsOnStations MissionsOnStations[]
|
||||||
MissionOnStationUsers MissionOnStationUsers[]
|
MissionOnStationUsers MissionOnStationUsers[]
|
||||||
|
connectedAircraft connectedAircraft[]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,6 +48,9 @@ model User {
|
|||||||
*/
|
*/
|
||||||
Mission Mission[]
|
Mission Mission[]
|
||||||
MissionOnStationUsers MissionOnStationUsers[]
|
MissionOnStationUsers MissionOnStationUsers[]
|
||||||
|
ConnectedDispatch ConnectedDispatch[]
|
||||||
|
connectedAircraft connectedAircraft[]
|
||||||
|
PositionLog PositionLog[]
|
||||||
|
|
||||||
@@map(name: "users")
|
@@map(name: "users")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user