lokesh341 commited on
Commit
46f28e7
·
verified ·
1 Parent(s): 5f3775f

Update templates/menu.html

Browse files
Files changed (1) hide show
  1. templates/menu.html +33 -59
templates/menu.html CHANGED
@@ -53,14 +53,14 @@
53
  border-radius: 15px 15px 0 0;
54
  opacity: 0;
55
  transition: opacity 0.5s ease-in-out;
56
- background-color: #000; /* Fallback color if video fails */
57
  }
58
  .menu-video.loaded {
59
  opacity: 1;
60
  }
61
  .menu-card:hover .menu-video {
62
  opacity: 1;
63
- transform: scale(1.05); /* Slight zoom effect on hover */
64
  }
65
  .menu-card .card-body .card-title {
66
  font-size: 1.2rem;
@@ -233,29 +233,6 @@
233
  .mic-icon.active {
234
  color: #007bff;
235
  }
236
- .autocomplete-suggestions {
237
- position: absolute;
238
- top: 100%;
239
- left: 0;
240
- width: 100%;
241
- max-height: 200px;
242
- overflow-y: auto;
243
- background-color: #fff;
244
- border: 1px solid #ddd;
245
- border-radius: 5px;
246
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
247
- z-index: 1000;
248
- display: none;
249
- }
250
- .autocomplete-suggestions .suggestion-item {
251
- padding: 8px 15px;
252
- cursor: pointer;
253
- font-size: 14px;
254
- color: #333;
255
- }
256
- .autocomplete-suggestions .suggestion-item:hover {
257
- background-color: #f1f1f1;
258
- }
259
  .addon-section {
260
  background-color: #fff;
261
  border: 2px solid #ffa500;
@@ -769,7 +746,6 @@
769
  <input type="text" id="searchBar" class="form-control" placeholder="Search items or sections..." autocomplete="off">
770
  <i class="bi bi-search search-icon"></i>
771
  <i class="bi bi-mic mic-icon" id="micIcon"></i>
772
- <div id="autocompleteSuggestions" class="autocomplete-suggestions"></div>
773
  </div>
774
  </div>
775
 
@@ -856,14 +832,13 @@
856
  </div>
857
  </div>
858
  </div>
859
- <!-- Only show toggle-details if not Soft Drinks -->
860
  {% if item.Section__c != 'Soft Drinks' %}
861
  <div class="toggle-details" data-item-name="{{ item.Name | default('Unnamed Item') }}">Show Details</div>
862
  <div class="item-details" id="details-{{ item.Name | default('unnamed-item') | replace(' ', '-') }}">
863
  <h6>Description</h6>
864
  <p>{{ item.Description__c | default('No description available') }}</p>
865
  <h6>Ingredients</h6>
866
- <p>{{ item.Ingredientsinfo__c | default('Not specified') }}</p>
867
  <h6>Nutritional Info</h6>
868
  <p class="nutritional-info">{{ item.NutritionalInfo__c | default('Not available') }}</p>
869
  <h6>Allergens</h6>
@@ -1149,14 +1124,12 @@
1149
  if (itemName === selectedItem) {
1150
  card.classList.add('highlighted');
1151
  card.scrollIntoView({ behavior: 'smooth', block: 'center' });
1152
- // Show details if available
1153
  const toggleLink = card.querySelector('.toggle-details');
1154
  if (toggleLink) {
1155
  toggleLink.click();
1156
  }
1157
  }
1158
  });
1159
- // Clear the selected item after highlighting
1160
  localStorage.removeItem('selectedItem');
1161
  }
1162
 
@@ -1205,7 +1178,6 @@
1205
  const detailsDiv = document.getElementById(`details-${itemName}`);
1206
  const isCurrentlyShown = detailsDiv.classList.contains('show');
1207
 
1208
- // Hide all other details sections
1209
  document.querySelectorAll('.item-details.show').forEach(otherDetails => {
1210
  if (otherDetails !== detailsDiv) {
1211
  otherDetails.classList.remove('show');
@@ -1216,7 +1188,6 @@
1216
  }
1217
  });
1218
 
