diff --git a/portal/templates/app/orgs.html b/portal/templates/app/orgs.html index 28f595d..fea167a 100644 --- a/portal/templates/app/orgs.html +++ b/portal/templates/app/orgs.html @@ -435,7 +435,7 @@ html += '
' // checkbox + name row + '
' - + '' + + '' + '
' + '
' + escHtml(p.name || p.email || '—') + '
' + '
' + [p.title, p.email].filter(Boolean).map(v => escHtml(v)).join(' · ') + '
' @@ -482,10 +482,22 @@ document.getElementById('rescrapeResults').classList.remove('hidden'); // Store new people for the add button window._rescrapeNewPeople = newPeople; + window._scrapeSelected = new Set(); } function toggleAllRescrape(checked) { - document.querySelectorAll('.rescrape-cb').forEach(cb => cb.checked = checked); + if (!window._scrapeSelected) window._scrapeSelected = new Set(); + document.querySelectorAll('.rescrape-cb').forEach(cb => { + cb.checked = checked; + const idx = parseInt(cb.dataset.idx); + if (checked) window._scrapeSelected.add(idx); + else window._scrapeSelected.delete(idx); + }); + } + function toggleScrapeSelect(idx, checked) { + if (!window._scrapeSelected) window._scrapeSelected = new Set(); + if (checked) window._scrapeSelected.add(idx); + else window._scrapeSelected.delete(idx); } function syncRescrapeSelectAll() { const all = document.querySelectorAll('.rescrape-cb'); @@ -530,10 +542,10 @@ } async function saveRescrapeSelection() { const people = window._rescrapeNewPeople || []; - const checked = document.querySelectorAll('.rescrape-cb:checked'); + const selected = window._scrapeSelected || new Set(); const toAdd = []; - checked.forEach(cb => { - const p = people[parseInt(cb.dataset.idx)]; + selected.forEach(idx => { + const p = people[idx]; if (p) toAdd.push({ name: p.name || '', email: p.email || '', title: p.title || '', phone_business: p.phone_business || p.phone || '', phone_personal: p.phone_personal || '', photo: p.photo || '', bio: p.bio || '', linkedin: p.linkedin || '' }); }); if (toAdd.length === 0) { document.getElementById('rescrapeResults').classList.add('hidden'); return; }