// research_web/js/panels/AssetPanel.js
/**Asset Library panel - browse and manage paper assets.*/
export function renderAssetPanel(container, api) {
container.innerHTML = `
`;
// Tab switching
container.querySelectorAll('.tab-btn').forEach(btn => {
btn.addEventListener('click', () => {
container.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
loadAssets(btn.dataset.tab);
});
});
// Initial load
loadAssets('papers');
function loadAssets(type) {
const list = container.querySelector('#asset-list');
if (type === 'papers') {
list.innerHTML = 'Loading papers...
';
api.listPapers().then(papers => {
if (!papers || papers.length === 0) {
list.innerHTML = 'No papers in library. Search papers in ComfyUI canvas to add them.
';
return;
}
list.innerHTML = papers.map(p => `
${p.title || 'Untitled'}
${p.authors_text || 'Unknown authors'}
${p.journal_or_source || ''} ${p.published_at || ''}
${p.read_status || 'unread'}
${p.library_status || 'pending'}
`).join('');
// Make cards draggable for canvas
list.querySelectorAll('.asset-card').forEach(card => {
card.addEventListener('dragstart', (e) => {
e.dataTransfer.setData('application/json', JSON.stringify({
type: 'paper_asset',
id: card.dataset.id,
title: card.querySelector('h4').textContent
}));
e.dataTransfer.effectAllowed = 'copy';
});
});
}).catch(err => {
list.innerHTML = `Failed to load: ${err.message}
`;
});
} else if (type === 'claims') {
list.innerHTML = 'Claims panel coming in Phase 3.
';
} else if (type === 'sources') {
list.innerHTML = 'Loading sources...
';
api.listSources().then(sources => {
if (!sources || sources.length === 0) {
list.innerHTML = 'No sources configured. Add sources to start your feed.
';
return;
}
list.innerHTML = sources.map(s => `
${s.name}
${s.category || ''} - ${s.intake_type}
${s.enabled ? 'enabled' : 'disabled'}
`).join('');
}).catch(err => {
list.innerHTML = `Failed to load: ${err.message}
`;
});
}
}
}