diff --git a/agents/social-listening/dashboard/index.html b/agents/social-listening/dashboard/index.html index c8acb36..32d1583 100644 --- a/agents/social-listening/dashboard/index.html +++ b/agents/social-listening/dashboard/index.html @@ -198,26 +198,12 @@ function switchTab(name) { function loadJSON(input) { const file = input.files[0]; if (!file) return; - document.getElementById('jsonFileName').textContent = file.name; const reader = new FileReader(); reader.onload = (e) => { try { const brief = JSON.parse(e.target.result); - loadedBrief = brief; - document.getElementById('jsonPreview').style.display = 'block'; - document.getElementById('jsonPreviewText').textContent = JSON.stringify(brief, null, 2); - if (brief.clientName) document.getElementById('clientName').value = brief.clientName; - if (brief.category) document.getElementById('category').value = brief.category; - if (brief.hashtags) document.getElementById('hashtags').value = brief.hashtags.join(', '); - if (brief.keywords) document.getElementById('keywords').value = brief.keywords.join(', '); - document.getElementById('p-tiktok').checked = (brief.platforms || []).includes('tiktok'); - document.getElementById('p-instagram').checked = (brief.platforms || []).includes('instagram'); - document.getElementById('p-youtube').checked = (brief.platforms || []).includes('youtube'); - if (brief.influencers) { - if (brief.influencers.tiktok) document.getElementById('inf-tiktok').value = brief.influencers.tiktok.join(', '); - if (brief.influencers.instagram) document.getElementById('inf-instagram').value = brief.influencers.instagram.join(', '); - if (brief.influencers.youtube) document.getElementById('inf-youtube').value = brief.influencers.youtube.join(', '); - } + populateForm(brief); + document.getElementById('jsonFileName').textContent = file.name + ' (loaded)'; } catch (err) { alert('Invalid JSON: ' + err.message); } }; reader.readAsText(file); @@ -300,7 +286,8 @@ async function loadSavedBriefs() {
${esc(d.category || '')}
- + +
@@ -327,6 +314,15 @@ function loadBriefAndSwitch(jsonStr) { document.querySelector('.tab').classList.add('active'); } +function exportBrief(jsonStr, name) { + const blob = new Blob([JSON.stringify(JSON.parse(jsonStr), null, 2)], { type: 'application/json' }); + const a = document.createElement('a'); + a.href = URL.createObjectURL(blob); + a.download = `${name}-brief.json`; + a.click(); + URL.revokeObjectURL(a.href); +} + async function deleteServerBrief(name) { if (!confirm(`Delete saved brief "${name}"?`)) return; try { diff --git a/frontend/index.html b/frontend/index.html index 10e6bd5..14b2cae 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -201,26 +201,12 @@ function switchTab(name) { function loadJSON(input) { const file = input.files[0]; if (!file) return; - document.getElementById('jsonFileName').textContent = file.name; const reader = new FileReader(); reader.onload = (e) => { try { const brief = JSON.parse(e.target.result); - loadedBrief = brief; - document.getElementById('jsonPreview').style.display = 'block'; - document.getElementById('jsonPreviewText').textContent = JSON.stringify(brief, null, 2); - if (brief.clientName) document.getElementById('clientName').value = brief.clientName; - if (brief.category) document.getElementById('category').value = brief.category; - if (brief.hashtags) document.getElementById('hashtags').value = brief.hashtags.join(', '); - if (brief.keywords) document.getElementById('keywords').value = brief.keywords.join(', '); - document.getElementById('p-tiktok').checked = (brief.platforms || []).includes('tiktok'); - document.getElementById('p-instagram').checked = (brief.platforms || []).includes('instagram'); - document.getElementById('p-youtube').checked = (brief.platforms || []).includes('youtube'); - if (brief.influencers) { - if (brief.influencers.tiktok) document.getElementById('inf-tiktok').value = brief.influencers.tiktok.join(', '); - if (brief.influencers.instagram) document.getElementById('inf-instagram').value = brief.influencers.instagram.join(', '); - if (brief.influencers.youtube) document.getElementById('inf-youtube').value = brief.influencers.youtube.join(', '); - } + populateForm(brief); + document.getElementById('jsonFileName').textContent = file.name + ' (loaded)'; } catch (err) { alert('Invalid JSON: ' + err.message); } }; reader.readAsText(file); @@ -262,8 +248,6 @@ function populateForm(brief) { if (brief.influencers.instagram) document.getElementById('inf-instagram').value = brief.influencers.instagram.join(', '); if (brief.influencers.youtube) document.getElementById('inf-youtube').value = brief.influencers.youtube.join(', '); } - document.getElementById('jsonPreview').style.display = 'block'; - document.getElementById('jsonPreviewText').textContent = JSON.stringify(brief, null, 2); } // ─── Save/load briefs to server ─── @@ -306,7 +290,8 @@ async function loadSavedBriefs() {
${esc(d.category || '')}
- + +
@@ -333,6 +318,15 @@ function loadBriefAndSwitch(jsonStr) { document.querySelector('.tab').classList.add('active'); // first tab = Pipeline } +function exportBrief(jsonStr, name) { + const blob = new Blob([JSON.stringify(JSON.parse(jsonStr), null, 2)], { type: 'application/json' }); + const a = document.createElement('a'); + a.href = URL.createObjectURL(blob); + a.download = `${name}-brief.json`; + a.click(); + URL.revokeObjectURL(a.href); +} + async function deleteServerBrief(name) { if (!confirm(`Delete saved brief "${name}"?`)) return; try {