+
-
+
@@ -211,6 +202,33 @@
// Lab Settings Panel functionality
document.addEventListener("DOMContentLoaded", function () {
const panel = document.getElementById("panel-lab-settings");
+ const tabContainer = document.getElementById("lab-settings-tab-container");
+
+ // Resize observer to calculate tab container height
+ function resizeTabContainer() {
+ const panelRect = panel.getBoundingClientRect();
+ const tabContainerRect = tabContainer.getBoundingClientRect();
+ const footer = panel.querySelector(".panel-block.flex.items-center");
+ const footerRect = footer ? footer.getBoundingClientRect() : { height: 0 };
+
+ // Calculate available height: panel height - everything above tab container - footer height
+ const availableHeight =
+ panelRect.height - (tabContainerRect.top - panelRect.top) - footerRect.height;
+
+ if (availableHeight > 0) {
+ tabContainer.style.height = `${availableHeight}px`;
+ }
+ }
+
+ // Set up resize observer
+ const resizeObserver = new ResizeObserver(() => {
+ resizeTabContainer();
+ });
+
+ resizeObserver.observe(panel);
+
+ // Initial resize
+ setTimeout(resizeTabContainer, 0);
// Tab switching
const tabButtons = panel.querySelectorAll(".panel-tab-button");
@@ -442,36 +460,7 @@
}
}
- // Make panel draggable
- let isDragging = false;
- let startX, startY, initialLeft, initialTop;
-
- const heading = panel.querySelector(".panel-heading");
- heading.style.cursor = "move";
-
- heading.addEventListener("mousedown", (e) => {
- isDragging = true;
- const rect = panel.getBoundingClientRect();
- startX = e.clientX;
- startY = e.clientY;
- initialLeft = rect.left;
- initialTop = rect.top;
- e.preventDefault();
- });
-
- document.addEventListener("mousemove", (e) => {
- if (!isDragging) return;
-
- const deltaX = e.clientX - startX;
- const deltaY = e.clientY - startY;
-
- panel.style.left = initialLeft + deltaX + "px";
- panel.style.top = initialTop + deltaY + "px";
- });
-
- document.addEventListener("mouseup", () => {
- isDragging = false;
- });
+ // Panel drag handling is managed by draggable-panels.html script
});
// Global function to show the lab settings panel
diff --git a/src/topoViewer/templates/partials/panel-link-editor.html b/src/topoViewer/templates/partials/panel-link-editor.html
index c78c15b69..fc3270cc0 100644
--- a/src/topoViewer/templates/partials/panel-link-editor.html
+++ b/src/topoViewer/templates/partials/panel-link-editor.html
@@ -1,10 +1,15 @@
-
Link Editor
+
+ Link Editor
+
+
@@ -17,17 +22,58 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
-
-
-
-
- Note:
- This link connects to a network node. Configure extended properties on the network
- node itself.
-
+
+
+
+
+
+
+
+ Note:
+ This link connects to a network node. Configure extended properties on the network
+ node itself.
@@ -173,7 +176,7 @@
-
+
diff --git a/src/topoViewer/templates/partials/panel-link.html b/src/topoViewer/templates/partials/panel-link.html
index 3a913bb86..8ea87c6dc 100644
--- a/src/topoViewer/templates/partials/panel-link.html
+++ b/src/topoViewer/templates/partials/panel-link.html
@@ -1,83 +1,115 @@
- Link Properties
+
+ Link Properties
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+ MAC
+
+ N/A
+
+
+
+ MTU
+
+ N/A
+
+
+ Type
+
+ N/A
+
+
+
+
-
-
-
-
-
+
+
+
+ MAC
+
+ N/A
+
+
+
+ MTU
+
+ N/A
+
+
+
+ Type
+
+ N/A
+
+
-
+
+
diff --git a/src/topoViewer/templates/partials/panel-network-editor.html b/src/topoViewer/templates/partials/panel-network-editor.html
index 1ddead7a2..e675b4f16 100644
--- a/src/topoViewer/templates/partials/panel-network-editor.html
+++ b/src/topoViewer/templates/partials/panel-network-editor.html
@@ -1,165 +1,168 @@
-
Network Editor
-
-
-
-
-
-
-
-
+
+ Network Editor
+
+
-
-