1219
- // Toggle the current details section
1220
  if (!isCurrentlyShown) {
1221
  detailsDiv.classList.add('show');
1222
  this.innerText = 'Hide Details';
@@ -1234,7 +1205,7 @@
1234
  if (!selectedCategoryInput.value) {
1235
  selectedCategoryInput.value = "All";
1236
  document.querySelector('.category-button[data-category="All"]').classList.add('selected');
1237
- визуальный эффект
1238
  categoryButtons.forEach(button => {
1239
  button.addEventListener('click', function () {
1240
  categoryButtons.forEach(btn => btn.classList.remove('selected'));
@@ -1376,7 +1347,6 @@
1376
  recognition.lang = 'en-US';
1377
  recognition.onstart = () => micIcon.classList.add('active');
1378
  recognition.onresult = (event) => {
1379
- // Navigate to search page with the transcribed query
1380
  const query = event.results[0][0].transcript.trim();
1381
  localStorage.setItem('searchQuery', query);
1382
  window.location.href = '/search';
@@ -1483,11 +1453,13 @@
1483
  const selectedAddOns = Array.from(
1484
  document.querySelectorAll('#addons-list input[type="checkbox"]:checked')
1485
  ).map(addon => ({
1486
- name: addon.getAttribute('data-name') || 'Default Name',
1487
- price: parseFloat(addon.getAttribute('data-price') || 0)
1488
  }));
1489
- const quantity = parseInt(document.getElementById('quantityInput').value) || 1;
1490
  const instructions = document.getElementById('modal-instructions').value;
 
 
 
1491
  const cartPayload = {
1492
  itemName: itemName,
1493
  itemPrice: itemPrice,
@@ -1498,7 +1470,6 @@
1498
  instructions: instructions,
1499
  quantity: quantity
1500
  };
1501
-
1502
  fetch('/cart/add', {
1503
  method: 'POST',
1504
  headers: {
@@ -1506,27 +1477,30 @@
1506
  },
1507
  body: JSON.stringify(cartPayload)
1508
  })
1509
- .then(response => response.json())
1510
- .then(data => {
1511
- if (data.success) {
1512
- alert('Item added to cart successfully!');
1513
- updateCartUI(data.cart);
1514
- const modal = document.getElementById('itemModal');
1515
- const modalInstance = bootstrap.Modal.getInstance(modal);
1516
- modalInstance.hide();
1517
- } else {
1518
- console.error('Failed to add item to cart:', data.error);
1519
- alert(data.error || 'Failed to add item to cart.');
1520
- }
1521
- })
1522
- .catch(err => {
1523
- console.error('Error adding item to cart:', err);
1524
- const cart = addToCartLocalStorage(cartPayload);
1525
- updateCartUI(cart);
1526
- const modal = document.getElementById('itemModal');
1527
- const modalInstance = bootstrap.Modal.getInstance(modal);
1528
- modalInstance.hide();
1529
- });
 
 
 
1530
  }
1531
  </script>
1532
  </body>
 
53
  border-radius: 15px 15px 0 0;
54
  opacity: 0;
55
  transition: opacity 0.5s ease-in-out;
56
+ background-color: #000;
57
  }
58
  .menu-video.loaded {
59
  opacity: 1;
60
  }
61
  .menu-card:hover .menu-video {
62
  opacity: 1;
63
+ transform: scale(1.05);
64
  }
65
  .menu-card .card-body .card-title {
66
  font-size: 1.2rem;
 
233
  .mic-icon.active {
234
  color: #007bff;
235
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  .addon-section {
237
  background-color: #fff;
238
  border: 2px solid #ffa500;
 
746
  <input type="text" id="searchBar" class="form-control" placeholder="Search items or sections..." autocomplete="off">
747
  <i class="bi bi-search search-icon"></i>
748
  <i class="bi bi-mic mic-icon" id="micIcon"></i>
 
749
  </div>
750
  </div>
751
 
 
832
  </div>
833
  </div>
834
  </div>
 
835
  {% if item.Section__c != 'Soft Drinks' %}
836
  <div class="toggle-details" data-item-name="{{ item.Name | default('Unnamed Item') }}">Show Details</div>
837
  <div class="item-details" id="details-{{ item.Name | default('unnamed-item') | replace(' ', '-') }}">
838
  <h6>Description</h6>
839
  <p>{{ item.Description__c | default('No description available') }}</p>
840
  <h6>Ingredients</h6>
841
+ <p>{{ item.IngredientsInfo__c | default('Not specified') }}</p>
842
  <h6>Nutritional Info</h6>
843
  <p class="nutritional-info">{{ item.NutritionalInfo__c | default('Not available') }}</p>
844
  <h6>Allergens</h6>
 
1124
  if (itemName === selectedItem) {
1125
  card.classList.add('highlighted');
1126
  card.scrollIntoView({ behavior: 'smooth', block: 'center' });
 
1127
  const toggleLink = card.querySelector('.toggle-details');
1128
  if (toggleLink) {
1129
  toggleLink.click();
1130
  }
1131
  }
1132
  });
 
1133
  localStorage.removeItem('selectedItem');
1134
  }
1135
 
 
1178
  const detailsDiv = document.getElementById(`details-${itemName}`);
1179
  const isCurrentlyShown = detailsDiv.classList.contains('show');
1180
 
 
1181
  document.querySelectorAll('.item-details.show').forEach(otherDetails => {
1182
  if (otherDetails !== detailsDiv) {
1183
  otherDetails.classList.remove('show');
 
1188
  }
1189
  });
1190
 
 
1191
  if (!isCurrentlyShown) {
1192
  detailsDiv.classList.add('show');
1193
  this.innerText = 'Hide Details';
 
1205
  if (!selectedCategoryInput.value) {
1206
  selectedCategoryInput.value = "All";
1207
  document.querySelector('.category-button[data-category="All"]').classList.add('selected');
1208
+ }
1209
  categoryButtons.forEach(button => {
1210
  button.addEventListener('click', function () {
1211
  categoryButtons.forEach(btn => btn.classList.remove('selected'));
 
1347
  recognition.lang = 'en-US';
1348
  recognition.onstart = () => micIcon.classList.add('active');
1349
  recognition.onresult = (event) => {
 
1350
  const query = event.results[0][0].transcript.trim();
1351
  localStorage.setItem('searchQuery', query);
1352
  window.location.href = '/search';
 
1453
  const selectedAddOns = Array.from(
1454
  document.querySelectorAll('#addons-list input[type="checkbox"]:checked')
1455
  ).map(addon => ({
1456
+ name: addon.getAttribute('data-name'),
1457
+ price: parseFloat(addon.getAttribute('data-price')) || 0
1458
  }));
 
1459
  const instructions = document.getElementById('modal-instructions').value;
1460
+ const quantity = parseInt(document.getElementById('quantityInput').value) || 1;
1461
+ if (isProcessingRequest) return;
1462
+ isProcessingRequest = true;
1463
  const cartPayload = {
1464
  itemName: itemName,
1465
  itemPrice: itemPrice,
 
1470
  instructions: instructions,
1471
  quantity: quantity
1472
  };
 
1473
  fetch('/cart/add', {
1474
  method: 'POST',
1475
  headers: {
 
1477
  },
1478
  body: JSON.stringify(cartPayload)
1479
  })
1480
+ .then(response => response.json())
1481
+ .then(data => {
1482
+ if (data.success) {
1483
+ updateCartUI(data.cart);
1484
+ const modal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
1485
+ modal.hide();
1486
+ } else {
1487
+ console.error('Failed to add item to cart:', data.error);
1488
+ const cart = addToCartLocalStorage(cartPayload);
1489
+ updateCartUI(cart);
1490
+ const modal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
1491
+ modal.hide();
1492
+ }
1493
+ })
1494
+ .catch(err => {
1495
+ console.error('Error adding item to cart:', err);
1496
+ const cart = addToCartLocalStorage(cartPayload);
1497
+ updateCartUI(cart);
1498
+ const modal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
1499
+ modal.hide();
1500
+ })
1501
+ .finally(() => {
1502
+ isProcessingRequest = false;
1503
+ });
1504
  }
1505
  </script>
1506
  </body>