Fix extraction progress: accumulate completed menus inside single message
Use getElementById for progressDiv/spinnerDiv inside an addMessage bubble so completed lines persist as each menu finishes extracting. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
af1e252f1b
commit
092d04291e
1 changed files with 11 additions and 18 deletions
|
|
@ -1624,13 +1624,8 @@
|
|||
|
||||
document.getElementById('conversation').innerHTML = '';
|
||||
|
||||
// Progress container: completed results stay, spinner updates in place
|
||||
const progressDiv = document.createElement('div');
|
||||
progressDiv.id = 'extractionProgress';
|
||||
const spinnerDiv = document.createElement('div');
|
||||
spinnerDiv.id = 'extractionSpinner';
|
||||
document.getElementById('conversation').appendChild(progressDiv);
|
||||
document.getElementById('conversation').appendChild(spinnerDiv);
|
||||
// Progress container: completed results accumulate, spinner updates in place
|
||||
addMessage('ai', '<div id="extractionProgress"></div><div id="extractionSpinner"></div>');
|
||||
|
||||
// Combined results — start with business info from discovery phase
|
||||
const allItems = [];
|
||||
|
|
@ -1640,13 +1635,11 @@
|
|||
let totalProcessed = 0;
|
||||
|
||||
for (const page of pages) {
|
||||
spinnerDiv.innerHTML = `
|
||||
<div class="message ai-message" style="margin-top:8px;">
|
||||
<div style="display:flex;align-items:center;gap:12px;">
|
||||
document.getElementById('extractionSpinner').innerHTML = `
|
||||
<div style="display:flex;align-items:center;gap:12px;margin-top:8px;">
|
||||
<div class="loading-spinner"></div>
|
||||
<span>Extracting <strong>${page.name}</strong> menu... (${totalProcessed + 1} of ${pages.length})</span>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
try {
|
||||
|
|
@ -1682,14 +1675,14 @@
|
|||
totalProcessed++;
|
||||
const scheduleNote = result.menuSchedule ? ` (${result.menuSchedule})` : '';
|
||||
const line = document.createElement('div');
|
||||
line.className = 'message ai-message';
|
||||
line.style.cssText = 'padding:2px 0;';
|
||||
line.innerHTML = `<p style="margin:4px 0;">✓ Extracted <strong>${page.name}</strong>${scheduleNote}: ${data.items?.length || 0} items in ${data.categories?.length || 0} categories</p>`;
|
||||
progressDiv.appendChild(line);
|
||||
document.getElementById('extractionProgress').appendChild(line);
|
||||
} else {
|
||||
const line = document.createElement('div');
|
||||
line.className = 'message ai-message';
|
||||
line.style.cssText = 'padding:2px 0;';
|
||||
line.innerHTML = `<p style="margin:4px 0;color:var(--warning);">✗ Could not extract items from ${page.name} page.</p>`;
|
||||
progressDiv.appendChild(line);
|
||||
document.getElementById('extractionProgress').appendChild(line);
|
||||
totalProcessed++;
|
||||
}
|
||||
} catch (err) {
|
||||
|
|
@ -1701,7 +1694,7 @@
|
|||
totalProcessed++;
|
||||
}
|
||||
}
|
||||
spinnerDiv.remove();
|
||||
document.getElementById('extractionSpinner').remove();
|
||||
|
||||
// Compute max business hours from all menu schedules
|
||||
if (allMenus.some(m => m.schedule) && !businessInfo.hours) {
|
||||
|
|
|
|||
Reference in a new issue