Spaces:
Running
Running
File size: 24,095 Bytes
fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 b0109f5 fa67076 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 |
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dieta Canina Judy Morgan</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
.fade-in {
animation: fadeIn 0.5s ease-in-out;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.nutrient-bar {
transition: width 0.5s ease-in-out;
}
</style>
</head>
<body class="bg-gray-50 min-h-screen">
<div class="container mx-auto px-4 py-8 max-w-4xl">
<header class="text-center mb-8">
<h1 class="text-3xl md:text-4xl font-bold text-indigo-800 mb-2">
<i class="fas fa-paw mr-2"></i>Dieta Canina Judy Morgan
</h1>
<p class="text-gray-600">Crea un menú semanal equilibrado para tu perro</p>
</header>
<div class="bg-white rounded-lg shadow-md p-6 mb-8">
<h2 class="text-xl font-semibold text-indigo-700 mb-4">Datos de tu perro</h2>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<!-- Tamaño del perro -->
<div>
<label class="block text-gray-700 mb-2">Tamaño</label>
<select id="size" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-200 focus:border-indigo-500">
<option value="" disabled selected>Selecciona el tamaño</option>
<option value="small">Pequeño (1-10 kg)</option>
<option value="medium">Mediano (11-25 kg)</option>
<option value="large">Grande (26+ kg)</option>
</select>
</div>
<!-- Edad del perro -->
<div>
<label class="block text-gray-700 mb-2">Etapa de vida</label>
<select id="age" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-200 focus:border-indigo-500">
<option value="" disabled selected>Selecciona la edad</option>
<option value="puppy">Cachorro (0-1 año)</option>
<option value="teen">Adolescente (1-2 años)</option>
<option value="adult">Adulto (2-7 años)</option>
<option value="senior">Anciano (7+ años)</option>
</select>
</div>
<!-- Nivel de energía -->
<div>
<label class="block text-gray-700 mb-2">Nivel de energía</label>
<select id="energy" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-200 focus:border-indigo-500">
<option value="" disabled selected>Selecciona el nivel</option>
<option value="high">Alta</option>
<option value="medium">Media</option>
<option value="low">Baja</option>
</select>
</div>
<!-- Actividad diaria -->
<div>
<label class="block text-gray-700 mb-2">Actividad diaria</label>
<select id="activity" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-200 focus:border-indigo-500">
<option value="" disabled selected>Selecciona el nivel</option>
<option value="high">Alta (2+ horas ejercicio)</option>
<option value="medium">Media (1-2 horas ejercicio)</option>
<option value="low">Baja (menos de 1 hora)</option>
</select>
</div>
<!-- Sexo del perro -->
<div>
<label class="block text-gray-700 mb-2">Sexo</label>
<select id="gender" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-200 focus:border-indigo-500">
<option value="" disabled selected>Selecciona el sexo</option>
<option value="male">Macho</option>
<option value="female">Hembra</option>
</select>
</div>
<!-- Condiciones especiales -->
<div>
<label class="block text-gray-700 mb-2">Condiciones especiales</label>
<select id="conditions" class="w-full p-3 border border-gray-300 rounded-lg focus:ring-2 focus:ring-indigo-200 focus:border-indigo-500">
<option value="none" selected>Ninguna</option>
<option value="allergies">Alergias alimentarias</option>
<option value="overweight">Sobrepeso</option>
<option value="kidney">Problemas renales</option>
<option value="joint">Problemas articulares</option>
</select>
</div>
</div>
<div class="mt-6 text-center">
<button id="calculateBtn" class="bg-indigo-600 hover:bg-indigo-700 text-white font-medium py-3 px-6 rounded-lg transition duration-300 transform hover:scale-105">
<i class="fas fa-calculator mr-2"></i>Calcular Menú
</button>
</div>
</div>
<!-- Resultados - Oculto inicialmente -->
<div id="results" class="hidden bg-white rounded-lg shadow-md p-6 mb-8 fade-in">
<h2 class="text-xl font-semibold text-indigo-700 mb-4">Recomendaciones nutricionales</h2>
<div class="mb-6">
<h3 class="text-lg font-medium text-gray-800 mb-3">Balance nutricional ideal</h3>
<div class="space-y-4">
<div>
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Proteínas</span>
<span id="protein-percent" class="text-sm font-medium text-gray-700">--%</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div id="protein-bar" class="nutrient-bar h-2.5 rounded-full bg-blue-600" style="width: 0%"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Grasas</span>
<span id="fat-percent" class="text-sm font-medium text-gray-700">--%</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div id="fat-bar" class="nutrient-bar h-2.5 rounded-full bg-yellow-500" style="width: 0%"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Carbohidratos</span>
<span id="carbs-percent" class="text-sm font-medium text-gray-700">--%</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div id="carbs-bar" class="nutrient-bar h-2.5 rounded-full bg-green-500" style="width: 0%"></div>
</div>
</div>
<div>
<div class="flex justify-between mb-1">
<span class="text-sm font-medium text-gray-700">Fibra</span>
<span id="fiber-percent" class="text-sm font-medium text-gray-700">--%</span>
</div>
<div class="w-full bg-gray-200 rounded-full h-2.5">
<div id="fiber-bar" class="nutrient-bar h-2.5 rounded-full bg-purple-500" style="width: 0%"></div>
</div>
</div>
</div>
</div>
<div class="mb-6">
<h3 class="text-lg font-medium text-gray-800 mb-3">Cantidad diaria recomendada</h3>
<div class="bg-indigo-50 p-4 rounded-lg">
<div class="flex items-center">
<i class="fas fa-bowl-food text-2xl text-indigo-600 mr-3"></i>
<div>
<p class="font-medium text-gray-800">Tu perro debería consumir aproximadamente:</p>
<p id="daily-amount" class="text-xl font-bold text-indigo-700">-- gramos por día</p>
</div>
</div>
</div>
</div>
<div>
<h3 class="text-lg font-medium text-gray-800 mb-3">Menú semanal</h3>
<div class="overflow-x-auto">
<table class="min-w-full bg-white border border-gray-200 rounded-lg">
<thead class="bg-gray-100">
<tr>
<th class="py-2 px-4 border-b">Día</th>
<th class="py-2 px-4 border-b">Desayuno</th>
<th class="py-2 px-4 border-b">Cena</th>
</tr>
</thead>
<tbody id="weekly-menu" class="divide-y divide-gray-200">
<!-- Aquí se generará el menú dinámicamente -->
</tbody>
</table>
</div>
<div class="mt-4 bg-yellow-50 p-4 rounded-lg border border-yellow-200">
<div class="flex">
<i class="fas fa-lightbulb text-yellow-500 text-xl mr-3 mt-1"></i>
<div>
<h4 class="font-medium text-yellow-800 mb-1">Consejos de Judy Morgan</h4>
<p id="tips" class="text-yellow-700">Selecciona las características de tu perro para obtener consejos personalizados.</p>
</div>
</div>
</div>
</div>
</div>
<footer class="text-center text-gray-500 text-sm mt-12">
<p>Esta aplicación sigue los principios de la dieta natural para perros de la Dra. Judy Morgan.</p>
<p class="mt-1">Consulta siempre con tu veterinario antes de cambiar la dieta de tu mascota.</p>
</footer>
</div>
<script>
document.addEventListener('DOMContentLoaded', function() {
const calculateBtn = document.getElementById('calculateBtn');
const resultsSection = document.getElementById('results');
calculateBtn.addEventListener('click', function() {
// Validar que todos los campos estén completos
const size = document.getElementById('size').value;
const age = document.getElementById('age').value;
const energy = document.getElementById('energy').value;
const activity = document.getElementById('activity').value;
const gender = document.getElementById('gender').value;
const conditions = document.getElementById('conditions').value;
if (!size || !age || !energy || !activity || !gender) {
alert('Por favor completa todos los campos obligatorios.');
return;
}
// Calcular recomendaciones basadas en las selecciones
calculateRecommendations(size, age, energy, activity, gender, conditions);
// Mostrar resultados con animación
resultsSection.classList.remove('hidden');
resultsSection.classList.add('fade-in');
// Desplazarse suavemente a los resultados
resultsSection.scrollIntoView({ behavior: 'smooth' });
});
function calculateRecommendations(size, age, energy, activity, gender, conditions) {
// Base de datos de recetas
const recipes = {
breakfast: [
{ name: "Pollo con calabaza y espinacas", protein: 40, fat: 20, carbs: 30, fiber: 10 },
{ name: "Pavo con zanahoria y arroz integral", protein: 35, fat: 15, carbs: 40, fiber: 10 },
{ name: "Salmón con boniato y judías verdes", protein: 30, fat: 25, carbs: 35, fiber: 10 },
{ name: "Ternera con quinoa y brócoli", protein: 45, fat: 15, carbs: 30, fiber: 10 },
{ name: "Hígado con patata dulce y guisantes", protein: 35, fat: 20, carbs: 35, fiber: 10 },
{ name: "Pescado blanco con calabacín y mijo", protein: 40, fat: 10, carbs: 40, fiber: 10 },
{ name: "Cordero con col rizada y cebada", protein: 30, fat: 25, carbs: 35, fiber: 10 }
],
dinner: [
{ name: "Pavo con arroz y espárragos", protein: 35, fat: 15, carbs: 40, fiber: 10 },
{ name: "Pollo con patata y zanahoria", protein: 40, fat: 20, carbs: 30, fiber: 10 },
{ name: "Sardinas con quinoa y espinacas", protein: 30, fat: 25, carbs: 35, fiber: 10 },
{ name: "Conejo con calabaza y judías", protein: 45, fat: 15, carbs: 30, fiber: 10 },
{ name: "Pescado azul con boniato y brócoli", protein: 35, fat: 20, carbs: 35, fiber: 10 },
{ name: "Ternera con arroz integral y calabacín", protein: 40, fat: 10, carbs: 40, fiber: 10 },
{ name: "Pollo con lentejas y coliflor", protein: 30, fat: 25, carbs: 35, fiber: 10 }
]
};
// Determinar porcentajes nutricionales basados en las necesidades
let proteinPercent, fatPercent, carbsPercent, fiberPercent;
// Cachorros necesitan más proteína y grasa
if (age === 'puppy') {
proteinPercent = 40;
fatPercent = 25;
carbsPercent = 25;
fiberPercent = 10;
}
// Perros senior necesitan menos grasa y más fibra
else if (age === 'senior') {
proteinPercent = 30;
fatPercent = 15;
carbsPercent = 35;
fiberPercent = 20;
}
// Perros con alta energía y actividad necesitan más carbohidratos
else if (energy === 'high' && activity === 'high') {
proteinPercent = 35;
fatPercent = 20;
carbsPercent = 35;
fiberPercent = 10;
}
// Perros con sobrepeso necesitan menos grasa y carbohidratos
else if (conditions === 'overweight') {
proteinPercent = 40;
fatPercent = 15;
carbsPercent = 25;
fiberPercent = 20;
}
// Perros con problemas renales necesitan menos proteína
else if (conditions === 'kidney') {
proteinPercent = 25;
fatPercent = 25;
carbsPercent = 40;
fiberPercent = 10;
}
// Perros con problemas articulares necesitan más ácidos grasos
else if (conditions === 'joint') {
proteinPercent = 30;
fatPercent = 30;
carbsPercent = 30;
fiberPercent = 10;
}
// Perros normales
else {
proteinPercent = 35;
fatPercent = 20;
carbsPercent = 35;
fiberPercent = 10;
}
// Calcular cantidad diaria basada en tamaño y actividad
let dailyAmount;
if (size === 'small') {
dailyAmount = energy === 'high' ? 150 : (energy === 'medium' ? 120 : 100);
} else if (size === 'medium') {
dailyAmount = energy === 'high' ? 350 : (energy === 'medium' ? 300 : 250);
} else { // large
dailyAmount = energy === 'high' ? 600 : (energy === 'medium' ? 500 : 400);
}
// Ajustar por edad
if (age === 'puppy') dailyAmount *= 1.2;
if (age === 'senior') dailyAmount *= 0.9;
// Ajustar por condiciones
if (conditions === 'overweight') dailyAmount *= 0.8;
// Actualizar la UI con los resultados
updateNutritionBars(proteinPercent, fatPercent, carbsPercent, fiberPercent);
document.getElementById('protein-percent').textContent = proteinPercent + '%';
document.getElementById('fat-percent').textContent = fatPercent + '%';
document.getElementById('carbs-percent').textContent = carbsPercent + '%';
document.getElementById('fiber-percent').textContent = fiberPercent + '%';
document.getElementById('daily-amount').textContent = Math.round(dailyAmount) + ' gramos por día';
// Generar menú semanal
generateWeeklyMenu(recipes);
// Mostrar consejos personalizados
showPersonalizedTips(size, age, energy, activity, gender, conditions);
}
function updateNutritionBars(protein, fat, carbs, fiber) {
setTimeout(() => {
document.getElementById('protein-bar').style.width = protein + '%';
document.getElementById('fat-bar').style.width = fat + '%';
document.getElementById('carbs-bar').style.width = carbs + '%';
document.getElementById('fiber-bar').style.width = fiber + '%';
}, 100);
}
function generateWeeklyMenu(recipes) {
const weeklyMenu = document.getElementById('weekly-menu');
weeklyMenu.innerHTML = '';
const days = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo'];
for (let i = 0; i < 7; i++) {
const row = document.createElement('tr');
const dayCell = document.createElement('td');
dayCell.className = 'py-2 px-4 border-b text-center font-medium';
dayCell.textContent = days[i];
const breakfastCell = document.createElement('td');
breakfastCell.className = 'py-2 px-4 border-b';
breakfastCell.textContent = recipes.breakfast[i].name;
const dinnerCell = document.createElement('td');
dinnerCell.className = 'py-2 px-4 border-b';
dinnerCell.textContent = recipes.dinner[i].name;
row.appendChild(dayCell);
row.appendChild(breakfastCell);
row.appendChild(dinnerCell);
weeklyMenu.appendChild(row);
}
}
function showPersonalizedTips(size, age, energy, activity, gender, conditions) {
const tipsElement = document.getElementById('tips');
let tips = [];
// Tips basados en tamaño
if (size === 'small') {
tips.push("Los perros pequeños tienen metabolismos más rápidos, por lo que necesitan comidas más frecuentes pero en porciones pequeñas.");
} else if (size === 'large') {
tips.push("Los perros grandes son propensos a problemas articulares, considera añadir suplementos de glucosamina y condroitina.");
}
// Tips basados en edad
if (age === 'puppy') {
tips.push("Los cachorros necesitan más proteínas y grasas para su crecimiento. Alimenta 3-4 veces al día.");
} else if (age === 'senior') {
tips.push("Los perros senior se benefician de comidas más fáciles de digerir y con más fibra para la salud intestinal.");
}
// Tips basados en energía y actividad
if (energy === 'high' && activity === 'high') {
tips.push("Para perros muy activos, considera añadir carbohidratos complejos como fuente de energía sostenida.");
} else if (energy === 'low' && activity === 'low') {
tips.push("Los perros con baja actividad necesitan menos calorías para evitar el aumento de peso.");
}
// Tips basados en condiciones especiales
if (conditions === 'allergies') {
tips.push("Para perros con alergias, usa proteínas novedosas como conejo o venado y evita ingredientes comunes como pollo o trigo.");
} else if (conditions === 'overweight') {
tips.push("Para perros con sobrepeso, aumenta la fibra para promover la saciedad y reduce las grasas y carbohidratos.");
} else if (conditions === 'kidney') {
tips.push("Para problemas renales, reduce el fósforo y la proteína, pero mantén la proteína de alta calidad.");
} else if (conditions === 'joint') {
tips.push("Para problemas articulares, aumenta los ácidos grasos omega-3 que tienen propiedades antiinflamatorias.");
}
// Consejo general de Judy Morgan
tips.push("Recuerda variar las proteínas cada 3-4 meses para proporcionar una nutrición equilibrada y prevenir alergias.");
tipsElement.textContent = tips.join(' ');
}
});
</script>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=xSerpicoxx/prd" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
</html> |