fix: refine treemap sizing and add earth bgp collectors
This commit is contained in:
@@ -66,7 +66,8 @@ import {
|
||||
} from "./satellites.js";
|
||||
import {
|
||||
loadBGPAnomalies,
|
||||
getBGPMarkers,
|
||||
getBGPAnomalyMarkers,
|
||||
getBGPCollectorMarkers,
|
||||
getBGPLegendItems,
|
||||
getBGPCount,
|
||||
getShowBGP,
|
||||
@@ -271,6 +272,17 @@ function showBGPInfo(marker) {
|
||||
});
|
||||
}
|
||||
|
||||
function showBGPCollectorInfo(marker) {
|
||||
setLegendMode("bgp");
|
||||
showInfoCard("bgp_collector", {
|
||||
collector: marker.userData.collector,
|
||||
country: marker.userData.country,
|
||||
city: marker.userData.city,
|
||||
anomaly_count: marker.userData.anomaly_count ?? 0,
|
||||
status: marker.userData.status || "online",
|
||||
});
|
||||
}
|
||||
|
||||
function applyCableVisualState() {
|
||||
const allCables = getCableLines();
|
||||
const pulse = (Math.sin(Date.now() * CABLE_CONFIG.pulseSpeed) + 1) * 0.5;
|
||||
@@ -638,9 +650,17 @@ function onMouseMove(event) {
|
||||
|
||||
const frontCables = getFrontFacingCables(getCableLines());
|
||||
const cableIntersects = interactionRaycaster.intersectObjects(frontCables);
|
||||
const frontFacingBGPMarkers = getFrontFacingBGPMarkers(getBGPMarkers());
|
||||
const bgpIntersects = getShowBGP()
|
||||
? interactionRaycaster.intersectObjects(frontFacingBGPMarkers)
|
||||
const frontFacingBGPAnomalyMarkers = getFrontFacingBGPMarkers(
|
||||
getBGPAnomalyMarkers(),
|
||||
);
|
||||
const frontFacingBGPCollectorMarkers = getFrontFacingBGPMarkers(
|
||||
getBGPCollectorMarkers(),
|
||||
);
|
||||
const bgpAnomalyIntersects = getShowBGP()
|
||||
? interactionRaycaster.intersectObjects(frontFacingBGPAnomalyMarkers)
|
||||
: [];
|
||||
const bgpCollectorIntersects = getShowBGP()
|
||||
? interactionRaycaster.intersectObjects(frontFacingBGPCollectorMarkers)
|
||||
: [];
|
||||
|
||||
let hoveredSat = null;
|
||||
@@ -661,7 +681,10 @@ function onMouseMove(event) {
|
||||
|
||||
if (
|
||||
hoveredBGP &&
|
||||
(!bgpIntersects.length || bgpIntersects[0]?.object !== hoveredBGP)
|
||||
(!bgpAnomalyIntersects.length ||
|
||||
bgpAnomalyIntersects[0]?.object !== hoveredBGP) &&
|
||||
(!bgpCollectorIntersects.length ||
|
||||
bgpCollectorIntersects[0]?.object !== hoveredBGP)
|
||||
) {
|
||||
if (hoveredBGP !== lockedObject) {
|
||||
setBGPMarkerState(hoveredBGP, "normal");
|
||||
@@ -690,8 +713,8 @@ function onMouseMove(event) {
|
||||
hoveredSatelliteIndex = null;
|
||||
}
|
||||
|
||||
if (bgpIntersects.length > 0 && getShowBGP()) {
|
||||
const marker = bgpIntersects[0].object;
|
||||
if (bgpAnomalyIntersects.length > 0 && getShowBGP()) {
|
||||
const marker = bgpAnomalyIntersects[0].object;
|
||||
hoveredBGP = marker;
|
||||
if (marker !== lockedObject) {
|
||||
setBGPMarkerState(marker, "hover");
|
||||
@@ -699,6 +722,15 @@ function onMouseMove(event) {
|
||||
showBGPInfo(marker);
|
||||
setInfoCardNoBorder(true);
|
||||
hideTooltip();
|
||||
} else if (bgpCollectorIntersects.length > 0 && getShowBGP()) {
|
||||
const marker = bgpCollectorIntersects[0].object;
|
||||
hoveredBGP = marker;
|
||||
if (marker !== lockedObject) {
|
||||
setBGPMarkerState(marker, "hover");
|
||||
}
|
||||
showBGPCollectorInfo(marker);
|
||||
setInfoCardNoBorder(true);
|
||||
hideTooltip();
|
||||
} else if (cableIntersects.length > 0 && getShowCables()) {
|
||||
const cable = cableIntersects[0].object;
|
||||
hoveredCable = cable;
|
||||
@@ -725,6 +757,8 @@ function onMouseMove(event) {
|
||||
setInfoCardNoBorder(true);
|
||||
} else if (lockedObjectType === "bgp" && lockedObject) {
|
||||
showBGPInfo(lockedObject);
|
||||
} else if (lockedObjectType === "bgp_collector" && lockedObject) {
|
||||
showBGPCollectorInfo(lockedObject);
|
||||
} else if (lockedObjectType === "cable" && lockedObject) {
|
||||
showCableInfo(lockedObject);
|
||||
} else if (lockedObjectType === "satellite" && lockedSatellite) {
|
||||
@@ -798,18 +832,26 @@ function onClick(event) {
|
||||
const cableIntersects = interactionRaycaster.intersectObjects(
|
||||
getFrontFacingCables(getCableLines()),
|
||||
);
|
||||
const frontFacingBGPMarkers = getFrontFacingBGPMarkers(getBGPMarkers());
|
||||
const bgpIntersects = getShowBGP()
|
||||
? interactionRaycaster.intersectObjects(frontFacingBGPMarkers)
|
||||
const frontFacingBGPAnomalyMarkers = getFrontFacingBGPMarkers(
|
||||
getBGPAnomalyMarkers(),
|
||||
);
|
||||
const frontFacingBGPCollectorMarkers = getFrontFacingBGPMarkers(
|
||||
getBGPCollectorMarkers(),
|
||||
);
|
||||
const bgpAnomalyIntersects = getShowBGP()
|
||||
? interactionRaycaster.intersectObjects(frontFacingBGPAnomalyMarkers)
|
||||
: [];
|
||||
const bgpCollectorIntersects = getShowBGP()
|
||||
? interactionRaycaster.intersectObjects(frontFacingBGPCollectorMarkers)
|
||||
: [];
|
||||
const satIntersects = getShowSatellites()
|
||||
? interactionRaycaster.intersectObject(getSatellitePoints())
|
||||
: [];
|
||||
|
||||
if (bgpIntersects.length > 0 && getShowBGP()) {
|
||||
if (bgpAnomalyIntersects.length > 0 && getShowBGP()) {
|
||||
clearLockedObject();
|
||||
|
||||
const clickedMarker = bgpIntersects[0].object;
|
||||
const clickedMarker = bgpAnomalyIntersects[0].object;
|
||||
setBGPMarkerState(clickedMarker, "locked");
|
||||
|
||||
lockedObject = clickedMarker;
|
||||
@@ -823,6 +865,23 @@ function onClick(event) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (bgpCollectorIntersects.length > 0 && getShowBGP()) {
|
||||
clearLockedObject();
|
||||
|
||||
const clickedMarker = bgpCollectorIntersects[0].object;
|
||||
setBGPMarkerState(clickedMarker, "locked");
|
||||
|
||||
lockedObject = clickedMarker;
|
||||
lockedObjectType = "bgp_collector";
|
||||
setAutoRotate(false);
|
||||
showBGPCollectorInfo(clickedMarker);
|
||||
showStatusMessage(
|
||||
`已选择观测站: ${clickedMarker.userData.collector}`,
|
||||
"info",
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cableIntersects.length > 0 && getShowCables()) {
|
||||
clearLockedObject();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user