lokeshloki143 commited on
Commit
c307077
·
verified ·
1 Parent(s): 058f58a

Update templates/search.html

Browse files
Files changed (1) hide show
  1. templates/search.html +117 -2
templates/search.html CHANGED
@@ -455,6 +455,12 @@
455
  </div>
456
  </div>
457
 
 
 
 
 
 
 
458
  <div class="container mt-4">
459
  <h1 class="menu-heading">Search Menu Items</h1>
460
  <div class="row" id="menuItems">
@@ -552,8 +558,8 @@
552
  return;
553
  }
554
 
555
- const filteredItems = menuItems.filter(item =>
556
- item.name.toLowerCase().includes(query.toLowerCase()) ||
557
  item.section.toLowerCase().includes(query.toLowerCase())
558
  );
559
 
@@ -578,6 +584,63 @@
578
  searchPopup.style.display = 'block';
579
  }
580
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
581
  document.addEventListener('DOMContentLoaded', function () {
582
  // Avatar Dropdown
583
  const avatarContainer = document.querySelector('.avatar-dropdown-container');
@@ -665,7 +728,59 @@
665
  const cart = getCartLocalStorage();
666
  updateCartUI(cart);
667
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
668
  });
 
 
 
 
 
 
 
 
 
 
 
 
669
  </script>
670
  </body>
671
  </html>
 
455
  </div>
456
  </div>
457
 
458
+ <!-- Timer and Success Message Container -->
459
+ <div id="orderTimerContainer" style="display: none; text-align: center; margin-top: 20px;">
460
+ <div id="orderTimer" style="font-size: 1.5rem; font-weight: bold; color: #FFA07A;"></div>
461
+ <div id="orderSuccessMessage" style="font-size: 1.5rem; font-weight: bold; color: #0FAA39; display: none;">Order Successfully Placed!</div>
462
+ </div>
463
+
464
  <div class="container mt-4">
465
  <h1 class="menu-heading">Search Menu Items</h1>
466
  <div class="row" id="menuItems">
 
558
  return;
559
  }
560
 
561
+ const filteredItems = menuItems.filter(item =>
562
+ item.name.toLowerCase().includes(query.toLowerCase()) ||
563
  item.section.toLowerCase().includes(query.toLowerCase())
564
  );
565
 
 
584
  searchPopup.style.display = 'block';
585
  }
586
 
587
+ // Timer and Success Message Functions
588
+ let orderTimerInterval;
589
+ let orderDurationInSeconds = 0; // Set your desired order completion time in seconds
590
+
591
+ function startOrderTimer(durationInSeconds) {
592
+ orderDurationInSeconds = durationInSeconds;
593
+ const timerElement = document.getElementById('orderTimer');
594
+ const successMessageElement = document.getElementById('orderSuccessMessage');
595
+ const timerContainer = document.getElementById('orderTimerContainer');
596
+
597
+ if (!timerElement || !successMessageElement || !timerContainer) {
598
+ console.error("Timer elements not found.");
599
+ return;
600
+ }
601
+
602
+ timerContainer.style.display = 'block';
603
+ successMessageElement.style.display = 'none';
604
+
605
+ let secondsRemaining = orderDurationInSeconds;
606
+
607
+ timerElement.innerText = formatTime(secondsRemaining);
608
+ timerElement.style.display = 'block'; // Ensure timer is visible when starting
609
+
610
+ orderTimerInterval = setInterval(() => {
611
+ secondsRemaining--;
612
+
613
+ if (secondsRemaining <= 0) {
614
+ clearInterval(orderTimerInterval);
615
+ timerElement.style.display = 'none';
616
+ successMessageElement.style.display = 'block';
617
+ // Optionally hide the container after a few seconds
618
+ setTimeout(() => {
619
+ timerContainer.style.display = 'none';
620
+ successMessageElement.style.display = 'none';
621
+ timerElement.style.display = 'block'; // Reset for next order
622
+ }, 5000); // Hide after 5 seconds
623
+ } else {
624
+ timerElement.innerText = formatTime(secondsRemaining);
625
+ }
626
+ }, 1000);
627
+ }
628
+
629
+ function formatTime(seconds) {
630
+ const minutes = Math.floor(seconds / 60);
631
+ const remainingSeconds = seconds % 60;
632
+ const formattedMinutes = String(minutes).padStart(2, '0');
633
+ const formattedSeconds = String(remainingSeconds).padStart(2, '0');
634
+ return `${formattedMinutes}:${formattedSeconds}`;
635
+ }
636
+
637
+ // Function to simulate placing a new order (replace with your actual order logic)
638
+ // This function should be called when a new order is successfully processed.
639
+ function handleNewOrderSuccess(estimatedCompletionTimeInSeconds) {
640
+ console.log("New order successful, starting timer...");
641
+ startOrderTimer(estimatedCompletionTimeInSeconds);
642
+ }
643
+
644
  document.addEventListener('DOMContentLoaded', function () {
645
  // Avatar Dropdown
646
  const avatarContainer = document.querySelector('.avatar-dropdown-container');
 
728
  const cart = getCartLocalStorage();
729
  updateCartUI(cart);
730
  });
