DSatishchandra commited on
Commit
04d1e6f
·
verified ·
1 Parent(s): 94eaf2d

Update templates/menu.html

Browse files
Files changed (1) hide show
  1. 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 Category:</label>
421
- <div class="form-check form-check-inline">
422
- <!-- Default category for Veg with remove radio button -->
423
- <input type="radio" id="category-Veg" name="category" value="Veg" class="custom-radio"
424
- {% if selected_category == "Veg" %}checked{% endif %} onchange="this.form.submit()">
425
- <label class="form-check-label" for="category-Veg">Veg</label>
426
-
427
- <!-- Remove Selection radio button for Veg category -->
428
- <input type="radio" id="category-Remove" name="category" value="Remove" class="custom-radio"
429
- {% if selected_category == "Remove" %}checked{% endif %} onchange="this.form.submit()">
430
- <label class="form-check-label" for="category-Remove">Remove Selection</label>
 
 
 
 
 
431
  </div>
432
-
433
- <!-- Toggle switch for Veg/Non-Veg -->
434
- <div class="form-check form-check-inline">
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
- // Toggle Veg/Non-Veg selection
789
- function toggleVegCategory() {
790
- const toggle = document.getElementById('vegToggle');
791
- if (toggle.checked) {
792
- // If checked, set category to Veg
793
- window.location.href = '/menu?category=Veg'; // Change URL to reflect the new selection
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
794
  } else {
795
- // If unchecked, set category to Non-Veg or remove the selection
796
- window.location.href = '/menu?category=Non-Veg'; // Or another fallback category
 
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 -->