Smart Restocking Alert System

Smart Restocking Alert System

Monitor inventory, predict stockouts, and know when to reorder.

Current Inventory Status

Product Current Stock Reorder Point Days to Stockout Status

Product Inventory Data

Product Name SKU Current Stock Avg. Daily Sales Lead Time (Days) Safety Stock (Days) Action

Total Products

${results.length}

Items to Reorder Now

${reorderNowCount}

Items to Reorder Soon

${reorderSoonCount}

`; document.getElementById('dashboard-date').textContent = `Report generated on: ${new Date().toLocaleDateString()}`; } // --- Tab & Navigation Logic --- function switchTab(targetTabId) { if (targetTabId === 'dashboard') { const success = runAnalysisAndUpdadeDashboard(); if (!success) return; // Don't switch if validation fails } currentTab = targetTabId; tabs.forEach(tab => tab.classList.toggle('active', tab.dataset.tab === currentTab)); tabContents.forEach(content => content.classList.toggle('active', content.id === currentTab)); updateNavButtons(); } tabs.forEach(tab => { tab.addEventListener('click', () => switchTab(tab.dataset.tab)); }); nextBtn.addEventListener('click', () => { if (currentTab === 'dashboard') switchTab('config'); else if (currentTab === 'config') switchTab('dashboard'); }); prevBtn.addEventListener('click', () => { if (currentTab === 'config') switchTab('dashboard'); else if (currentTab === 'dashboard') switchTab('config'); }); function updateNavButtons() { if (currentTab === 'dashboard') { nextBtn.textContent = 'Edit Data'; prevBtn.style.display = 'none'; pdfButtonContainer.style.display = 'block'; } else { // config tab nextBtn.textContent = 'Update Dashboard'; prevBtn.style.display = 'inline-flex'; pdfButtonContainer.style.display = 'none'; } } // --- PDF Download --- downloadPdfBtn.addEventListener('click', async () => { const { jsPDF } = window.jspdf; const doc = new jsPDF({ orientation: 'p', unit: 'mm', format: 'a4' }); const content = document.getElementById('pdf-content'); doc.setFont('helvetica', 'bold'); doc.setFontSize(18); doc.text('Inventory Restocking Report', 14, 22); doc.setFontSize(11); doc.setTextColor(100); doc.text(`Generated on: ${new Date().toLocaleDateString()}`, 14, 28); await new Promise(resolve => setTimeout(resolve, 0)); // Allow render const canvas = await html2canvas(content, { scale: 2 }); const imgData = canvas.toDataURL('image/jpeg', 1.0); const imgProps = doc.getImageProperties(imgData); const pdfWidth = doc.internal.pageSize.getWidth() - 28; const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width; doc.addImage(imgData, 'JPEG', 14, 40, pdfWidth, pdfHeight); doc.save(`Inventory-Report-${new Date().toISOString().slice(0,10)}.pdf`); }); // --- Initial Load --- populateSampleData(); runAnalysisAndUpdadeDashboard(); // Initial run to populate dashboard switchTab('dashboard'); // Set the initial view });
Scroll to Top