Cargo Dashboard

Total Shipments

0

In Transit

0

Delayed

0

On-Time Delivery

0%

Delayed Shipments

    Shipments by Status

    No delayed shipments.

    '; return; } container.innerHTML = delayedShipments.map(s => { const daysLate = Math.round((new Date() - new Date(s.ETA)) / (1000 * 60 * 60 * 24)); return `
  • ${s.ID}

    ${s.Origin} to ${s.Destination}
    ${daysLate}d late
  • ` }).join(''); } function renderStatusChart() { const statusCounts = shipmentsData.reduce((acc, s) => { acc[s.Status] = (acc[s.Status] || 0) + 1; return acc; }, {}); const ctx = document.getElementById('cgd-status-chart').getContext('2d'); if(statusChart) statusChart.destroy(); statusChart = new Chart(ctx, { type: 'doughnut', data: { labels: Object.keys(statusCounts), datasets: [{ data: Object.values(statusCounts), backgroundColor: ['#0369a1', '#f59e0b', '#64748b', '#16a34a', '#dc2626'] }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { legend: { position: 'bottom' } } } }); } function renderShipmentsTable() { const table = document.getElementById('shipments-table'); table.innerHTML = `Shipment IDOriginDestinationCarrierStatusEst. ArrivalActual ArrivalActions ${shipmentsData.map(s => ` `).join('')} `; } function addShipment() { const eta = new Date(); eta.setDate(eta.getDate() + 14); shipmentsData.unshift({ id: Date.now(), ID: `SHP-${Math.floor(10000+Math.random()*90000)}`, Origin: 'Los Angeles, USA', Destination: 'New York, USA', Carrier: CARRIERS[0], Status: 'In Transit', ETA: eta.toISOString().split('T')[0], ActualArrival: null }); processAndRenderAll(); } function handleTableEvents(e) { const target = e.target; if (!target) return; const id = parseInt(target.closest('tr')?.dataset.id); if (!id) return; if (target.classList.contains('remove-shipment-btn')) { shipmentsData = shipmentsData.filter(s => s.id !== id); } else if (target.tagName === 'INPUT' || target.tagName === 'SELECT') { const key = target.dataset.key; const item = shipmentsData.find(s => s.id === id); if(item) item[key] = target.value; } processAndRenderAll(); } document.getElementById('cgd-add-shipment-btn').addEventListener('click', addShipment); document.getElementById('shipments-table').addEventListener('change', handleTableEvents); document.getElementById('shipments-table').addEventListener('click', handleTableEvents); function initialize() { const createDate = (offsetDays) => { const d = new Date("2025-07-12"); d.setDate(d.getDate() - offsetDays); return d.toISOString().split('T')[0]; }; shipmentsData = [ { id: 1, ID: 'USA-83491', Origin: 'Long Beach, CA', Destination: 'Chicago, IL', Carrier: 'UPS', Status: 'In Transit', ETA: createDate(-5), ActualArrival: null }, { id: 2, ID: 'USA-83492', Origin: 'Newark, NJ', Destination: 'Miami, FL', Carrier: 'FedEx', Status: 'Delivered', ETA: createDate(10), ActualArrival: createDate(9) }, { id: 3, ID: 'USA-83493', Origin: 'Houston, TX', Destination: 'Denver, CO', Carrier: 'Maersk', Status: 'At Port', ETA: createDate(-2), ActualArrival: null }, { id: 4, ID: 'USA-83494', Origin: 'Seattle, WA', Destination: 'Dallas, TX', Carrier: 'UPS', Status: 'Delayed', ETA: createDate(2), ActualArrival: null }, { id: 5, ID: 'USA-83495', Origin: 'Chicago, IL', Destination: 'Atlanta, GA', Carrier: 'FedEx', Status: 'Delivered', ETA: createDate(15), ActualArrival: createDate(16) }, ]; processAndRenderAll(); } initialize(); });
    Scroll to Top