diff --git a/portal/setup-wizard.html b/portal/setup-wizard.html index d5b5e71..a159d26 100644 --- a/portal/setup-wizard.html +++ b/portal/setup-wizard.html @@ -1624,6 +1624,14 @@ 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); + // Combined results — start with business info from discovery phase const allItems = []; const allCategories = []; @@ -1632,12 +1640,14 @@ let totalProcessed = 0; for (const page of pages) { - addMessage('ai', ` -
-
- Extracting ${page.name} menu... (${totalProcessed + 1} of ${pages.length}) + spinnerDiv.innerHTML = ` +
+
+
+ Extracting ${page.name} menu... (${totalProcessed + 1} of ${pages.length}) +
- `); + `; try { const resp = await fetch(`${config.apiBaseUrl}/setup/analyzeMenuUrl.php`, { @@ -1670,24 +1680,28 @@ allMenus.push(menuEntry); totalProcessed++; - // Update with progress const scheduleNote = result.menuSchedule ? ` (${result.menuSchedule})` : ''; - document.getElementById('conversation').innerHTML = ''; - addMessage('ai', ` -

Extracted ${page.name}${scheduleNote}: ${data.items?.length || 0} items in ${data.categories?.length || 0} categories

- `); + const line = document.createElement('div'); + line.className = 'message ai-message'; + line.innerHTML = `

✓ Extracted ${page.name}${scheduleNote}: ${data.items?.length || 0} items in ${data.categories?.length || 0} categories

`; + progressDiv.appendChild(line); } else { - document.getElementById('conversation').innerHTML = ''; - addMessage('ai', `

Could not extract items from ${page.name} page.

`); + const line = document.createElement('div'); + line.className = 'message ai-message'; + line.innerHTML = `

✗ Could not extract items from ${page.name} page.

`; + progressDiv.appendChild(line); totalProcessed++; } } catch (err) { console.error(`Error extracting ${page.name}:`, err); - document.getElementById('conversation').innerHTML = ''; - addMessage('ai', `

Error extracting ${page.name}: ${err.message}

`); + const line = document.createElement('div'); + line.className = 'message ai-message'; + line.innerHTML = `

✗ Error extracting ${page.name}: ${err.message}

`; + progressDiv.appendChild(line); totalProcessed++; } } + spinnerDiv.remove(); // Compute max business hours from all menu schedules if (allMenus.some(m => m.schedule) && !businessInfo.hours) {