No suppliers added yet.
`; }; // --- INITIALIZATION & EVENT HANDLERS --- function initialize() { addDeliveryForm.addEventListener('submit', handleAddDelivery); addSupplierForm.addEventListener('submit', handleAddSupplier); downloadPdfBtn.addEventListener('click', generatePdf); document.getElementById('delivery-date').valueAsDate = new Date(); renderAll(); } const switchTab = (tabName) => { state.currentTab = tabName; Object.values(tabButtons).forEach(b => b.classList.remove('active')); Object.values(tabContents).forEach(c => c.classList.add('hidden')); if(tabButtons[tabName]) tabButtons[tabName].classList.add('active'); if(tabContents[tabName]) tabContents[tabName].classList.remove('hidden'); }; Object.keys(tabButtons).forEach(k => tabButtons[k]?.addEventListener('click', () => switchTab(k))); // --- PDF GENERATION --- async function generatePdf() { if (!state.analysis) return; const { jsPDF } = window.jspdf; document.getElementById('pdf-report-date').textContent = `Generated: ${new Date().toLocaleString()}`; document.getElementById('pdf-summary-grid').innerHTML = `Top Performer
${state.analysis.topPerformer}Avg. On-Time Rate
${avgOnTimeEl.textContent}Avg. Quality Score
${avgQualityEl.textContent}| Supplier | Overall Score | On-Time Rate | Avg. Quality | Total Value |
|---|---|---|---|---|
| ${s.name} | ${s.score.toFixed(1)} | ${s.onTimeRate.toFixed(1)}% | ${s.avgQuality.toFixed(1)} | $${s.totalValue.toFixed(2)} |
