lokesh341 commited on
Commit
4601337
·
verified ·
1 Parent(s): 205860b

Update templates/menu.html

Browse files
Files changed (1) hide show
  1. templates/menu.html +13 -164
templates/menu.html CHANGED
@@ -95,14 +95,6 @@
95
  justify-content: center;
96
  gap: 6px;
97
  }
98
- .customisable-text {
99
- color: #0FAA39;
100
- font-size: 10px;
101
- font-weight: 500;
102
- margin: 0;
103
- text-align: center;
104
- line-height: 1;
105
- }
106
  .btn-primary {
107
  font-size: 12px;
108
  font-weight: bold;
@@ -233,70 +225,6 @@
233
  .mic-icon.active {
234
  color: #007bff;
235
  }
236
- .addon-section {
237
- background-color: #fff;
238
- border: 2px solid #ffa500;
239
- border-radius: 8px;
240
- padding: 12px;
241
- margin-bottom: 10px;
242
- }
243
- .addon-section h6 {
244
- margin-bottom: 10px;
245
- font-size: 1.1rem;
246
- font-weight: bold;
247
- color: #343a40;
248
- }
249
- .addon-section .form-check {
250
- display: inline-flex;
251
- align-items: center;
252
- margin-left: 10px;
253
- color: #343a40;
254
- }
255
- .addon-section .form-check-input {
256
- -webkit-appearance: none;
257
- -moz-appearance: none;
258
- appearance: none;
259
- width: 20px;
260
- height: 20px;
261
- border: 2px solid #343a40;
262
- border-radius: 5px;
263
- background-color: #f0f0f0;
264
- position: relative;
265
- margin-right: 10px;
266
- }
267
- .addon-section .form-check-input[type="radio"] {
268
- border-radius: 50%;
269
- }
270
- .addon-section .form-check-input:checked {
271
- background-color: #006400;
272
- border-color: #006400;
273
- }
274
- .addon-section .form-check-input:checked::before {
275
- content: '\2713';
276
- font-size: 14px;
277
- position: absolute;
278
- top: 3px;
279
- left: 4px;
280
- color: white;
281
- }
282
- .addon-section .form-check-input[type="radio"]:checked::before {
283
- content: '';
284
- width: 12px;
285
- height: 12px;
286
- border-radius: 50%;
287
- background-color: #006400;
288
- position: absolute;
289
- top: 4px;
290
- left: 4px;
291
- }
292
- .addon-section .form-check-label {
293
- font-size: 16px;
294
- margin-left: 5px;
295
- margin-right: 15px;
296
- cursor: pointer;
297
- display: inline-block;
298
- vertical-align: middle;
299
- }
300
  form.text-center.mb-4 {
301
  display: flex;
302
  flex-direction: column;
@@ -342,17 +270,6 @@
342
  color: #6c757d;
343
  margin-bottom: 10px;
344
  }
345
- .modal-body .nutritional-info {
346
- font-size: 12px;
347
- color: #6c757d;
348
- margin-bottom: 10px;
349
- }
350
- .modal-body #modal-addons h6,
351
- .modal-body #first-row h6 {
352
- font-size: 14px;
353
- font-weight: bold;
354
- margin-bottom: 10px;
355
- }
356
  .modal-footer {
357
  display: flex;
358
  align-items: center;
@@ -659,15 +576,6 @@
659
  font-size: 12px;
660
  margin-bottom: 5px;
661
  }
662
- .modal-body .nutritional-info {
663
- font-size: 10px;
664
- margin-bottom: 5px;
665
- }
666
- .modal-body #modal-addons h6,
667
- .modal-body #first-row h6 {
668
- font-size: 12px;
669
- margin-bottom: 5px;
670
- }
671
  .modal-footer {
672
  padding: 5px;
673
  }
@@ -698,9 +606,6 @@
698
  width: 50px;
699
  height: 25px;
700
  }
701
- .customisable-text {
702
- font-size: 8px;
703
- }
704
  .button-container {
705
  gap: 3px;
706
  }
@@ -839,9 +744,6 @@
839
  ADD
840
  </button>
841
  {% endif %}
842
- {% if item.Section__c != 'Apetizer' and item.Section__c != 'Customized dish' and item.Section__c != 'Soft Drinks' %}
843
- <span class="customisable-text">Customisable</span>
844
- {% endif %}
845
  </div>
846
  </div>
847
  </div>
@@ -891,10 +793,6 @@
891
  <h5 id="modal-name" class="fw-bold text-center"></h5>
892
  <p id="modal-price" class="text-muted text-center"></p>
893
  <p id="modal-description" class="text-secondary"></p>
894
- <div id="modal-addons" class="modal-addons mt-4">
895
- <h6>Customization Options</h6>
896
- <div id="addons-list" class="addons-container">Loading customization options...</div>
897
- </div>
898
  <div class="mt-4">
