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 {