|
|
|
|
|
|
|
|
if (window.netlifyIdentity) { |
|
|
window.netlifyIdentity.on("init", user => { |
|
|
if (!user) { |
|
|
window.netlifyIdentity.on("login", () => { |
|
|
document.location.href = "/admin/"; |
|
|
}); |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
const mockTrackingData = { |
|
|
"1234567890": { |
|
|
status: "Delivered", |
|
|
estimatedDelivery: "Today by 8:00 PM", |
|
|
history: [ |
|
|
{ status: "Delivered", time: "Today at 2:30 PM", details: "Delivered to front door" }, |
|
|
{ status: "Out for delivery", time: "Today at 8:15 AM" }, |
|
|
{ status: "In transit", time: "Yesterday at 5:45 PM", details: "Departed from local facility" } |
|
|
] |
|
|
}, |
|
|
"9876543210": { |
|
|
status: "In Transit", |
|
|
estimatedDelivery: "Tomorrow by 8:00 PM", |
|
|
history: [ |
|
|
{ status: "In transit", time: "Today at 10:30 AM", details: "Arrived at local facility" }, |
|
|
{ status: "Shipped", time: "Yesterday at 3:15 PM", details: "Package picked up" } |
|
|
] |
|
|
} |
|
|
}; |
|
|
|
|
|
function checkTrackingFromURL() { |
|
|
const urlParams = new URLSearchParams(window.location.search); |
|
|
const trackingNum = urlParams.get('track'); |
|
|
|
|
|
if (trackingNum && document.querySelector('form')) { |
|
|
const input = document.querySelector('form input'); |
|
|
input.value = trackingNum; |
|
|
document.querySelector('form').dispatchEvent(new Event('submit')); |
|
|
} |
|
|
} |
|
|
|
|
|
if ('serviceWorker' in navigator) { |
|
|
window.addEventListener('load', () => { |
|
|
navigator.serviceWorker.register('/sw.js').then(registration => { |
|
|
console.log('SW registered: ', registration); |
|
|
}).catch(registrationError => { |
|
|
console.log('SW registration failed: ', registrationError); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
|
|
|
document.addEventListener('DOMContentLoaded', () => { |
|
|
checkTrackingFromURL(); |
|
|
|
|
|
const trackingForm = document.querySelector('form'); |
|
|
if (trackingForm) { |
|
|
trackingForm.addEventListener('submit', (e) => { |
|
|
e.preventDefault(); |
|
|
const trackingNumber = e.target.querySelector('input').value; |
|
|
const trackingData = mockTrackingData[trackingNumber]; |
|
|
|
|
|
if (trackingData) { |
|
|
|
|
|
const resultsSection = document.querySelector('.p-6'); |
|
|
if (resultsSection) { |
|
|
resultsSection.innerHTML = ` |
|
|
<div class="flex items-center mb-6"> |
|
|
<div class="bg-purple-100 p-3 rounded-full mr-4"> |
|
|
<i data-feather="package" class="text-purple-600"></i> |
|
|
</div> |
|
|
<div> |
|
|
<h2 class="text-xl font-bold">Shipment #${trackingNumber}</h2> |
|
|
<p class="text-gray-600">Estimated delivery: ${trackingData.estimatedDelivery}</p> |
|
|
</div> |
|
|
</div> |
|
|
|
|
|
<div class="border-l-2 border-purple-200 pl-6 ml-3 py-4 space-y-8"> |
|
|
${trackingData.history.map(item => ` |
|
|
<div class="relative"> |
|
|
<div class="absolute -left-7 top-0 w-4 h-4 ${item.status === "Delivered" ? 'bg-purple-600' : 'bg-purple-300'} rounded-full border-4 border-white"></div> |
|
|
<div class="ml-2"> |
|
|
<p class="font-semibold">${item.status}</p> |
|
|
<p class="text-gray-500 text-sm">${item.time}</p> |
|
|
${item.details ? `<p class="text-gray-600 mt-1">${item.details}</p>` : ''} |
|
|
</div> |
|
|
</div> |
|
|
`).join('')} |
|
|
</div> |
|
|
`; |
|
|
feather.replace(); |
|
|
} |
|
|
} else { |
|
|
alert(`Tracking number ${trackingNumber} not found. Try 1234567890 or 9876543210 for demo.`); |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); |
|
|
tooltipTriggerList.map(function (tooltipTriggerEl) { |
|
|
return new bootstrap.Tooltip(tooltipTriggerEl); |
|
|
}); |
|
|
}); |