Добавлен раздел питания: рекомендации, трекер воды, калькулятор калорий

This commit is contained in:
Madina 2026-08-10 09:17:01 +00:00
parent 64c1d23f2d
commit 14fb2b7e81

View File

@ -410,6 +410,7 @@
<button onclick="showSection('catalog')">🎬 Каталог упражнений</button> <button onclick="showSection('catalog')">🎬 Каталог упражнений</button>
<button onclick="showSection('calendar')">📆 Календарь</button> <button onclick="showSection('calendar')">📆 Календарь</button>
<button onclick="showSection('tracker')">📊 Трекер прогресса</button> <button onclick="showSection('tracker')">📊 Трекер прогресса</button>
<button onclick="showSection('nutrition')">🥗 Питание</button>
</nav> </nav>
<!-- СЕКЦИЯ: СЕГОДНЯ --> <!-- СЕКЦИЯ: СЕГОДНЯ -->
@ -491,6 +492,107 @@
<div class="progress-stats" id="progress-stats"></div> <div class="progress-stats" id="progress-stats"></div>
<div id="progress-history" style="margin-top: 30px;"></div> <div id="progress-history" style="margin-top: 30px;"></div>
</div> </div>
<!-- СЕКЦИЯ: ПИТАНИЕ -->
<div id="nutrition" class="section">
<h2>🥗 Питание для похудения</h2>
<div class="goal-info" style="background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%);">
<h3 style="margin-top: 0; color: #333;">Твоя цель</h3>
<p><strong>Стартовый вес:</strong> 65 кг</p>
<p><strong>Цель за 2 месяца:</strong> 58-59 кг (-6-7 кг)</p>
<p><strong>Калорий в день:</strong> 1400-1500 ккал</p>
<p><strong>Воды в день:</strong> 2-2.5 литра</p>
</div>
<h3>📋 Рекомендации по питанию</h3>
<div class="exercise-grid" style="grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));">
<div class="exercise-card">
<div class="info">
<h4>🍳 Завтрак (7:00-9:00)</h4>
<p>Омлет из 2 яиц с овощами + кусочек цельнозернового хлеба</p>
<p>Или: овсянка на воде с ягодами + 1 яйцо</p>
<div class="meta"><span>~350 ккал</span></div>
</div>
</div>
<div class="exercise-card">
<div class="info">
<h4>🥗 Перекус (11:00)</h4>
<p>Яблоко/груша + 10 орешков (миндаль/грецкий)</p>
<p>Или: натуральный йогурт без сахара</p>
<div class="meta"><span>~150 ккал</span></div>
</div>
</div>
<div class="exercise-card">
<div class="info">
<h4>🍲 Обед (13:00-14:00)</h4>
<p>Куриная грудка/рыба (150г) + гречка/рис (100г) + салат</p>
<p>Или: суп на овощном бульоне + кусочек мяса</p>
<div class="meta"><span>~450 ккал</span></div>
</div>
</div>
<div class="exercise-card">
<div class="info">
<h4>🥛 Перекус (16:00)</h4>
<p>Творог (100г) + ложка мёда</p>
<p>Или: кефир + 1 хлебец</p>
<div class="meta"><span>~150 ккал</span></div>
</div>
</div>
<div class="exercise-card">
<div class="info">
<h4>🐟 Ужин (18:00-19:00)</h4>
<p>Рыба/курица (120г) + тушёные овощи</p>
<p>Или: салат с тунцом и яйцом</p>
<div class="meta"><span>~300 ккал</span></div>
</div>
</div>
<div class="exercise-card">
<div class="info">
<h4>⚠️ Что исключить</h4>
<p>❌ Сахар и сладости</p>
<p>❌ Белый хлеб и выпечку</p>
<p>❌ Газировку и пакетированные соки</p>
<p>❌ Фастфуд и майонез</p>
<div class="meta"><span>Экономия ~500 ккал/день</span></div>
</div>
</div>
</div>
<h3 style="margin-top: 30px;">💧 Трекер воды</h3>
<div style="background: linear-gradient(135deg, #a8edea 0%, #fed6e3 100%); border-radius: 15px; padding: 25px; margin-top: 20px;">
<p style="margin-bottom: 15px;">Выпито сегодня: <strong id="water-count">0</strong> из 8 стаканов</p>
<div style="display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 15px;" id="water-glasses"></div>
<button class="btn" onclick="addWater()">💧 Выпить стакан</button>
<button class="btn" onclick="resetWater()" style="background: #999; margin-left: 10px;">Сбросить</button>
</div>
<h3 style="margin-top: 30px;">📊 Калькулятор калорий</h3>
<div style="background: #f8f9fc; border-radius: 15px; padding: 25px; margin-top: 20px;">
<p>Рассчитай калорийность продуктов, которые ешь:</p>
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 15px;">
<input type="text" id="product-name" placeholder="Продукт (например: яблоко)" style="padding: 12px; border: 2px solid #e0e0e5; border-radius: 10px;">
<input type="number" id="product-grams" placeholder="Вес (грамм)" style="padding: 12px; border: 2px solid #e0e0e5; border-radius: 10px;">
</div>
<button class="btn" onclick="calculateCalories()" style="margin-top: 15px;">Рассчитать</button>
<div id="calories-result" style="margin-top: 15px; font-size: 18px; font-weight: bold; color: #667eea;"></div>
</div>
<div class="progress-stats" style="margin-top: 30px;">
<div class="stat-card" style="background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);">
<div class="value" id="total-water">0</div>
<div class="label">Стаканов всего</div>
</div>
<div class="stat-card" style="background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);">
<div class="value" id="days-tracked">0</div>
<div class="label">Дней отслеживания</div>
</div>
<div class="stat-card" style="background: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);">
<div class="value" id="avg-weight">65</div>
<div class="label">Средний вес</div>
</div>
</div>
</div>
</div> </div>
<!-- Модальное окно для видео --> <!-- Модальное окно для видео -->
@ -728,7 +830,7 @@
// === СОСТОЯНИЕ === // === СОСТОЯНИЕ ===
let currentWeek = 0; let currentWeek = 0;
let progressData = JSON.parse(localStorage.getItem('madinaProgress') || '{"entries":[],"completedDays":[]}'); let progressData = JSON.parse(localStorage.getItem('madinaProgress') || '{"entries":[],"completedDays":[],"water":[],"waterToday":0}');
// === ИНИЦИАЛИЗАЦИЯ === // === ИНИЦИАЛИЗАЦИЯ ===
function init() { function init() {
@ -914,6 +1016,96 @@
(e.arms ? 'руки ' + e.arms + ' см' : '') + (e.arms ? 'руки ' + e.arms + ' см' : '') +
'</div>' '</div>'
).join('') : '<p>Пока нет записей. Заполни данные выше!</p>'; ).join('') : '<p>Пока нет записей. Заполни данные выше!</p>';
renderNutrition();
}
// === ПИТАНИЕ ===
const productsCalories = {
'яблоко': 52, 'груша': 57, 'банан': 89, 'апельсин': 47, 'виноград': 67,
'курица': 165, 'куриная грудка': 110, 'рыба': 206, 'тунец': 132, 'лосось': 208,
'яйцо': 155, 'овсянка': 389, 'гречка': 343, 'рис': 130, 'картофель': 77,
'творог': 98, 'йогурт': 59, 'кефир': 41, 'молоко': 42, 'сыр': 402,
'хлеб': 265, 'хлебец': 310, 'орехи': 607, 'миндаль': 579, 'мёд': 304,
'помидор': 18, 'огурец': 16, 'капуста': 25, 'морковь': 41, 'брокколи': 34
};
function renderNutrition() {
// Вода
const todayStr = new Date().toDateString();
const waterToday = progressData.waterToday || 0;
const totalWater = progressData.water ? progressData.water.length : 0;
document.getElementById('water-count').textContent = waterToday;
document.getElementById('total-water').textContent = totalWater;
const glassesContainer = document.getElementById('water-glasses');
glassesContainer.innerHTML = '';
for (let i = 0; i < 8; i++) {
const glass = document.createElement('span');
glass.textContent = i < waterToday ? '💧' : '🥛';
glass.style.fontSize = '24px';
glassesContainer.appendChild(glass);
}
// Дни отслеживания
const uniqueDates = [...new Set(progressData.entries.map(e => new Date(e.date).toDateString()))];
document.getElementById('days-tracked').textContent = uniqueDates.length;
// Средний вес
if (progressData.entries.length > 0) {
const avg = progressData.entries.reduce((sum, e) => sum + (parseFloat(e.weight) || 0), 0) / progressData.entries.length;
document.getElementById('avg-weight').textContent = avg.toFixed(1);
}
}
function addWater() {
if (progressData.waterToday >= 8) {
alert('💧 8 стаканов уже выпито! Отличный результат!');
return;
}
progressData.waterToday++;
if (!progressData.water) progressData.water = [];
progressData.water.push(new Date().toISOString());
localStorage.setItem('madinaProgress', JSON.stringify(progressData));
renderNutrition();
}
function resetWater() {
progressData.waterToday = 0;
localStorage.setItem('madinaProgress', JSON.stringify(progressData));
renderNutrition();
}
function calculateCalories() {
const name = document.getElementById('product-name').value.toLowerCase().trim();
const grams = parseInt(document.getElementById('product-grams').value);
if (!name || !grams) {
document.getElementById('calories-result').textContent = '⚠️ Введи продукт и вес';
return;
}
// Поиск продукта в базе
let caloriesPer100 = 0;
let found = false;
for (const key in productsCalories) {
if (name.includes(key)) {
caloriesPer100 = productsCalories[key];
found = true;
break;
}
}
if (!found) {
document.getElementById('calories-result').textContent = '❓ Продукт не найден в базе. Пример: яблоко 100г = ~52 ккал';
return;
}
const result = Math.round((caloriesPer100 * grams) / 100);
document.getElementById('calories-result').textContent =
'🍎 ' + name + ' (' + grams + 'г) = ' + result + ' ккал';
} }
// === МОДАЛЬНОЕ ОКНО === // === МОДАЛЬНОЕ ОКНО ===
@ -940,6 +1132,18 @@
setTimeout(() => initPlayer(), 1000); setTimeout(() => initPlayer(), 1000);
init(); init();
// Сброс воды каждый день
setInterval(() => {
const lastWaterDate = localStorage.getItem('lastWaterDate');
const todayStr = new Date().toDateString();
if (lastWaterDate !== todayStr) {
progressData.waterToday = 0;
localStorage.setItem('lastWaterDate', todayStr);
localStorage.setItem('madinaProgress', JSON.stringify(progressData));
renderNutrition();
}
}, 60000); // Проверка каждую минуту
</script> </script>
<!-- Скрытый iframe для музыкального плеера --> <!-- Скрытый iframe для музыкального плеера -->