"use strict"; import { apiGet } from "../core/api.js"; let refreshTimer=null; let _viewMode=localStorage.getItem("mhrn-registry-view")||"grid"; let _sortMode=localStorage.getItem("mhrn-registry-sort")||"name-asc"; function esc(v){const d=document.createElement("div");d.textContent=v==null?"":String(v);return d.innerHTML;} function open(path){if(!path)return;document.dispatchEvent(new CustomEvent("brain5d:open-file",{detail:{source:"research",path}}));window.MHRNWorkspaceArchitecture?.selectRoute?.("files","browse");} function sortItems(items,mode){const s=[].concat(items);const fn=(a,b)=>{const aN=(a.name||a.title||a.path||a.report_id||"").toLowerCase();const bN=(b.name||b.title||b.path||b.report_id||"").toLowerCase();const aD=a.created_at||a.timestamp||"";const bD=b.created_at||b.timestamp||"";const aT=a.kind||a.category||"";const bT=b.kind||b.category||"";switch(mode){case"name-desc":return bN.localeCompare(aN);case"date-asc":return aDbD?1:0;case"date-desc":return aD>bD?-1:aD
REGISTRY · REPORTS · AIRR

Research-Dokumente & Berichte

Index und Provenienz; keine parallele Dateiansicht.

lade …

Research-Dokumente

lade …

Generierte Berichte

lade …

AI Research Reports

lade …
`;const target=root.querySelector('.research-subpanel[data-subpanel="registry"]')||root;target.querySelector("#research-registry-placeholder")?.remove();target.append(p); p.querySelectorAll("[data-reg-view]").forEach(btn=>{btn.classList.toggle("active",btn.dataset.regView===_viewMode);btn.addEventListener("click",()=>{_viewMode=btn.dataset.regView;localStorage.setItem("mhrn-registry-view",_viewMode);p.querySelectorAll("[data-reg-view]").forEach(b=>b.classList.toggle("active",b.dataset.regView===_viewMode));document.querySelectorAll(".registry-list").forEach(el=>el.dataset.regView=_viewMode);});}); const sortSel=p.querySelector("#registry-sort");if(sortSel){sortSel.value=_sortMode;sortSel.addEventListener("change",()=>{_sortMode=sortSel.value;localStorage.setItem("mhrn-registry-sort",_sortMode);refresh();});} p.onclick=e=>{const b=e.target.closest("[data-research-path]");if(b)open(b.dataset.researchPath);};return p;} function row(item,extra=""){const title=item.name||item.title||item.path||item.report_id||"—";const meta=[item.kind||item.category,item.experiment_id,item.size_bytes!=null?`${item.size_bytes} B`:""].filter(Boolean).join(" · ");const path=item.path||item.json_path||item.markdown_path;return `
${esc(title)}${esc(meta)}${extra}
`;} function renderList(id,items,extraFn){const el=document.getElementById(id);if(!el)return;const sorted=sortItems(items,_sortMode);el.innerHTML=sorted.length?sorted.map(x=>row(x,extraFn?extraFn(x):"")).join(""):"

Keine Einträge.

";return sorted.length;} function docs(payload){const a=Array.isArray(payload?.documents)?payload.documents:[];return renderList("research-documents-list",a);} function reports(payload){const a=Array.isArray(payload?.reports)?payload.reports:[];return renderList("research-reports-list",a);} function airr(payload){const a=Array.isArray(payload?.reports)?payload.reports:[];return renderList("research-ai-reports-list",a,x=>{const path=x.json_path||x.markdown_path;return x.markdown_path&&x.markdown_path!==path?``:"";});} async function refresh(){const p=ensure();if(!p||p.hidden)return;const [d,r,a]=await Promise.allSettled([apiGet("/api/research/documents"),apiGet("/api/research/reports"),apiGet("/api/research/ai-reports")]);let total=0;if(d.status==="fulfilled")total+=docs(d.value);else document.getElementById("research-documents-list").textContent=`Nicht verfügbar: ${d.reason.message}`;if(r.status==="fulfilled")total+=reports(r.value);else document.getElementById("research-reports-list").textContent=`Nicht verfügbar: ${r.reason.message}`;if(a.status==="fulfilled")total+=airr(a.value);else document.getElementById("research-ai-reports-list").textContent=`Nicht verfügbar: ${a.reason.message}`;document.getElementById("research-docs-badge").textContent=`${total} artifact(s)`;} export function initResearchDocs(){ensure();refresh();if(refreshTimer)clearInterval(refreshTimer);refreshTimer=setInterval(refresh,30000);}