File size: 4,494 Bytes
da8ac0b 5853467 86acef8 ad87e2b bc813bc 5853467 da8ac0b bc813bc ad87e2b 86acef8 da8ac0b 86acef8 da8ac0b 86acef8 da8ac0b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
// Shared JavaScript
// Initialize analytics
if (window.netlifyIdentity) {
window.netlifyIdentity.on("init", user => {
if (!user) {
window.netlifyIdentity.on("login", () => {
document.location.href = "/admin/";
});
}
});
}
// Mock tracking data
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" }
]
}
};
// Handle tracking from URL parameter
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'));
}
}
// Register service worker for PWA
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();
// Form submission handler
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) {
// Update UI with tracking data
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.`);
}
});
}
// Initialize tooltips for icons
const tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
}); |