'
+ '
' + 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; }