const MEALS_DATA = [ {"id":"m1","name":"Овсяная каша с ягодами и орехами","type":"завтрак","servings":4,"time_min":15,"calories":420,"protein":12,"fat":14,"carbs":62,"ingredients":[{"product_id":"p1","name":"Овсяные хлопья","amount":320,"unit":"г"},{"product_id":"p2","name":"Молоко 2.5%","amount":800,"unit":"мл"},{"product_id":"p3","name":"Ягоды замороженные","amount":200,"unit":"г"},{"product_id":"p4","name":"Орехи грецкие","amount":40,"unit":"г"},{"product_id":"p5","name":"Мёд","amount":40,"unit":"г"}]}, {"id":"m2","name":"Омлет с овощами и сыром","type":"завтрак","servings":4,"time_min":20,"calories":380,"protein":22,"fat":28,"carbs":8,"ingredients":[{"product_id":"p6","name":"Яйца","amount":12,"unit":"шт"},{"product_id":"p2","name":"Молоко 2.5%","amount":200,"unit":"мл"},{"product_id":"p7","name":"Сыр твёрдый","amount":120,"unit":"г"},{"product_id":"p8","name":"Помидоры","amount":300,"unit":"г"},{"product_id":"p9","name":"Перец болгарский","amount":200,"unit":"г"},{"product_id":"p10","name":"Масло сливочное","amount":30,"unit":"г"}]}, {"id":"m3","name":"Творожная запеканка с изюмом","type":"завтрак","servings":4,"time_min":45,"calories":340,"protein":18,"fat":16,"carbs":32,"ingredients":[{"product_id":"p11","name":"Творог 5%","amount":600,"unit":"г"},{"product_id":"p6","name":"Яйца","amount":4,"unit":"шт"},{"product_id":"p12","name":"Манка","amount":80,"unit":"г"},{"product_id":"p13","name":"Изюм","amount":80,"unit":"г"},{"product_id":"p14","name":"Сметана 15%","amount":100,"unit":"г"},{"product_id":"p15","name":"Сахар","amount":60,"unit":"г"}]}, {"id":"m4","name":"Борщ с говядиной","type":"обед","servings":6,"time_min":90,"calories":320,"protein":18,"fat":14,"carbs":28,"ingredients":[{"product_id":"p16","name":"Говядина","amount":500,"unit":"г"},{"product_id":"p17","name":"Свёкла","amount":400,"unit":"г"},{"product_id":"p18","name":"Капуста белокочанная","amount":400,"unit":"г"},{"product_id":"p19","name":"Картофель","amount":400,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":150,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"},{"product_id":"p22","name":"Томатная паста","amount":60,"unit":"г"},{"product_id":"p14","name":"Сметана 15%","amount":120,"unit":"г"}]}, {"id":"m5","name":"Куриный суп с лапшой","type":"обед","servings":6,"time_min":60,"calories":280,"protein":20,"fat":10,"carbs":26,"ingredients":[{"product_id":"p23","name":"Курица (филе/голени)","amount":500,"unit":"г"},{"product_id":"p19","name":"Картофель","amount":300,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":100,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":100,"unit":"г"},{"product_id":"p24","name":"Лапша яичная","amount":150,"unit":"г"}]}, {"id":"m6","name":"Плов с курицей","type":"обед","servings":6,"time_min":70,"calories":420,"protein":22,"fat":16,"carbs":48,"ingredients":[{"product_id":"p23","name":"Курица (филе/голени)","amount":600,"unit":"г"},{"product_id":"p25","name":"Рис длиннозерный","amount":400,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":300,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":200,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":60,"unit":"мл"}]}, {"id":"m7","name":"Макароны по-флотски","type":"обед","servings":4,"time_min":35,"calories":450,"protein":24,"fat":18,"carbs":52,"ingredients":[{"product_id":"p27","name":"Фарш говяжий","amount":400,"unit":"г"},{"product_id":"p28","name":"Макароны твёрдых сортов","amount":400,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":150,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":30,"unit":"мл"}]}, {"id":"m8","name":"Котлеты домашние с пюре","type":"обед","servings":4,"time_min":50,"calories":480,"protein":26,"fat":22,"carbs":42,"ingredients":[{"product_id":"p27","name":"Фарш говяжий","amount":500,"unit":"г"},{"product_id":"p19","name":"Картофель","amount":800,"unit":"г"},{"product_id":"p29","name":"Хлеб белый","amount":100,"unit":"г"},{"product_id":"p6","name":"Яйца","amount":2,"unit":"шт"},{"product_id":"p21","name":"Лук репчатый","amount":100,"unit":"г"},{"product_id":"p10","name":"Масло сливочное","amount":50,"unit":"г"}]}, {"id":"m9","name":"Гречка с куриной печенью","type":"обед","servings":4,"time_min":40,"calories":380,"protein":24,"fat":12,"carbs":44,"ingredients":[{"product_id":"p30","name":"Печень куриная","amount":500,"unit":"г"},{"product_id":"p31","name":"Гречка","amount":320,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":150,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":40,"unit":"мл"}]}, {"id":"m10","name":"Запечённая рыба с овощами","type":"ужин","servings":4,"time_min":45,"calories":320,"protein":28,"fat":14,"carbs":18,"ingredients":[{"product_id":"p32","name":"Рыба белая (минтай/треска)","amount":600,"unit":"г"},{"product_id":"p19","name":"Картофель","amount":600,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":200,"unit":"г"},{"product_id":"p33","name":"Кабачок","amount":300,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":30,"unit":"мл"}]}, {"id":"m11","name":"Куриные котлеты с салатом","type":"ужин","servings":4,"time_min":40,"calories":340,"protein":30,"fat":12,"carbs":28,"ingredients":[{"product_id":"p34","name":"Куриное филе","amount":600,"unit":"г"},{"product_id":"p29","name":"Хлеб белый","amount":80,"unit":"г"},{"product_id":"p6","name":"Яйца","amount":2,"unit":"шт"},{"product_id":"p35","name":"Огурцы свежие","amount":300,"unit":"г"},{"product_id":"p8","name":"Помидоры","amount":300,"unit":"г"},{"product_id":"p36","name":"Зелень","amount":40,"unit":"г"}]}, {"id":"m12","name":"Тушёная капуста с мясом","type":"ужин","servings":4,"time_min":50,"calories":290,"protein":20,"fat":14,"carbs":22,"ingredients":[{"product_id":"p27","name":"Фарш говяжий","amount":400,"unit":"г"},{"product_id":"p18","name":"Капуста белокочанная","amount":800,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":150,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":30,"unit":"мл"}]}, {"id":"m13","name":"Плов с говядиной","type":"ужин","servings":6,"time_min":80,"calories":440,"protein":24,"fat":18,"carbs":46,"ingredients":[{"product_id":"p16","name":"Говядина","amount":500,"unit":"г"},{"product_id":"p25","name":"Рис длиннозерный","amount":400,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":300,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":200,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":60,"unit":"мл"}]}, {"id":"m14","name":"Салат Цезарь с курицей","type":"ужин","servings":4,"time_min":25,"calories":360,"protein":26,"fat":22,"carbs":14,"ingredients":[{"product_id":"p34","name":"Куриное филе","amount":400,"unit":"г"},{"product_id":"p37","name":"Салат айсберг","amount":300,"unit":"г"},{"product_id":"p38","name":"Сухарики","amount":80,"unit":"г"},{"product_id":"p7","name":"Сыр твёрдый","amount":100,"unit":"г"},{"product_id":"p39","name":"Соус Цезарь","amount":120,"unit":"мл"}]}, {"id":"m15","name":"Винегрет с селёдкой","type":"ужин","servings":4,"time_min":30,"calories":260,"protein":12,"fat":14,"carbs":24,"ingredients":[{"product_id":"p17","name":"Свёкла","amount":300,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":200,"unit":"г"},{"product_id":"p19","name":"Картофель","amount":300,"unit":"г"},{"product_id":"p40","name":"Сельдь солёная","amount":200,"unit":"г"},{"product_id":"p41","name":"Огурцы солёные","amount":150,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":40,"unit":"мл"}]}, {"id":"m16","name":"Яичница с колбасой и овощами","type":"завтрак","servings":4,"time_min":15,"calories":400,"protein":20,"fat":30,"carbs":12,"ingredients":[{"product_id":"p6","name":"Яйца","amount":12,"unit":"шт"},{"product_id":"p42","name":"Колбаса варёная","amount":200,"unit":"г"},{"product_id":"p8","name":"Помидоры","amount":200,"unit":"г"},{"product_id":"p9","name":"Перец болгарский","amount":150,"unit":"г"},{"product_id":"p10","name":"Масло сливочное","amount":30,"unit":"г"}]}, {"id":"m17","name":"Сырники со сметаной","type":"завтрак","servings":4,"time_min":30,"calories":380,"protein":16,"fat":18,"carbs":38,"ingredients":[{"product_id":"p11","name":"Творог 5%","amount":500,"unit":"г"},{"product_id":"p6","name":"Яйца","amount":3,"unit":"шт"},{"product_id":"p43","name":"Мука пшеничная","amount":100,"unit":"г"},{"product_id":"p15","name":"Сахар","amount":40,"unit":"г"},{"product_id":"p14","name":"Сметана 15%","amount":120,"unit":"г"}]}, {"id":"m18","name":"Рассольник с курицей","type":"обед","servings":6,"time_min":70,"calories":260,"protein":16,"fat":10,"carbs":26,"ingredients":[{"product_id":"p23","name":"Курица (филе/голени)","amount":400,"unit":"г"},{"product_id":"p19","name":"Картофель","amount":400,"unit":"г"},{"product_id":"p41","name":"Огурцы солёные","amount":200,"unit":"г"},{"product_id":"p25","name":"Рис длиннозерный","amount":100,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":150,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"}]}, {"id":"m19","name":"Гуляш из говядины с гречкой","type":"обед","servings":4,"time_min":80,"calories":460,"protein":28,"fat":18,"carbs":46,"ingredients":[{"product_id":"p16","name":"Говядина","amount":500,"unit":"г"},{"product_id":"p31","name":"Гречка","amount":320,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"},{"product_id":"p20","name":"Морковь","amount":150,"unit":"г"},{"product_id":"p22","name":"Томатная паста","amount":60,"unit":"г"}]}, {"id":"m20","name":"Овощное рагу с курицей","type":"ужин","servings":4,"time_min":50,"calories":310,"protein":24,"fat":12,"carbs":26,"ingredients":[{"product_id":"p34","name":"Куриное филе","amount":500,"unit":"г"},{"product_id":"p33","name":"Кабачок","amount":300,"unit":"г"},{"product_id":"p9","name":"Перец болгарский","amount":200,"unit":"г"},{"product_id":"p8","name":"Помидоры","amount":300,"unit":"г"},{"product_id":"p21","name":"Лук репчатый","amount":150,"unit":"г"},{"product_id":"p26","name":"Масло растительное","amount":30,"unit":"мл"}]} ]; const PRODUCTS_DATA = [ {"id":"p1","name":"Овсяные хлопья","category":"Крупы","price_per_kg":450}, {"id":"p2","name":"Молоко 2.5%","category":"Молочные","price_per_kg":450}, {"id":"p3","name":"Ягоды замороженные","category":"Заморозка","price_per_kg":2500}, {"id":"p4","name":"Орехи грецкие","category":"Бакалея","price_per_kg":4500}, {"id":"p5","name":"Мёд","category":"Бакалея","price_per_kg":3500}, {"id":"p6","name":"Яйца","category":"Молочные","price_per_kg":650}, {"id":"p7","name":"Сыр твёрдый","category":"Молочные","price_per_kg":4200}, {"id":"p8","name":"Помидоры","category":"Овощи","price_per_kg":1200}, {"id":"p9","name":"Перец болгарский","category":"Овощи","price_per_kg":1400}, {"id":"p10","name":"Масло сливочное","category":"Молочные","price_per_kg":3800}, {"id":"p11","name":"Творог 5%","category":"Молочные","price_per_kg":3600}, {"id":"p12","name":"Манка","category":"Крупы","price_per_kg":400}, {"id":"p13","name":"Изюм","category":"Бакалея","price_per_kg":2200}, {"id":"p14","name":"Сметана 15%","category":"Молочные","price_per_kg":1800}, {"id":"p15","name":"Сахар","category":"Бакалея","price_per_kg":550}, {"id":"p16","name":"Говядина","category":"Мясо","price_per_kg":3200}, {"id":"p17","name":"Свёкла","category":"Овощи","price_per_kg":250}, {"id":"p18","name":"Капуста белокочанная","category":"Овощи","price_per_kg":200}, {"id":"p19","name":"Картофель","category":"Овощи","price_per_kg":300}, {"id":"p20","name":"Морковь","category":"Овощи","price_per_kg":250}, {"id":"p21","name":"Лук репчатый","category":"Овощи","price_per_kg":200}, {"id":"p22","name":"Томатная паста","category":"Консервы","price_per_kg":1200}, {"id":"p23","name":"Курица (филе/голени)","category":"Мясо","price_per_kg":2200}, {"id":"p24","name":"Лапша яичная","category":"Макароны","price_per_kg":800}, {"id":"p25","name":"Рис длиннозерный","category":"Крупы","price_per_kg":700}, {"id":"p26","name":"Масло растительное","category":"Бакалея","price_per_kg":900}, {"id":"p27","name":"Фарш говяжий","category":"Мясо","price_per_kg":2800}, {"id":"p28","name":"Макароны твёрдых сортов","category":"Макароны","price_per_kg":900}, {"id":"p29","name":"Хлеб белый","category":"Хлеб","price_per_kg":400}, {"id":"p30","name":"Печень куриная","category":"Мясо","price_per_kg":1600}, {"id":"p31","name":"Гречка","category":"Крупы","price_per_kg":650}, {"id":"p32","name":"Рыба белая (минтай/треска)","category":"Рыба","price_per_kg":2400}, {"id":"p33","name":"Кабачок","category":"Овощи","price_per_kg":600}, {"id":"p34","name":"Куриное филе","category":"Мясо","price_per_kg":2600}, {"id":"p35","name":"Огурцы свежие","category":"Овощи","price_per_kg":800}, {"id":"p36","name":"Зелень","category":"Овощи","price_per_kg":1000}, {"id":"p37","name":"Салат айсберг","category":"Овощи","price_per_kg":900}, {"id":"p38","name":"Сухарики","category":"Бакалея","price_per_kg":800}, {"id":"p39","name":"Соус Цезарь","category":"Соусы","price_per_kg":1800}, {"id":"p40","name":"Сельдь солёная","category":"Рыба","price_per_kg":1800}, {"id":"p41","name":"Огурцы солёные","category":"Консервы","price_per_kg":600}, {"id":"p42","name":"Колбаса варёная","category":"Мясо","price_per_kg":2400}, {"id":"p43","name":"Мука пшеничная","category":"Бакалея","price_per_kg":400} ]; let currentPlan = []; document.addEventListener("DOMContentLoaded", () => { setupTabs(); renderMeals(MEALS_DATA); renderRecipes(MEALS_DATA); setupFilters(); setupButtons(); console.log("✅ Данные загружены:", MEALS_DATA.length, "блюд,", PRODUCTS_DATA.length, "продуктов"); }); function setupTabs() { document.querySelectorAll(".tab").forEach(tab => { tab.addEventListener("click", () => { document.querySelectorAll(".tab").forEach(t => t.classList.remove("active")); document.querySelectorAll(".tab-content").forEach(c => c.classList.remove("active")); tab.classList.add("active"); document.getElementById(tab.dataset.tab).classList.add("active"); }); }); } function setupFilters() { document.querySelectorAll(".filter-btn").forEach(btn => { btn.addEventListener("click", () => { document.querySelectorAll(".filter-btn").forEach(b => b.classList.remove("active")); btn.classList.add("active"); const type = btn.dataset.type; if (type === "all") { renderMeals(MEALS_DATA); } else { renderMeals(MEALS_DATA.filter(m => m.type === type)); } }); }); } function setupButtons() { document.getElementById("btn-generate").addEventListener("click", generatePlan); document.getElementById("btn-export").addEventListener("click", exportToExcel); } function renderMeals(meals) { const container = document.getElementById("meals-list"); if (meals.length === 0) { container.innerHTML = '
Нет блюд
| Калории | ${meal.calories} ккал |
|---|---|
| Белки | ${meal.protein} г |
| Жиры | ${meal.fat} г |
| Углеводы | ${meal.carbs} г |
⏱ Время приготовления: ${meal.time_min} мин