lokeshloki143 commited on
Commit
42ae27b
·
verified ·
1 Parent(s): 25c7209

Update templates/combined_summary.html

Browse files
Files changed (1) hide show
  1. templates/combined_summary.html +51 -22
templates/combined_summary.html CHANGED
@@ -435,7 +435,7 @@
435
  .order-confirmed::before {
436
  content: '✔';
437
  position: absolute;
438
- top: 50;
439
  left: 50%;
440
  transform: translate(-50%, -50%);
441
  font-size: 120px;
@@ -457,9 +457,15 @@
457
  animation: fadeIn 0.5s ease-in-out;
458
  }
459
  /* Timer styling */
460
- .delivery-timer {
461
- color: #F59E0B;
462
  font-weight: 600;
 
 
 
 
 
 
463
  }
464
  /* Tier details animation */
465
  .tier-details {
@@ -606,7 +612,7 @@
606
  <div class="section bg-white shadow-sm rounded-xl p-6 mb-6 order-confirmed" role="alert">
607
  <h1 class="text-center text-2xl font-bold text-orange-500">Order Confirmed!</h1>
608
  <p class="text-center text-gray-600 mt-2">
609
- Estimated delivery time: <span id="deliveryTimer" class="delivery-timer">{{ delivery_time }}:00</span>
610
  </p>
611
  <p id="successMessage" class="success-message hidden">Successfully Delivered!</p>
612
  </div>
@@ -1010,32 +1016,59 @@
1010
  }
1011
 
1012
  // Delivery timer function
1013
- function startDeliveryTimer(minutes) {
1014
  try {
1015
  const timerElement = document.getElementById('deliveryTimer');
1016
  const successMessage = document.getElementById('successMessage');
1017
  const deliveryText = document.querySelector('.order-confirmed p.text-center.text-gray-600');
 
 
 
 
 
 
1018
 
1019
- let totalSeconds = minutes * 60;
 
 
1020
 
1021
- const updateTimer = () => {
1022
- if (totalSeconds <= 0) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1023
  clearInterval(timerInterval);
1024
  deliveryText.classList.add('hidden');
1025
  successMessage.classList.remove('hidden');
 
 
 
1026
  return;
1027
  }
1028
 
1029
- const mins = Math.floor(totalSeconds / 60);
1030
- const secs = totalSeconds % 60;
1031
- timerElement.textContent = `${mins}:${secs < 10 ? '0' : ''}${secs}`;
1032
- totalSeconds--;
1033
- };
1034
-
1035
- updateTimer(); // Initial call
1036
- const timerInterval = setInterval(updateTimer, 1000);
1037
  } catch (e) {
1038
- console.error('Error in delivery timer:', e);
 
1039
  }
1040
  }
1041
 
@@ -1056,11 +1089,7 @@
1056
  }
1057
 
1058
  // Start delivery timer
1059
- const deliveryTimeElement = document.getElementById('deliveryTimer');
1060
- const deliveryTime = parseInt(deliveryTimeElement.textContent.split(':')[0], 10) || 0;
1061
- if (deliveryTime > 0) {
1062
- startDeliveryTimer(deliveryTime);
1063
- }
1064
 
1065
  // Lazy load images with IntersectionObserver
1066
  const images = document.querySelectorAll('img.lazyload');
 
435
  .order-confirmed::before {
436
  content: '✔';
437
  position: absolute;
438
+ top: 50%;
439
  left: 50%;
440
  transform: translate(-50%, -50%);
441
  font-size: 120px;
 
457
  animation: fadeIn 0.5s ease-in-out;
458
  }
459
  /* Timer styling */
460
+ #deliveryTimer {
461
+ display: inline-block;
462
  font-weight: 600;
463
+ color: #10B981;
464
+ background: #ECFDF5;
465
+ padding: 4px 12px;
466
+ border-radius: 6px;
467
+ min-width: 80px;
468
+ text-align: center;
469
  }
470
  /* Tier details animation */
471
  .tier-details {
 
612
  <div class="section bg-white shadow-sm rounded-xl p-6 mb-6 order-confirmed" role="alert">
613
  <h1 class="text-center text-2xl font-bold text-orange-500">Order Confirmed!</h1>
614
  <p class="text-center text-gray-600 mt-2">
615
+ Estimated delivery time: <span id="deliveryTimer" aria-live="polite">{{ delivery_time }}:00</span>
616
  </p>
617
  <p id="successMessage" class="success-message hidden">Successfully Delivered!</p>
618
  </div>
 
1016
  }
1017
 
1018
  // Delivery timer function
1019
+ function startDeliveryTimer() {
1020
  try {
1021
  const timerElement = document.getElementById('deliveryTimer');
1022
  const successMessage = document.getElementById('successMessage');
1023
  const deliveryText = document.querySelector('.order-confirmed p.text-center.text-gray-600');
1024
+ const storageKey = 'orderDeliveryTimer';
1025
+ const now = Date.now();
1026
+
1027
+ // Get delivery time from template (in minutes)
1028
+ const initialDeliveryTime = {{ delivery_time | default(15) }};
1029
+ const totalDuration = initialDeliveryTime * 60 * 1000; // Convert to milliseconds
1030
 
1031
+ // Check if timer data exists in localStorage
1032
+ let timerData = JSON.parse(localStorage.getItem(storageKey));
1033
+ let startTime;
1034
 
1035
+ if (timerData && timerData.startTime && timerData.totalDuration === totalDuration) {
1036
+ // Resume existing timer
1037
+ startTime = timerData.startTime;
1038
+ } else {
1039
+ // Start new timer
1040
+ startTime = now;
1041
+ localStorage.setItem(storageKey, JSON.stringify({
1042
+ startTime: startTime,
1043
+ totalDuration: totalDuration
1044
+ }));
1045
+ }
1046
+
1047
+ // Update timer every second
1048
+ const timerInterval = setInterval(() => {
1049
+ const elapsedTime = Date.now() - startTime;
1050
+ const remainingTime = totalDuration - elapsedTime;
1051
+
1052
+ if (remainingTime <= 0) {
1053
  clearInterval(timerInterval);
1054
  deliveryText.classList.add('hidden');
1055
  successMessage.classList.remove('hidden');
1056
+ timerElement.textContent = 'Order is ready!';
1057
+ timerElement.setAttribute('aria-label', 'Order is ready for delivery');
1058
+ localStorage.removeItem(storageKey);
1059
  return;
1060
  }
1061
 
1062
+ const remainingSeconds = Math.floor(remainingTime / 1000);
1063
+ const minutes = Math.floor(remainingSeconds / 60);
1064
+ const seconds = remainingSeconds % 60;
1065
+ const formattedTime = `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`;
1066
+ timerElement.textContent = formattedTime;
1067
+ timerElement.setAttribute('aria-label', `Estimated delivery time: ${minutes} minutes and ${seconds} seconds`);
1068
+ }, 1000);
 
1069
  } catch (e) {
1070
+ console.error('Error running delivery timer:', e);
1071
+ document.getElementById('deliveryTimer').textContent = 'Time unavailable';
1072
  }
1073
  }
1074
 
 
1089
  }
1090
 
1091
  // Start delivery timer
1092
+ startDeliveryTimer();
 
 
 
 
1093
 
1094
  // Lazy load images with IntersectionObserver
1095
  const images = document.querySelectorAll('img.lazyload');