Spaces:
Sleeping
Sleeping
Update templates/menu.html
Browse files- templates/menu.html +169 -25
templates/menu.html
CHANGED
@@ -391,6 +391,65 @@ form-check-input addon-option{
|
|
391 |
height: 35px;
|
392 |
}
|
393 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
394 |
</style>
|
395 |
</head>
|
396 |
<body>
|
@@ -417,24 +476,29 @@ form-check-input addon-option{
|
|
417 |
|
418 |
<!-- Category Filter with Custom Radio Buttons -->
|
419 |
<form method="get" action="/menu" class="text-center mb-4">
|
420 |
-
<label class="form-label fw-bold">Select a
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
<
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
|
|
|
|
|
|
|
|
|
|
431 |
</div>
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
<input type="checkbox" id="vegToggle" class="form-check-input" onchange="toggleVegCategory()">
|
436 |
-
<label class="form-check-label" for="vegToggle">Toggle Veg/Non-Veg</label>
|
437 |
</div>
|
|
|
|
|
438 |
|
439 |
<!-- Separate Customized Dish radio button in a new div to align it properly -->
|
440 |
<div class="form-check">
|
@@ -785,17 +849,97 @@ document.addEventListener('DOMContentLoaded', function () {
|
|
785 |
});
|
786 |
});
|
787 |
|
788 |
-
//
|
789 |
-
function
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
794 |
} else {
|
795 |
-
//
|
796 |
-
|
|
|
797 |
}
|
798 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
799 |
</script>
|
800 |
|
801 |
<!-- Bootstrap JS -->
|
|
|
391 |
height: 35px;
|
392 |
}
|
393 |
}
|
394 |
+
/* Toggle Switch Styles */
|
395 |
+
.switch {
|
396 |
+
position: relative;
|
397 |
+
display: inline-block;
|
398 |
+
width: 60px;
|
399 |
+
height: 34px;
|
400 |
+
}
|
401 |
+
|
402 |
+
.switch input {
|
403 |
+
opacity: 0;
|
404 |
+
width: 0;
|
405 |
+
height: 0;
|
406 |
+
}
|
407 |
+
|
408 |
+
.slider {
|
409 |
+
position: absolute;
|
410 |
+
cursor: pointer;
|
411 |
+
top: 0;
|
412 |
+
left: 0;
|
413 |
+
right: 0;
|
414 |
+
bottom: 0;
|
415 |
+
background-color: #ccc;
|
416 |
+
transition: 0.4s;
|
417 |
+
border-radius: 34px;
|
418 |
+
}
|
419 |
+
|
420 |
+
.slider:before {
|
421 |
+
position: absolute;
|
422 |
+
content: "";
|
423 |
+
height: 26px;
|
424 |
+
width: 26px;
|
425 |
+
border-radius: 50%;
|
426 |
+
left: 4px;
|
427 |
+
bottom: 4px;
|
428 |
+
background-color: white;
|
429 |
+
transition: 0.4s;
|
430 |
+
}
|
431 |
+
|
432 |
+
input:checked + .slider {
|
433 |
+
background-color: #4CAF50;
|
434 |
+
}
|
435 |
+
|
436 |
+
input:checked + .slider:before {
|
437 |
+
transform: translateX(26px);
|
438 |
+
}
|
439 |
+
|
440 |
+
/* Label for Veg/Non-Veg Toggle */
|
441 |
+
.veg-toggle-container {
|
442 |
+
text-align: center;
|
443 |
+
margin-bottom: 20px;
|
444 |
+
}
|
445 |
+
|
446 |
+
#vegToggleLabel {
|
447 |
+
margin-left: 10px;
|
448 |
+
font-size: 1.1rem;
|
449 |
+
color: #4CAF50;
|
450 |
+
font-weight: bold;
|
451 |
+
}
|
452 |
+
|
453 |
</style>
|
454 |
</head>
|
455 |
<body>
|
|
|
476 |
|
477 |
<!-- Category Filter with Custom Radio Buttons -->
|
478 |
<form method="get" action="/menu" class="text-center mb-4">
|
479 |
+
<label class="form-label fw-bold">Select a preference:</label>
|
480 |
+
<!-- Toggle Veg/Non-Veg Button -->
|
481 |
+
<div class="veg-toggle-container">
|
482 |
+
<label class="switch">
|
483 |
+
<input type="checkbox" id="vegToggle" onchange="toggleVegItems()">
|
484 |
+
<span class="slider round"></span>
|
485 |
+
</label>
|
486 |
+
<span id="vegToggleLabel">Veg Only</span>
|
487 |
+
</div>
|
488 |
+
|
489 |
+
<!-- Menu Section -->
|
490 |
+
<div class="container mt-4" id="menuContainer">
|
491 |
+
<h1 class="text-center">Menu</h1>
|
492 |
+
<!-- Veg items will be shown here when toggled -->
|
493 |
+
<div id="vegItemsContainer" class="veg-items">
|
494 |
+
<!-- Veg items will be dynamically populated -->
|
495 |
</div>
|
496 |
+
<!-- All items will be shown here -->
|
497 |
+
<div id="allItemsContainer" class="all-items">
|
498 |
+
<!-- All items will be dynamically populated -->
|
|
|
|
|
499 |
</div>
|
500 |
+
</div>
|
501 |
+
|
502 |
|
503 |
<!-- Separate Customized Dish radio button in a new div to align it properly -->
|
504 |
<div class="form-check">
|
|
|
849 |
});
|
850 |
});
|
851 |
|
852 |
+
// Fetch menu items from Salesforce
|
853 |
+
function fetchMenuItems() {
|
854 |
+
fetch('/services/apexrest/menuItems/') // Assuming your Salesforce API endpoint
|
855 |
+
.then(response => response.json())
|
856 |
+
.then(data => {
|
857 |
+
const menuItems = data.map(item => ({
|
858 |
+
name: item.Name,
|
859 |
+
category: item.Category__c,
|
860 |
+
price: item.Price__c,
|
861 |
+
image: item.Image__c
|
862 |
+
}));
|
863 |
+
renderAllItems(menuItems);
|
864 |
+
renderVegItems(menuItems);
|
865 |
+
})
|
866 |
+
.catch(err => {
|
867 |
+
console.error('Error fetching menu items:', err);
|
868 |
+
});
|
869 |
+
}
|
870 |
+
|
871 |
+
// Function to toggle Veg/Non-Veg items
|
872 |
+
function toggleVegItems() {
|
873 |
+
const isVegOnly = document.getElementById('vegToggle').checked;
|
874 |
+
|
875 |
+
// Get the containers for all items and veg items
|
876 |
+
const allItemsContainer = document.getElementById('allItemsContainer');
|
877 |
+
const vegItemsContainer = document.getElementById('vegItemsContainer');
|
878 |
+
|
879 |
+
if (isVegOnly) {
|
880 |
+
// Show only Veg items
|
881 |
+
vegItemsContainer.style.display = 'block';
|
882 |
+
allItemsContainer.style.display = 'none';
|
883 |
} else {
|
884 |
+
// Show all items
|
885 |
+
vegItemsContainer.style.display = 'none';
|
886 |
+
allItemsContainer.style.display = 'block';
|
887 |
}
|
888 |
+
}
|
889 |
+
|
890 |
+
// Function to render Veg items
|
891 |
+
function renderVegItems(menuItems) {
|
892 |
+
const vegItemsContainer = document.getElementById('vegItemsContainer');
|
893 |
+
vegItemsContainer.innerHTML = ''; // Clear previous content
|
894 |
+
|
895 |
+
// Filter and render only Veg items
|
896 |
+
const vegItems = menuItems.filter(item => item.category === 'Veg');
|
897 |
+
vegItems.forEach(item => {
|
898 |
+
const itemDiv = document.createElement('div');
|
899 |
+
itemDiv.classList.add('menu-item');
|
900 |
+
itemDiv.innerHTML = `
|
901 |
+
<div class="card menu-card">
|
902 |
+
<img src="${item.image}" class="card-img-top menu-image" alt="${item.name}">
|
903 |
+
<div class="card-body">
|
904 |
+
<h5 class="card-title">${item.name}</h5>
|
905 |
+
<p class="card-text">$${item.price}</p>
|
906 |
+
<button class="btn btn-primary">Add to Cart</button>
|
907 |
+
</div>
|
908 |
+
</div>
|
909 |
+
`;
|
910 |
+
vegItemsContainer.appendChild(itemDiv);
|
911 |
+
});
|
912 |
+
}
|
913 |
+
|
914 |
+
// Function to render all menu items (Veg + Non-Veg)
|
915 |
+
function renderAllItems(menuItems) {
|
916 |
+
const allItemsContainer = document.getElementById('allItemsContainer');
|
917 |
+
allItemsContainer.innerHTML = ''; // Clear previous content
|
918 |
+
|
919 |
+
// Render all menu items
|
920 |
+
menuItems.forEach(item => {
|
921 |
+
const itemDiv = document.createElement('div');
|
922 |
+
itemDiv.classList.add('menu-item');
|
923 |
+
itemDiv.innerHTML = `
|
924 |
+
<div class="card menu-card">
|
925 |
+
<img src="${item.image}" class="card-img-top menu-image" alt="${item.name}">
|
926 |
+
<div class="card-body">
|
927 |
+
<h5 class="card-title">${item.name}</h5>
|
928 |
+
<p class="card-text">$${item.price}</p>
|
929 |
+
<button class="btn btn-primary">Add to Cart</button>
|
930 |
+
</div>
|
931 |
+
</div>
|
932 |
+
`;
|
933 |
+
allItemsContainer.appendChild(itemDiv);
|
934 |
+
});
|
935 |
+
}
|
936 |
+
|
937 |
+
// Initialize the page
|
938 |
+
document.addEventListener('DOMContentLoaded', function () {
|
939 |
+
fetchMenuItems(); // Fetch and display menu items when the page loads
|
940 |
+
toggleVegItems(); // Display based on initial state
|
941 |
+
});
|
942 |
+
|
943 |
</script>
|
944 |
|
945 |
<!-- Bootstrap JS -->
|