model tree fix
Build and Push Docker Image / build (push) Successful in 12s

This commit is contained in:
jason
2026-04-23 13:55:42 -05:00
parent ea1c7f6e7f
commit 3414736b42
+23 -15
View File
@@ -286,7 +286,12 @@ async function loadStepGeometry(): Promise<void> {
fitCamera(group)
addGrid(group)
if (data.tree) wireTreePanel(data.tree)
const treeContent = document.getElementById('tree-content')
if (data.tree) {
wireTreePanel(data.tree)
} else if (treeContent) {
treeContent.innerHTML = '<p class="text-xs text-gray-500 px-4 py-3">Tree unavailable — reconvert this model in the admin panel to enable.</p>'
}
}
// ---- STL loader (client-side, Three.js built-in) -------------------------
@@ -407,31 +412,34 @@ function wireTreePanel(root: HierarchyNode) {
const content = document.getElementById('tree-content')
if (!content) return
// Skip an unnamed single-child root wrapper — go straight to its children
// Skip an unnamed root wrapper — go straight to its children
const topNodes = (!root.name && root.children.length > 0) ? root.children : [root]
content.innerHTML = ''
for (const node of topNodes) {
content.append(buildTreeNode(node, 0))
}
// Wire tree toggle button
const treePanel = document.getElementById('tree-panel')!
const toggleBtn = document.getElementById('tree-toggle-btn')
const closeBtn = document.getElementById('tree-close-btn')
const openPanel = () => { treePanel.classList.remove('closed'); toggleBtn?.classList.add('text-accent') }
const closePanel = () => { treePanel.classList.add('closed'); toggleBtn?.classList.remove('text-accent') }
toggleBtn?.addEventListener('click', () =>
treePanel.classList.contains('closed') ? openPanel() : closePanel()
)
closeBtn?.addEventListener('click', closePanel)
}
// ---- Viewer toolbar ------------------------------------------------------
function wireToolbar() {
// Model tree panel toggle (always wired; content populated after geometry loads)
const treePanel = document.getElementById('tree-panel')
const treeBtn = document.getElementById('tree-toggle-btn')
const treeClose = document.getElementById('tree-close-btn')
if (treePanel) {
treeBtn?.addEventListener('click', () => {
const closing = !treePanel.classList.contains('closed')
treePanel.classList.toggle('closed')
treeBtn.classList.toggle('text-accent', !closing)
})
treeClose?.addEventListener('click', () => {
treePanel.classList.add('closed')
treeBtn?.classList.remove('text-accent')
})
}
// Copy-link
const copyBtn = document.getElementById('copy-link-btn') as HTMLButtonElement | null
if (copyBtn) {