Spaces:
Sleeping
Sleeping
Update templates/menu.html
Browse files- templates/menu.html +41 -91
templates/menu.html
CHANGED
@@ -710,115 +710,65 @@ function updateCartDisplay(cart) {
|
|
710 |
}
|
711 |
|
712 |
document.addEventListener('DOMContentLoaded', function () {
|
713 |
-
// Get references to the quantity buttons and the input field
|
714 |
const decreaseBtn = document.getElementById('decreaseQuantity');
|
715 |
const increaseBtn = document.getElementById('increaseQuantity');
|
716 |
const quantityInput = document.getElementById('quantityInput');
|
717 |
-
|
718 |
-
// Add event
|
719 |
decreaseBtn.addEventListener('click', function () {
|
720 |
let currentQuantity = parseInt(quantityInput.value);
|
721 |
if (currentQuantity > 1) {
|
722 |
-
currentQuantity
|
723 |
-
quantityInput.value = currentQuantity;
|
724 |
}
|
725 |
});
|
726 |
|
727 |
-
// Add event listener to increase button
|
728 |
increaseBtn.addEventListener('click', function () {
|
729 |
let currentQuantity = parseInt(quantityInput.value);
|
730 |
-
currentQuantity
|
731 |
-
quantityInput.value = currentQuantity;
|
732 |
});
|
733 |
});
|
734 |
-
function renderAddonOptions(addon) {
|
735 |
-
const { name, options, max_selections } = addon;
|
736 |
-
|
737 |
-
let selectionContainer = document.createElement('div');
|
738 |
-
selectionContainer.classList.add('addon-container');
|
739 |
-
|
740 |
-
// Create a label for the addon
|
741 |
-
let addonLabel = document.createElement('label');
|
742 |
-
addonLabel.innerHTML = name;
|
743 |
-
selectionContainer.appendChild(addonLabel);
|
744 |
-
|
745 |
-
// Create the options as checkboxes or radio buttons based on max_selections
|
746 |
-
options.forEach(option => {
|
747 |
-
let optionLabel = document.createElement('label');
|
748 |
-
let inputElement;
|
749 |
-
|
750 |
-
// If max_selections is 1, use radio buttons for single selection
|
751 |
-
if (max_selections === 1) {
|
752 |
-
inputElement = document.createElement('input');
|
753 |
-
inputElement.type = 'radio';
|
754 |
-
inputElement.name = name;
|
755 |
-
inputElement.value = option;
|
756 |
-
inputElement.id = `${name}-${option}`;
|
757 |
-
} else {
|
758 |
-
inputElement = document.createElement('input');
|
759 |
-
inputElement.type = 'checkbox';
|
760 |
-
inputElement.value = option;
|
761 |
-
inputElement.id = `${name}-${option}`;
|
762 |
-
}
|
763 |
-
|
764 |
-
optionLabel.appendChild(inputElement);
|
765 |
-
optionLabel.appendChild(document.createTextNode(option));
|
766 |
-
selectionContainer.appendChild(optionLabel);
|
767 |
-
});
|
768 |
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
option
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
786 |
});
|
787 |
-
}
|
788 |
-
}
|
789 |
|
790 |
-
|
791 |
-
document.querySelectorAll('input').forEach(input => {
|
792 |
-
input.addEventListener('change', (event) => {
|
793 |
-
handleSelectionChange(event, addon.max_selections);
|
794 |
});
|
795 |
-
});
|
796 |
-
|
797 |
-
// Function to round reward points to a single digit
|
798 |
-
function roundRewardPoints() {
|
799 |
-
// Get the reward points element
|
800 |
-
let rewardPointsElement = document.getElementById('reward-points');
|
801 |
-
|
802 |
-
// Check if the element exists in the DOM
|
803 |
-
if (rewardPointsElement) {
|
804 |
-
let rewardPointsText = rewardPointsElement.innerText.trim(); // Get and trim the value to remove any extra spaces
|
805 |
-
|
806 |
-
// Check if the innerText is a valid number
|
807 |
-
let rewardPoints = parseFloat(rewardPointsText);
|
808 |
-
|
809 |
-
// If it's a valid number, round it to 1 decimal place
|
810 |
-
if (!isNaN(rewardPoints)) {
|
811 |
-
rewardPointsElement.innerText = rewardPoints.toFixed(1); // Round to 1 decimal place
|
812 |
-
} else {
|
813 |
-
console.error("Reward points value is not a valid number:", rewardPointsText);
|
814 |
-
}
|
815 |
-
} else {
|
816 |
-
console.error("Reward points element is missing.");
|
817 |
-
}
|
818 |
}
|
819 |
-
// Run the function when the page loads
|
820 |
-
window.onload = roundRewardPoints;
|
821 |
-
|
822 |
</script>
|
823 |
|
824 |
<!-- Bootstrap JS -->
|
|
|
710 |
}
|
711 |
|
712 |
document.addEventListener('DOMContentLoaded', function () {
|
|
|
713 |
const decreaseBtn = document.getElementById('decreaseQuantity');
|
714 |
const increaseBtn = document.getElementById('increaseQuantity');
|
715 |
const quantityInput = document.getElementById('quantityInput');
|
716 |
+
|
717 |
+
// Add event listeners for quantity control
|
718 |
decreaseBtn.addEventListener('click', function () {
|
719 |
let currentQuantity = parseInt(quantityInput.value);
|
720 |
if (currentQuantity > 1) {
|
721 |
+
quantityInput.value = currentQuantity - 1;
|
|
|
722 |
}
|
723 |
});
|
724 |
|
|
|
725 |
increaseBtn.addEventListener('click', function () {
|
726 |
let currentQuantity = parseInt(quantityInput.value);
|
727 |
+
quantityInput.value = currentQuantity + 1;
|
|
|
728 |
});
|
729 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
730 |
|
731 |
+
// Function to dynamically create addon options and enforce max selection
|
732 |
+
function loadAddons(addons) {
|
733 |
+
const addonsContainer = document.getElementById('addons-list');
|
734 |
+
addonsContainer.innerHTML = ""; // Clear previous content
|
735 |
+
|
736 |
+
addons.forEach(addon => {
|
737 |
+
const maxSelections = addon.max_selections || 1; // Default to 1 if not provided
|
738 |
+
const optionsContainer = document.createElement('div');
|
739 |
+
optionsContainer.classList.add('addon-group');
|
740 |
+
|
741 |
+
const title = document.createElement('h6');
|
742 |
+
title.textContent = addon.name;
|
743 |
+
optionsContainer.appendChild(title);
|
744 |
+
|
745 |
+
addon.options.forEach(option => {
|
746 |
+
const label = document.createElement('label');
|
747 |
+
label.classList.add('addon-option');
|
748 |
+
|
749 |
+
const checkbox = document.createElement('input');
|
750 |
+
checkbox.type = 'checkbox';
|
751 |
+
checkbox.value = option;
|
752 |
+
checkbox.name = addon.name; // Group by addon name
|
753 |
+
|
754 |
+
label.appendChild(checkbox);
|
755 |
+
label.appendChild(document.createTextNode(" " + option));
|
756 |
+
optionsContainer.appendChild(label);
|
757 |
+
|
758 |
+
// Enforce max selection rule
|
759 |
+
checkbox.addEventListener('change', function () {
|
760 |
+
if (maxSelections === 1) {
|
761 |
+
// If max selection is 1, uncheck all other checkboxes in the group
|
762 |
+
document.querySelectorAll(`input[name="${addon.name}"]`).forEach(cb => {
|
763 |
+
if (cb !== checkbox) cb.checked = false;
|
764 |
+
});
|
765 |
+
}
|
766 |
+
});
|
767 |
});
|
|
|
|
|
768 |
|
769 |
+
addonsContainer.appendChild(optionsContainer);
|
|
|
|
|
|
|
770 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
771 |
}
|
|
|
|
|
|
|
772 |
</script>
|
773 |
|
774 |
<!-- Bootstrap JS -->
|