899
  <h6>Custom Request</h6>
900
  <textarea id="modal-instructions" class="form-control" placeholder="Enter any special instructions here..."></textarea>
@@ -976,8 +874,7 @@
976
  let cart = JSON.parse(localStorage.getItem('cart')) || [];
977
  const existingItem = cart.find(item =>
978
  item.itemName === payload.itemName &&
979
- item.instructions === payload.instructions &&
980
- JSON.stringify(item.addons) === JSON.stringify(payload.addons)
981
  );
982
  if (existingItem) {
983
  existingItem.quantity = payload.quantity;
@@ -988,12 +885,11 @@
988
  return cart;
989
  }
990
 
991
- function removeFromCartLocalStorage(itemName, quantityToRemove, instructions, addons) {
992
  let cart = JSON.parse(localStorage.getItem('cart')) || [];
993
  const itemIndex = cart.findIndex(item =>
994
  item.itemName === itemName &&
995
- item.instructions === instructions &&
996
- JSON.stringify(item.addons) === JSON.stringify(addons)
997
  );
998
  if (itemIndex !== -1) {
999
  if (quantityToRemove >= cart[itemIndex].quantity) {
@@ -1050,7 +946,6 @@
1050
  itemImage: itemImage,
1051
  section: section,
1052
  category: selectedCategory,
1053
- addons: [],
1054
  instructions: '',
1055
  quantity: quantity
1056
  };
@@ -1109,56 +1004,11 @@
1109
  const modalImg = document.getElementById('modal-img');
1110
  modalImg.src = image || '/static/placeholder.jpg';
1111
  document.getElementById('modal-description').innerText = description || 'No description available.';
1112
- document.getElementById('addons-list').innerHTML = 'Loading customization options...';
1113
  document.getElementById('modal-instructions').value = '';
1114
  const modalSectionEl = document.getElementById('modal-section');
1115
  modalSectionEl.setAttribute('data-section', section);
1116
  modalSectionEl.setAttribute('data-category', selectedCategory);
1117
  document.getElementById('quantityInput').value = 1;
1118
-
1119
- fetch(`/api/addons?item_name=${encodeURIComponent(name)}&item_section=${encodeURIComponent(section)}`)
1120
- .then(response => response.json())
1121
- .then(data => {
1122
- const addonsList = document.getElementById('addons-list');
1123
- addonsList.innerHTML = '';
1124
- if (!data.success || !data.addons || data.addons.length === 0) {
1125
- addonsList.innerHTML = '<p>No customization options available.</p>';
1126
- return;
1127
- }
1128
- data.addons.forEach(addon => {
1129
- const sectionDiv = document.createElement('div');
1130
- sectionDiv.classList.add('addon-section');
1131
- const title = document.createElement('h6');
1132
- title.innerText = addon.name;
1133
- sectionDiv.appendChild(title);
1134
- const optionsContainer = document.createElement('div');
1135
- addon.options.forEach((option, index) => {
1136
- const optionId = `addon-${addon.name.replace(/\s+/g, '-')}-${index}`;
1137
- const formCheck = document.createElement('div');
1138
- formCheck.classList.add('form-check');
1139
- const input = document.createElement('input');
1140
- input.classList.add('form-check-input');
1141
- input.type = addon.multi_select ? 'checkbox' : 'radio';
1142
- input.name = addon.multi_select ? optionId : addon.name.replace(/\s+/g, '-');
1143
- input.id = optionId;
1144
- input.value = option.name;
1145
- input.dataset.price = option.price || 0;
1146
- const label = document.createElement('label');
1147
- label.classList.add('form-check-label');
1148
- label.htmlFor = optionId;
1149
- label.innerText = `${option.name} ${option.price ? `(+$${option.price})` : ''}`;
1150
- formCheck.appendChild(input);
1151
- formCheck.appendChild(label);
1152
- optionsContainer.appendChild(formCheck);
1153
- });
1154
- sectionDiv.appendChild(optionsContainer);
1155
- addonsList.appendChild(sectionDiv);
1156
- });
1157
- })
1158
- .catch(err => {
1159
- console.error('Error fetching addons:', err);
1160
- document.getElementById('addons-list').innerHTML = '<p>Error loading customization options.</p>';
1161
- });
1162
  }
1163
 
1164
  function addToCartFromModal() {
@@ -1174,14 +1024,12 @@
1174
  const quantity = parseInt(document.getElementById('quantityInput').value) || 1;
1175
  const instructions = document.getElementById('modal-instructions').value;
1176
 
1177
- const addons = [];
1178
- const addonInputs = document.querySelectorAll('#addons-list .form-check-input:checked');
1179
- addonInputs.forEach(input => {
1180
- addons.push({
1181
- name: input.value,
1182
- price: parseFloat(input.dataset.price) || 0
1183
- });
1184
- });
1185
 
1186
  const cartPayload = {
1187
  itemName: itemName,
@@ -1189,7 +1037,6 @@
1189
  itemImage: itemImage,
1190
  section: section,
1191
  category: selectedCategory,
1192
- addons: addons,
1193
  instructions: instructions,
1194
  quantity: quantity
1195
  };
@@ -1478,8 +1325,10 @@
1478
  });
