/** Main Research Workbench app - Home and Project Workspace panels. */ import * as api from "./api_client.js"; import { renderAssetPanel } from "./panels/AssetPanel.js"; const mainContent = document.getElementById("main-content"); const navButtons = document.querySelectorAll(".nav-btn"); let currentPanel = "home"; let currentProjectId = null; function navigateTo(panel, projectId = null) { currentPanel = panel; currentProjectId = projectId; navButtons.forEach(btn => btn.classList.remove("active")); document.getElementById(`nav-${panel}`)?.classList.add("active"); render(); } async function render() { if (currentPanel === "home") { try { const [projects, feedItems, papers] = await Promise.all([ api.listProjects(), api.getTodayFeed(), api.listPapers({ library_status: "library" }), ]); mainContent.innerHTML = ""; renderHomePanel(mainContent, { projects, feedItems, papers }, navigateTo); } catch (e) { mainContent.innerHTML = `
Failed to load: ${e.message}
`; } } else if (currentPanel === "projects") { try { const projects = await api.listProjects(); mainContent.innerHTML = ""; renderProjectPanel(mainContent, { projects }, navigateTo); } catch (e) { mainContent.innerHTML = `Failed to load: ${e.message}
`; } } else if (currentPanel === "canvas") { window.location.href = "/"; } else if (currentPanel === "assets") { mainContent.innerHTML = ""; renderAssetPanel(mainContent, api); } } function renderHomePanel(container, { projects, feedItems, papers }, navigateTo) { const projectCount = projects.length || 0; const activeProjects = projects.filter(p => p.status === "active").length; container.innerHTML = `Total Projects
Active
Papers in Library
Today's Feed
No papers in feed yet.
' : feedItems.map(item => `${item.abstract || ""}
No projects yet.
' : projects.slice(0, 5).map(p => `${p.goal || "No goal set"}
${p.status}No projects. Create your first project.
' : projects.map(p => `${p.goal || "No goal set"}
${p.status}