menu-data.js

1.29 KB
28/07/2025 15:39
JS
menu-data.js
// Menu Data Manager
let menuData = {};

// Load menu data from JSON file
async function loadMenuData() {
  try {
    const response = await fetch('data/menu.json');
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    menuData = await response.json();
    console.log('Menu data loaded successfully');
    return menuData;
  } catch (error) {
    console.error('Error loading menu data:', error);
    // Fallback to empty data structure
    menuData = {
      coffee: [],
      tea: [],
      smoothie: [],
      dessert: []
    };
    return menuData;
  }
}

// Get all menu items
function getAllMenuItems() {
  return [
    ...menuData.coffee,
    ...menuData.tea,
    ...menuData.smoothie,
    ...menuData.dessert
  ];
}

// Get menu items by category
function getMenuByCategory(category) {
  if (category === 'all') {
    return getAllMenuItems();
  }
  return menuData[category] || [];
}

// Get single menu item by id
function getMenuItemById(id) {
  const allItems = getAllMenuItems();
  return allItems.find(item => item.id === parseInt(id));
}

// Get price with size adjustment
function getPriceWithSize(basePrice, size) {
  const sizeMultipliers = {
    'S': 1,
    'M': 1.2,
    'L': 1.4
  };
  return Math.round(basePrice * (sizeMultipliers[size] || 1));
}