fix: scrape selection — drop Set, query checkboxes by data-idx directly on save
This commit is contained in:
parent
dc30969119
commit
ffbe134708
|
|
@ -435,7 +435,7 @@
|
|||
html += '<div class="rounded-lg overflow-hidden" style="background:var(--ds-sf);border:1px solid var(--ds-bd)">'
|
||||
// checkbox + name row
|
||||
+ '<div class="flex items-center gap-3 px-3 py-2 cursor-pointer" onclick="toggleScrapeExpand(' + i + ')">'
|
||||
+ '<input type="checkbox" class="rescrape-cb accent-[#c9a84c] shrink-0" data-idx="' + i + '" onchange="toggleScrapeSelect(' + i + ',this.checked);syncRescrapeSelectAll();event.stopPropagation();" onclick="event.stopPropagation()">'
|
||||
+ '<input type="checkbox" class="rescrape-cb accent-[#c9a84c] shrink-0" data-idx="' + i + '" onchange="syncRescrapeSelectAll();event.stopPropagation();" onclick="event.stopPropagation()">'
|
||||
+ '<div class="flex-1 min-w-0">'
|
||||
+ '<div class="text-sm text-white truncate">' + escHtml(p.name || p.email || '—') + '</div>'
|
||||
+ '<div class="text-xs truncate" style="color:var(--ds-tx3)">' + [p.title, p.email].filter(Boolean).map(v => escHtml(v)).join(' · ') + '</div>'
|
||||
|
|
@ -482,22 +482,11 @@
|
|||
document.getElementById('rescrapeResults').classList.remove('hidden');
|
||||
// Store new people for the add button
|
||||
window._rescrapeNewPeople = newPeople;
|
||||
window._scrapeSelected = new Set();
|
||||
}
|
||||
|
||||
function toggleAllRescrape(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);
|
||||
document.querySelectorAll('.rescrape-cb').forEach(cb => { cb.checked = checked; });
|
||||
syncRescrapeSelectAll();
|
||||
}
|
||||
function syncRescrapeSelectAll() {
|
||||
const all = document.querySelectorAll('.rescrape-cb');
|
||||
|
|
@ -542,11 +531,12 @@
|
|||
}
|
||||
async function saveRescrapeSelection() {
|
||||
const people = window._rescrapeNewPeople || [];
|
||||
const selected = window._scrapeSelected || new Set();
|
||||
const toAdd = [];
|
||||
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 || '' });
|
||||
people.forEach((p, i) => {
|
||||
const cb = document.querySelector('.rescrape-cb[data-idx="' + i + '"]');
|
||||
if (cb && cb.checked && 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; }
|
||||
toAdd.forEach(m => editingMembers.push(m));
|
||||
|
|
|
|||
Loading…
Reference in New Issue