feat: refine earth hud panel behaviors and news board
This commit is contained in:
26
frontend/public/earth/js/controls.js
vendored
26
frontend/public/earth/js/controls.js
vendored
@@ -18,6 +18,11 @@ import {
|
||||
import { getShowCables } from "./cables.js";
|
||||
import { toggleBGP, getShowBGP, getBGPCount } from "./bgp.js";
|
||||
import { ensureTVPanelReady } from "./tv.js";
|
||||
import {
|
||||
ensureNewsPanelReady,
|
||||
setNewsPanelVisible,
|
||||
updateNewsToggleUI,
|
||||
} from "./news.js";
|
||||
|
||||
export let autoRotate = true;
|
||||
export let zoomLevel = 1.0;
|
||||
@@ -31,6 +36,7 @@ const HUD_PANEL_IDS = [
|
||||
"legend",
|
||||
"earth-stats",
|
||||
"tv-panel",
|
||||
"news-panel",
|
||||
"layer-toggles",
|
||||
];
|
||||
const DRAGGABLE_PANEL_SELECTOR = ".hud-panel-draggable";
|
||||
@@ -97,6 +103,14 @@ function setHudPanelVisibility(panelId, visible) {
|
||||
});
|
||||
}
|
||||
}
|
||||
if (panelId === "news-panel") {
|
||||
updateNewsToggleUI(visible);
|
||||
if (visible) {
|
||||
ensureNewsPanelReady().catch((error) => {
|
||||
console.error("初始化态势新闻面板失败:", error);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function syncSettingsToggle(panelId, visible) {
|
||||
@@ -230,7 +244,7 @@ function setupDraggableHudPanels() {
|
||||
};
|
||||
|
||||
bindListener(handle, "pointerdown", (event) => {
|
||||
if (event.target.closest(".hud-panel-close, .layer-panel-btn, .info-card-close, .tv-panel-select, .tv-panel-action, .tv-panel-player, .tv-panel-edge, .legend-bar-btn")) return;
|
||||
if (event.target.closest(".hud-panel-close, .hud-panel__action, .layer-panel-btn, .info-card-close, .tv-panel-select, .tv-panel-player, .tv-panel-edge, .legend-bar-btn, .news-story-card")) return;
|
||||
isDragging = true;
|
||||
startPointerX = event.clientX;
|
||||
startPointerY = event.clientY;
|
||||
@@ -623,7 +637,7 @@ function setupLayerPanel() {
|
||||
collapseBtn.title = isCollapsed ? "展开" : "折叠";
|
||||
collapseBtn.setAttribute("aria-label", isCollapsed ? "展开图层列表" : "折叠图层列表");
|
||||
const icon = collapseBtn.querySelector(".material-symbols-rounded");
|
||||
if (icon) icon.textContent = isCollapsed ? "expand_less" : "expand_more";
|
||||
if (icon) icon.textContent = isCollapsed ? "expand_more" : "expand_less";
|
||||
});
|
||||
|
||||
if (searchInput) {
|
||||
@@ -801,6 +815,14 @@ function setupTerrainControls() {
|
||||
console.error("初始化电视直播面板失败:", error);
|
||||
});
|
||||
}
|
||||
const newsVisible = !document.getElementById("news-panel")?.classList.contains("hud-panel-hidden");
|
||||
updateNewsToggleUI(newsVisible);
|
||||
setNewsPanelVisible(newsVisible);
|
||||
if (newsVisible) {
|
||||
ensureNewsPanelReady().catch((error) => {
|
||||
console.error("初始化态势新闻面板失败:", error);
|
||||
});
|
||||
}
|
||||
updateLayoutUI(container);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user