} ``true`` when the node was rendered successfully.
*/
@@ -2504,6 +2520,7 @@ export async function fetchNodeDetailHtml(referenceData, options = {}) {
traces,
renderShortHtml,
roleIndex,
+ includeMapPanel: options.includeMapPanel === true,
});
}
@@ -2548,8 +2565,13 @@ export async function initializeNodeDetailPage(options = {}) {
refreshImpl,
renderShortHtml: options.renderShortHtml,
privateMode,
+ includeMapPanel: true,
});
root.innerHTML = html;
+ await initializeNodeDetailMapPanel(root, referenceData, {
+ fetchImpl: options.fetchImpl,
+ document: documentRef,
+ });
return true;
} catch (error) {
console.error('Failed to render node detail page', error);
diff --git a/web/public/assets/styles/base.css b/web/public/assets/styles/base.css
index d44e2e46..b1d80849 100644
--- a/web/public/assets/styles/base.css
+++ b/web/public/assets/styles/base.css
@@ -1199,6 +1199,61 @@ body.dark .node-detail-overlay__close:hover {
margin: 12px 0 24px;
}
+.node-detail__map-panel {
+ padding: 0 20px;
+ margin: 12px 0 24px;
+}
+
+.node-detail__map-header {
+ display: flex;
+ align-items: baseline;
+ justify-content: space-between;
+ gap: 12px;
+ margin-bottom: 8px;
+}
+
+.node-detail__map-header h3 {
+ margin: 0;
+ font-size: 1.1rem;
+}
+
+.node-detail__map-staging {
+ display: none;
+}
+
+.node-detail__map-status {
+ color: var(--muted);
+ font-size: 0.95rem;
+}
+
+.node-detail__map-slot .map-panel {
+ height: 220px;
+ border-radius: 12px;
+ overflow: hidden;
+ border: 1px solid var(--line);
+}
+
+.map-panel--embedded {
+ flex: none;
+ height: 220px;
+ min-height: 0;
+}
+
+.map-panel--embedded #map {
+ height: 220px;
+ border-radius: 12px;
+ border: none;
+}
+
+.map-panel--embedded #mapLegend {
+ display: none;
+}
+
+.map-panel--embedded .map-toolbar {
+ top: 8px;
+ right: 8px;
+}
+
.node-detail__charts-grid {
display: grid;
gap: 24px;
diff --git a/web/views/node_detail.erb b/web/views/node_detail.erb
index 2e6ba33a..a4e18a1c 100644
--- a/web/views/node_detail.erb
+++ b/web/views/node_detail.erb
@@ -39,6 +39,9 @@
This page requires JavaScript to display node information.
+
+ <%= erb :"shared/_map_panel", locals: { full_screen: false, legend_collapsed: true } %>
+