731
+
732
+ // --- Timer Logic Integration ---
733
+ // You need to call handleNewOrderSuccess() when a new order is successfully placed.
734
+ // This is where you'll connect this frontend timer to your backend order process.
735
+ // For demonstration purposes, let's simulate a new order after the page loads
736
+ // with a fixed duration (e.g., 30 seconds).
737
+ // In a real application, this call would happen after the user confirms an order
738
+ // on a different page (like a checkout or confirmation page).
739
+ // Example:
740
+ // handleNewOrderSuccess(30); // Simulate a new order with a 30-second timer
741
+ // You would likely pass the estimated time from your backend here.
742
+
743
+ // --- Persistence (Optional but Recommended) ---
744
+ // To make the timer persist across page loads, you can store the order's
745
+ // start time and estimated duration in local storage.
746
+ // When the page loads, check local storage for timer data and resume the timer
747
+ // if an active order exists.
748
+
749
+ const savedOrderTimer = localStorage.getItem('orderTimer');
750
+ if (savedOrderTimer) {
751
+ const timerData = JSON.parse(savedOrderTimer);
752
+ const now = Date.now();
753
+ const elapsed = Math.floor((now - timerData.startTime) / 1000);
754
+ const remaining = timerData.duration - elapsed;
755
+
756
+ if (remaining > 0) {
757
+ startOrderTimer(remaining);
758
+ } else {
759
+ // Timer has already finished, show success message briefly
760
+ const successMessageElement = document.getElementById('orderSuccessMessage');
761
+ const timerContainer = document.getElementById('orderTimerContainer');
762
+ timerContainer.style.display = 'block';
763
+ successMessageElement.style.display = 'block';
764
+ setTimeout(() => {
765
+ timerContainer.style.display = 'none';
766
+ successMessageElement.style.display = 'none';
767
+ }, 3000); // Show success for 3 seconds
768
+ localStorage.removeItem('orderTimer'); // Clear finished timer data
769
+ }
770
+ }
771
  });
772
+
773
+ // --- Add this to your order placement success logic ---
774
+ // When you successfully place a new order (e.g., after a fetch/API call),
775
+ // call this function to start the timer and save its state.
776
+ function handleOrderPlacedAndStartTimer(estimatedCompletionTimeInSeconds) {
777
+ const startTime = Date.now();
778
+ localStorage.setItem('orderTimer', JSON.stringify({
779
+ startTime: startTime,
780
+ duration: estimatedCompletionTimeInSeconds
781
+ }));
782
+ startOrderTimer(estimatedCompletionTimeInSeconds);
783
+ }
784
  </script>
785
  </body>
786
  </html>