1479
  increaseBtn.addEventListener('click', function () {
1480
  let currentQuantity = parseInt(quantityInput.value);
1481
- currentQuantity++;
1482
- quantityInput.value = currentQuantity;
 
 
1483
  });
1484
 
1485
  // Soft Drinks Modal Quantity Controls
 
95
  justify-content: center;
96
  gap: 6px;
97
  }
 
 
 
 
 
 
 
 
98
  .btn-primary {
99
  font-size: 12px;
100
  font-weight: bold;
 
225
  .mic-icon.active {
226
  color: #007bff;
227
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  form.text-center.mb-4 {
229
  display: flex;
230
  flex-direction: column;
 
270
  color: #6c757d;
271
  margin-bottom: 10px;
272
  }
 
 
 
 
 
 
 
 
 
 
 
273
  .modal-footer {
274
  display: flex;
275
  align-items: center;
 
576
  font-size: 12px;
577
  margin-bottom: 5px;
578
  }
 
 
 
 
 
 
 
 
 
579
  .modal-footer {
580
  padding: 5px;
581
  }
 
606
  width: 50px;
607
  height: 25px;
608
  }
 
 
 
609
  .button-container {
610
  gap: 3px;
611
  }
 
744
  ADD
745
  </button>
746
  {% endif %}
 
 
 
747
  </div>
748
  </div>
749
  </div>
 
793
  <h5 id="modal-name" class="fw-bold text-center"></h5>
794
  <p id="modal-price" class="text-muted text-center"></p>
795
  <p id="modal-description" class="text-secondary"></p>
 
 
 
 
796
  <div class="mt-4">
797
  <h6>Custom Request</h6>
798
  <textarea id="modal-instructions" class="form-control" placeholder="Enter any special instructions here..."></textarea>
 
874
  let cart = JSON.parse(localStorage.getItem('cart')) || [];
875
  const existingItem = cart.find(item =>
876
  item.itemName === payload.itemName &&
877
+ item.instructions === payload.instructions
 
878
  );
879
  if (existingItem) {
880
  existingItem.quantity = payload.quantity;
 
885
  return cart;
886
  }
887
 
888
+ function removeFromCartLocalStorage(itemName, quantityToRemove, instructions) {
889
  let cart = JSON.parse(localStorage.getItem('cart')) || [];
890
  const itemIndex = cart.findIndex(item =>
891
  item.itemName === itemName &&
892
+ item.instructions === instructions
 
893
  );
894
  if (itemIndex !== -1) {
895
  if (quantityToRemove >= cart[itemIndex].quantity) {
 
946
  itemImage: itemImage,
947
  section: section,
948
  category: selectedCategory,
 
949
  instructions: '',
950
  quantity: quantity
951
  };
 
1004
  const modalImg = document.getElementById('modal-img');
1005
  modalImg.src = image || '/static/placeholder.jpg';
1006
  document.getElementById('modal-description').innerText = description || 'No description available.';
 
1007
  document.getElementById('modal-instructions').value = '';
1008
  const modalSectionEl = document.getElementById('modal-section');
1009
  modalSectionEl.setAttribute('data-section', section);
1010
  modalSectionEl.setAttribute('data-category', selectedCategory);
1011
  document.getElementById('quantityInput').value = 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1012
  }
1013
 
1014
  function addToCartFromModal() {
 
1024
  const quantity = parseInt(document.getElementById('quantityInput').value) || 1;
1025
  const instructions = document.getElementById('modal-instructions').value;
1026
 
1027
+ if (!itemName || isNaN(itemPrice) || !section || !itemImage || quantity < 1) {
1028
+ console.error('Invalid cart item data:', { itemName, itemPrice, section, itemImage, quantity });
1029
+ alert('Invalid item data. Please try again.');
1030
+ isProcessingRequest = false;
1031
+ return;
1032
+ }
 
 
1033
 
1034
  const cartPayload = {
1035
  itemName: itemName,
 
1037
  itemImage: itemImage,
1038
  section: section,
1039
  category: selectedCategory,
 
1040
  instructions: instructions,
1041
  quantity: quantity
1042
  };
 
1325
  });
1326
  increaseBtn.addEventListener('click', function () {
1327
  let currentQuantity = parseInt(quantityInput.value);
1328
+ if (currentQuantity < 500) {
1329
+ currentQuantity++;
1330
+ quantityInput.value = currentQuantity;
1331
+ }
1332
  });
1333
 
1334
  // Soft Drinks Modal Quantity Controls