Spaces:
Sleeping
Sleeping
Update templates/Menu.html
Browse files- templates/Menu.html +63 -29
templates/Menu.html
CHANGED
|
@@ -212,43 +212,77 @@
|
|
| 212 |
</div>
|
| 213 |
|
| 214 |
<script>
|
|
|
|
|
|
|
|
|
|
| 215 |
async function fetchMenu() {
|
| 216 |
try {
|
| 217 |
-
const response = await fetch('/get_menu');
|
| 218 |
const menuItems = await response.json();
|
| 219 |
-
|
| 220 |
-
|
| 221 |
-
|
| 222 |
-
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
| 229 |
-
<h3>${item.Name}</h3>
|
| 230 |
-
<p class="price">$${item.Price__c}</p>
|
| 231 |
-
<div class="rating">
|
| 232 |
-
⭐ 4.2 (206)
|
| 233 |
-
</div>
|
| 234 |
-
<button class="save-btn">❤️ Save to Eatlist</button>
|
| 235 |
-
<p class="description">A flavorful dish with fresh ingredients... more</p>
|
| 236 |
-
</div>
|
| 237 |
-
<div class="add-container">
|
| 238 |
-
<img class="menu-img" src="${item.Image1__c}" alt="${item.Name}">
|
| 239 |
-
<button class="add-btn">ADD</button>
|
| 240 |
-
<p class="customizable">Customisable</p>
|
| 241 |
-
</div>
|
| 242 |
-
`;
|
| 243 |
-
menuContainer.appendChild(menuItem);
|
| 244 |
-
});
|
| 245 |
} catch (error) {
|
| 246 |
console.error("Error fetching menu:", error);
|
| 247 |
}
|
| 248 |
}
|
| 249 |
|
| 250 |
-
|
| 251 |
-
|
|
|
|
|
|
|
| 252 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 253 |
</body>
|
| 254 |
</html>
|
|
|
|
| 212 |
</div>
|
| 213 |
|
| 214 |
<script>
|
| 215 |
+
let filteredMenu = [];
|
| 216 |
+
|
| 217 |
+
// Fetch menu items from Flask backend
|
| 218 |
async function fetchMenu() {
|
| 219 |
try {
|
| 220 |
+
const response = await fetch('/get_menu'); // Call the Flask API
|
| 221 |
const menuItems = await response.json();
|
| 222 |
+
|
| 223 |
+
// Check if the response is valid
|
| 224 |
+
if (!Array.isArray(menuItems)) {
|
| 225 |
+
console.error("Invalid menu data");
|
| 226 |
+
return;
|
| 227 |
+
}
|
| 228 |
+
|
| 229 |
+
filteredMenu = menuItems; // Save fetched data to filteredMenu
|
| 230 |
+
displayMenu(filteredMenu); // Display menu items
|
| 231 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 232 |
} catch (error) {
|
| 233 |
console.error("Error fetching menu:", error);
|
| 234 |
}
|
| 235 |
}
|
| 236 |
|
| 237 |
+
// Display menu items on the page
|
| 238 |
+
function displayMenu(menuItems) {
|
| 239 |
+
const menuContainer = document.getElementById("menu");
|
| 240 |
+
menuContainer.innerHTML = '';
|
| 241 |
|
| 242 |
+
menuItems.forEach(item => {
|
| 243 |
+
const menuItem = document.createElement("div");
|
| 244 |
+
menuItem.classList.add("menu-item");
|
| 245 |
+
menuItem.innerHTML = `
|
| 246 |
+
<div class="menu-details">
|
| 247 |
+
<div class="bestseller">
|
| 248 |
+
<img src="bestseller-icon.png" alt="Best Seller"> Bestseller
|
| 249 |
+
</div>
|
| 250 |
+
<h3>${item.Name}</h3>
|
| 251 |
+
<p class="price">$${item.Price__c}</p>
|
| 252 |
+
<div class="rating">
|
| 253 |
+
⭐ 4.2 (206)
|
| 254 |
+
</div>
|
| 255 |
+
<button class="save-btn">❤️ Save to Eatlist</button>
|
| 256 |
+
<p class="description">${item.Description__c}</p>
|
| 257 |
+
</div>
|
| 258 |
+
<div class="add-container">
|
| 259 |
+
<img class="menu-img" src="${item.Image1__c}" alt="${item.Name}">
|
| 260 |
+
<button class="add-btn">ADD</button>
|
| 261 |
+
<p class="customizable">Customisable</p>
|
| 262 |
+
</div>
|
| 263 |
+
`;
|
| 264 |
+
menuContainer.appendChild(menuItem);
|
| 265 |
+
});
|
| 266 |
+
}
|
| 267 |
+
|
| 268 |
+
// Search for menu items
|
| 269 |
+
function searchMenu() {
|
| 270 |
+
const query = document.getElementById("search").value.toLowerCase();
|
| 271 |
+
const filtered = filteredMenu.filter(item => item.Name.toLowerCase().includes(query));
|
| 272 |
+
displayMenu(filtered);
|
| 273 |
+
}
|
| 274 |
+
|
| 275 |
+
// Filter menu items by category
|
| 276 |
+
function filterCategory(category) {
|
| 277 |
+
const filtered = filteredMenu.filter(item => item.Category__c === category);
|
| 278 |
+
displayMenu(filtered);
|
| 279 |
+
}
|
| 280 |
+
|
| 281 |
+
// Initialize the menu display when the page loads
|
| 282 |
+
document.addEventListener("DOMContentLoaded", () => {
|
| 283 |
+
fetchMenu(); // Fetch menu data from the backend
|
| 284 |
+
});
|
| 285 |
+
|
| 286 |
+
</script>
|
| 287 |
</body>
|
| 288 |
</html>
|