Update templates/menu.html
Browse files- templates/menu.html +179 -154
templates/menu.html
CHANGED
@@ -135,7 +135,7 @@
|
|
135 |
top: 50%;
|
136 |
transform: translateY(-50%);
|
137 |
display: flex;
|
138 |
-
align-items:
|
139 |
justify-content: center;
|
140 |
}
|
141 |
.avatar-icon {
|
@@ -264,6 +264,9 @@
|
|
264 |
position: relative;
|
265 |
margin-right: 10px;
|
266 |
}
|
|
|
|
|
|
|
267 |
.addon-section .form-check-input:checked {
|
268 |
background-color: #006400;
|
269 |
border-color: #006400;
|
@@ -276,6 +279,16 @@
|
|
276 |
left: 4px;
|
277 |
color: white;
|
278 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
.addon-section .form-check-label {
|
280 |
font-size: 16px;
|
281 |
margin-left: 5px;
|
@@ -730,7 +743,6 @@
|
|
730 |
</style>
|
731 |
</head>
|
732 |
<body>
|
733 |
-
|
734 |
<div class="fixed-top-bar">
|
735 |
<div class="avatar-dropdown-container">
|
736 |
<div class="avatar-icon">
|
@@ -786,7 +798,7 @@
|
|
786 |
<div class="row">
|
787 |
{% for item in items %}
|
788 |
<div class="col-md-6 mb-4">
|
789 |
-
<div class="card menu-card" data-item-name="{{ item.Name | default('Unnamed Item') }}">
|
790 |
<video
|
791 |
class="card-img-top menu-video"
|
792 |
muted
|
@@ -814,7 +826,9 @@
|
|
814 |
data-item-price="{{ item.Price__c | default('0.00') }}"
|
815 |
data-item-image="{{ item.Image1__c | default('/static/placeholder.jpg') }}"
|
816 |
data-item-section="{{ item.Section__c | default(section) }}"
|
817 |
-
data-item-category="{{ selected_category }}"
|
|
|
|
|
818 |
{% if item.Section__c == 'Soft Drinks' %}
|
819 |
<button class="btn btn-primary add-to-cart-btn" onclick="showSoftDrinkModal(this)">ADD</button>
|
820 |
{% else %}
|
@@ -1089,6 +1103,130 @@
|
|
1089 |
}
|
1090 |
}
|
1091 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1092 |
document.addEventListener('DOMContentLoaded', function () {
|
1093 |
// Avatar Dropdown
|
1094 |
const avatarContainer = document.querySelector('.avatar-dropdown-container');
|
@@ -1115,21 +1253,47 @@
|
|
1115 |
window.location.href = '/search';
|
1116 |
});
|
1117 |
|
1118 |
-
//
|
1119 |
const selectedItem = localStorage.getItem('selectedItem');
|
1120 |
if (selectedItem) {
|
1121 |
-
|
1122 |
-
|
1123 |
-
const
|
1124 |
-
|
1125 |
-
|
1126 |
-
|
1127 |
-
|
1128 |
-
|
1129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1130 |
}
|
1131 |
}
|
1132 |
-
})
|
|
|
|
|
1133 |
localStorage.removeItem('selectedItem');
|
1134 |
}
|
1135 |
|
@@ -1363,145 +1527,6 @@
|
|
1363 |
micIcon.style.display = 'none';
|
1364 |
}
|
1365 |
});
|
1366 |
-
|
1367 |
-
function showItemDetails(name, price, image, description, section, selectedCategory) {
|
1368 |
-
document.getElementById('modal-name').innerText = name;
|
1369 |
-
document.getElementById('modal-price').innerText = `$${price}`;
|
1370 |
-
const modalImg = document.getElementById('modal-img');
|
1371 |
-
modalImg.src = image || '/static/placeholder.jpg';
|
1372 |
-
document.getElementById('modal-description').innerText = description || 'No description available.';
|
1373 |
-
document.getElementById('addons-list').innerHTML = 'Loading customization options...';
|
1374 |
-
document.getElementById('modal-instructions').value = '';
|
1375 |
-
const modalSectionEl = document.getElementById('modal-section');
|
1376 |
-
modalSectionEl.setAttribute('data-section', section);
|
1377 |
-
modalSectionEl.setAttribute('data-category', selectedCategory);
|
1378 |
-
document.getElementById('quantityInput').value = 1;
|
1379 |
-
|
1380 |
-
fetch(`/api/addons?item_name=${encodeURIComponent(name)}&item_section=${encodeURIComponent(section)}`)
|
1381 |
-
.then(response => response.json())
|
1382 |
-
.then(data => {
|
1383 |
-
const addonsList = document.getElementById('addons-list');
|
1384 |
-
addonsList.innerHTML = '';
|
1385 |
-
if (!data.success || !data.addons || data.addons.length === 0) {
|
1386 |
-
addonsList.innerHTML = '<p>No customization options available.</p>';
|
1387 |
-
return;
|
1388 |
-
}
|
1389 |
-
data.addons.forEach(addon => {
|
1390 |
-
const sectionDiv = document.createElement('div');
|
1391 |
-
sectionDiv.classList.add('addon-section');
|
1392 |
-
const title = document.createElement('h6');
|
1393 |
-
title.innerText = addon.name;
|
1394 |
-
sectionDiv.appendChild(title);
|
1395 |
-
const optionsContainer = document.createElement('div');
|
1396 |
-
addon.options.forEach((option, index) => {
|
1397 |
-
const optionId = `addon-${addon.name.replace(/\s+/g, '')}-${index}`;
|
1398 |
-
const listItem = document.createElement('div');
|
1399 |
-
listItem.classList.add('form-check');
|
1400 |
-
listItem.innerHTML = `
|
1401 |
-
<input type="checkbox" class="form-check-input addon-option" id="${optionId}" value="${option}"
|
1402 |
-
data-name="${option}" data-group="${addon.name}" data-price="${addon.extra_charge ? addon.extra_charge_amount : 0}">
|
1403 |
-
<label class="form-check-label" for="${optionId}">
|
1404 |
-
${option} ${addon.extra_charge ? `($${addon.extra_charge_amount})` : ''}
|
1405 |
-
</label>
|
1406 |
-
`;
|
1407 |
-
optionsContainer.appendChild(listItem);
|
1408 |
-
});
|
1409 |
-
sectionDiv.appendChild(optionsContainer);
|
1410 |
-
addonsList.appendChild(sectionDiv);
|
1411 |
-
});
|
1412 |
-
})
|
1413 |
-
.catch(err => {
|
1414 |
-
console.error('Error fetching add-ons:', err);
|
1415 |
-
document.getElementById('addons-list').innerHTML = '<p>Error loading customization options.</p>';
|
1416 |
-
});
|
1417 |
-
}
|
1418 |
-
|
1419 |
-
document.addEventListener('click', function(event) {
|
1420 |
-
if (event.target.classList.contains('addon-option')) {
|
1421 |
-
handleAddonClick(event.target);
|
1422 |
-
}
|
1423 |
-
});
|
1424 |
-
|
1425 |
-
function handleAddonClick(checkbox) {
|
1426 |
-
const groupName = checkbox.getAttribute('data-group');
|
1427 |
-
const isMultiSelectGroup = ["Extra Toppings", "Choose Raita/Sides", "Select Dip/Sauce", "Extra Add-ons", "Make it a Combo", "Beverages", "Sauces"].includes(groupName);
|
1428 |
-
if (!isMultiSelectGroup) {
|
1429 |
-
const checkboxes = document.querySelectorAll(`.addon-option[data-group="${groupName}"]`);
|
1430 |
-
checkboxes.forEach(otherCheckbox => {
|
1431 |
-
if (otherCheckbox !== checkbox) {
|
1432 |
-
otherCheckbox.checked = false;
|
1433 |
-
}
|
1434 |
-
});
|
1435 |
-
}
|
1436 |
-
}
|
1437 |
-
|
1438 |
-
function addToCartFromModal() {
|
1439 |
-
const itemName = document.getElementById('modal-name').innerText;
|
1440 |
-
let itemPrice = parseFloat(document.getElementById('modal-price').innerText.replace('$', ''));
|
1441 |
-
if (isNaN(itemPrice)) {
|
1442 |
-
alert('Invalid price for the item. Please check the item details.');
|
1443 |
-
return;
|
1444 |
-
}
|
1445 |
-
const itemImage = document.getElementById('modal-img').src;
|
1446 |
-
const modalSectionEl = document.getElementById('modal-section');
|
1447 |
-
const section = modalSectionEl.getAttribute('data-section');
|
1448 |
-
const selectedCategory = modalSectionEl.getAttribute('data-category');
|
1449 |
-
if (!itemName || !itemPrice || !section || !itemImage) {
|
1450 |
-
console.error('Missing data for cart item:', { itemName, itemPrice, section, itemImage });
|
1451 |
-
return;
|
1452 |
-
}
|
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,
|
1466 |
-
itemImage: itemImage,
|
1467 |
-
section: section,
|
1468 |
-
category: selectedCategory,
|
1469 |
-
addons: selectedAddOns,
|
1470 |
-
instructions: instructions,
|
1471 |
-
quantity: quantity
|
1472 |
-
};
|
1473 |
-
fetch('/cart/add', {
|
1474 |
-
method: 'POST',
|
1475 |
-
headers: {
|
1476 |
-
'Content-Type': 'application/json',
|
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>
|
1507 |
</html>
|
|
|
135 |
top: 50%;
|
136 |
transform: translateY(-50%);
|
137 |
display: flex;
|
138 |
+
align-items: center;
|
139 |
justify-content: center;
|
140 |
}
|
141 |
.avatar-icon {
|
|
|
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;
|
|
|
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;
|
|
|
743 |
</style>
|
744 |
</head>
|
745 |
<body>
|
|
|
746 |
<div class="fixed-top-bar">
|
747 |
<div class="avatar-dropdown-container">
|
748 |
<div class="avatar-icon">
|
|
|
798 |
<div class="row">
|
799 |
{% for item in items %}
|
800 |
<div class="col-md-6 mb-4">
|
801 |
+
<div class="card menu-card" data-item-name="{{ item.Name | default('Unnamed Item') }}" data-item-section="{{ item.Section__c | default(section) }}">
|
802 |
<video
|
803 |
class="card-img-top menu-video"
|
804 |
muted
|
|
|
826 |
data-item-price="{{ item.Price__c | default('0.00') }}"
|
827 |
data-item-image="{{ item.Image1__c | default('/static/placeholder.jpg') }}"
|
828 |
data-item-section="{{ item.Section__c | default(section) }}"
|
829 |
+
data-item-category="{{ selected_category }}"
|
830 |
+
data-item-description="{{ item.Description__c | default('No description') }}"
|
831 |
+
data-item-image2="{{ item.Image2__c | default(item.Image1__c) }}">
|
832 |
{% if item.Section__c == 'Soft Drinks' %}
|
833 |
<button class="btn btn-primary add-to-cart-btn" onclick="showSoftDrinkModal(this)">ADD</button>
|
834 |
{% else %}
|
|
|
1103 |
}
|
1104 |
}
|
1105 |
|
1106 |
+
function showItemDetails(name, price, image, description, section, selectedCategory) {
|
1107 |
+
document.getElementById('modal-name').innerText = name;
|
1108 |
+
document.getElementById('modal-price').innerText = `$${price}`;
|
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() {
|
1165 |
+
if (isProcessingRequest) return;
|
1166 |
+
isProcessingRequest = true;
|
1167 |
+
|
1168 |
+
const modalSectionEl = document.getElementById('modal-section');
|
1169 |
+
const section = modalSectionEl.getAttribute('data-section');
|
1170 |
+
const selectedCategory = modalSectionEl.getAttribute('data-category');
|
1171 |
+
const itemName = document.getElementById('modal-name').innerText;
|
1172 |
+
const itemPrice = parseFloat(document.getElementById('modal-price').innerText.replace('$', '')) || 0;
|
1173 |
+
const itemImage = document.getElementById('modal-img').src;
|
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,
|
1188 |
+
itemPrice: itemPrice,
|
1189 |
+
itemImage: itemImage,
|
1190 |
+
section: section,
|
1191 |
+
category: selectedCategory,
|
1192 |
+
addons: addons,
|
1193 |
+
instructions: instructions,
|
1194 |
+
quantity: quantity
|
1195 |
+
};
|
1196 |
+
|
1197 |
+
fetch('/cart/add', {
|
1198 |
+
method: 'POST',
|
1199 |
+
headers: {
|
1200 |
+
'Content-Type': 'application/json',
|
1201 |
+
},
|
1202 |
+
body: JSON.stringify(cartPayload)
|
1203 |
+
})
|
1204 |
+
.then(response => response.json())
|
1205 |
+
.then(data => {
|
1206 |
+
if (data.success) {
|
1207 |
+
updateCartUI(data.cart);
|
1208 |
+
const modal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
|
1209 |
+
modal.hide();
|
1210 |
+
} else {
|
1211 |
+
console.error('Failed to add item to cart:', data.error);
|
1212 |
+
const cart = addToCartLocalStorage(cartPayload);
|
1213 |
+
updateCartUI(cart);
|
1214 |
+
const modal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
|
1215 |
+
modal.hide();
|
1216 |
+
}
|
1217 |
+
})
|
1218 |
+
.catch(err => {
|
1219 |
+
console.error('Error adding item to cart:', err);
|
1220 |
+
const cart = addToCartLocalStorage(cartPayload);
|
1221 |
+
updateCartUI(cart);
|
1222 |
+
const modal = bootstrap.Modal.getInstance(document.getElementById('itemModal'));
|
1223 |
+
modal.hide();
|
1224 |
+
})
|
1225 |
+
.finally(() => {
|
1226 |
+
isProcessingRequest = false;
|
1227 |
+
});
|
1228 |
+
}
|
1229 |
+
|
1230 |
document.addEventListener('DOMContentLoaded', function () {
|
1231 |
// Avatar Dropdown
|
1232 |
const avatarContainer = document.querySelector('.avatar-dropdown-container');
|
|
|
1253 |
window.location.href = '/search';
|
1254 |
});
|
1255 |
|
1256 |
+
// Auto-open modal for selected item
|
1257 |
const selectedItem = localStorage.getItem('selectedItem');
|
1258 |
if (selectedItem) {
|
1259 |
+
try {
|
1260 |
+
const { name, section } = JSON.parse(selectedItem);
|
1261 |
+
const menuCards = document.querySelectorAll('.menu-card');
|
1262 |
+
let targetCard = null;
|
1263 |
+
let buttonContainer = null;
|
1264 |
+
|
1265 |
+
menuCards.forEach(card => {
|
1266 |
+
const itemName = card.getAttribute('data-item-name');
|
1267 |
+
const itemSection = card.getAttribute('data-item-section');
|
1268 |
+
if (itemName === name && itemSection === section) {
|
1269 |
+
targetCard = card;
|
1270 |
+
buttonContainer = card.querySelector('.button-container');
|
1271 |
+
card.classList.add('highlighted');
|
1272 |
+
card.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
1273 |
+
const toggleLink = card.querySelector('.toggle-details');
|
1274 |
+
if (toggleLink) {
|
1275 |
+
toggleLink.click();
|
1276 |
+
}
|
1277 |
+
}
|
1278 |
+
});
|
1279 |
+
|
1280 |
+
if (buttonContainer) {
|
1281 |
+
if (section === 'Soft Drinks') {
|
1282 |
+
showSoftDrinkModal(buttonContainer.querySelector('.add-to-cart-btn'));
|
1283 |
+
} else {
|
1284 |
+
const name = buttonContainer.getAttribute('data-item-name');
|
1285 |
+
const price = buttonContainer.getAttribute('data-item-price');
|
1286 |
+
const image = buttonContainer.getAttribute('data-item-image2');
|
1287 |
+
const description = buttonContainer.getAttribute('data-item-description');
|
1288 |
+
const category = buttonContainer.getAttribute('data-item-category');
|
1289 |
+
showItemDetails(name, price, image, description, section, category);
|
1290 |
+
const modal = new bootstrap.Modal(document.getElementById('itemModal'));
|
1291 |
+
modal.show();
|
1292 |
}
|
1293 |
}
|
1294 |
+
} catch (err) {
|
1295 |
+
console.error('Error parsing selected item:', err);
|
1296 |
+
}
|
1297 |
localStorage.removeItem('selectedItem');
|
1298 |
}
|
1299 |
|
|
|
1527 |
micIcon.style.display = 'none';
|
1528 |
}
|
1529 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1530 |
</script>
|
1531 |
</body>
|
1532 |
</html>
|