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);
    });
});