dschandra commited on
Commit
093138f
·
verified ·
1 Parent(s): a4c7f97

Update templates/Menu.html

Browse files
Files changed (1) hide show
  1. 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'); // Replace with your API endpoint
218
  const menuItems = await response.json();
219
- const menuContainer = document.getElementById("menu");
220
- menuContainer.innerHTML = "";
221
- menuItems.forEach(item => {
222
- const menuItem = document.createElement("div");
223
- menuItem.classList.add("menu-item");
224
- menuItem.innerHTML = `
225
- <div class="menu-details">
226
- <div class="bestseller">
227
- <img src="bestseller-icon.png" alt="Best Seller"> Bestseller
228
- </div>
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
- document.addEventListener("DOMContentLoaded", fetchMenu);
251
- </script>
 
 
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>