Skip to content

Commit 254c2fd

Browse files
committed
cálculo anual, y mensaje de referencia
1 parent e5355fe commit 254c2fd

File tree

2 files changed

+137
-51
lines changed

2 files changed

+137
-51
lines changed

src/pages/feature/calculadora-huella-hidrica.astro

Lines changed: 84 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ import "./styles.css";
115115
>Menos de 10 minutos</button
116116
>
117117
<button class="option-btn" data-value="10a20">10 a 20 minutos</button>
118-
<button class="option-btn" data-value="30a60">3 min a 1 hora</button>
118+
<button class="option-btn" data-value="30a60">30 min a 1 hora</button>
119119
</div>
120120
<button id="nextToStep4" class="next-btn">Siguiente pregunta</button>
121121
<!--<div class="nav-arrows">
@@ -600,10 +600,9 @@ import "./styles.css";
600600
<p>Tu huella hídrica es:</p>
601601
<h2 id="resultado">3.467.500<span>Litros/año</span></h2>
602602
<p>
603-
Una persona consume una media de <strong
604-
>136 litros por día</strong
605-
>
603+
Una persona consume una media de 3.468.000 litros por año en Bolivia
606604
</p>
605+
607606
</div>
608607
<!-- Comparaciones -->
609608
<div class="comparisons">
@@ -630,6 +629,7 @@ import "./styles.css";
630629
</div>
631630
</div>
632631
</div>
632+
<div id="congrats-message" class="congrats-message"></div>
633633
<button id="nextToStep26" class="next-btn">¿Cómo ahorrar?</button>
634634
<!-- Botón Volver a calcular -->
635635
<button class="back-button">Volver a calcular</button>
@@ -903,58 +903,65 @@ const tips = {
903903
const cellEl = document.getElementById("cellphoneCountValue");
904904
values.cellphoneCount = cellEl ? parseInt(cellEl.textContent, 10) || 0 : 0;
905905

906+
906907
// --- CÁLCULO ---
907908
let higiene = 0, limpieza = 0, alimentos = 0, bienes_servicios = 0, habitos_sostenibles = 0;
908909

909910
// Higiene
910911
let duracion_duchas = 0;
911912
if (values.showerDuration === "menos10") duracion_duchas = 4000;
912913
else if (values.showerDuration === "10a20") duracion_duchas = 8000;
913-
else if (values.showerDuration === "30a60") duracion_duchas = 18000;
914+
else if (values.showerDuration === "30a60") duracion_duchas = 18000; // tiene la multiplicacion la frecuencia de ducha?
915+
// Duchas: veces por semana × litros por ducha × 52 semanas
916+
const duchas_anual = duracion_duchas * (values.showerTimesPerWeek || 0) * 52;
914917

915918
let lavado_dientes = 0;
916919
if (values.brushFrequency === "menos10") lavado_dientes = 300;
917920
else if (values.brushFrequency === "10a20") lavado_dientes = 600;
918-
else if (values.brushFrequency === "30a60") lavado_dientes = 900;
921+
else if (values.brushFrequency === "30a60") lavado_dientes = 900; // donde esta el imput de las veces por día?
922+
const lavado_dientes_anual = lavado_dientes * (values.brushTimesPerDay || 0) * 365;
919923

920924
let lavado_manos = 0;
921925
if (values.handWashFrequency === "menos10") lavado_manos = 135;
922926
else if (values.handWashFrequency === "10a20") lavado_manos = 225;
923927
else if (values.handWashFrequency === "30a60") lavado_manos = 450;
928+
const lavado_manos_anual = lavado_manos * (values.handWashTimesPerDay || 0) * 365;
924929

925930
let inodoro = values.toiletType === "si" ? 100 : 210; // "si" = ahorrador
931+
const inodoro_anual = inodoro * 365;
926932

927-
higiene = (duracion_duchas * (values.showerTimesPerWeek || 0)) + lavado_dientes + lavado_manos + inodoro;
933+
higiene = duchas_anual + lavado_dientes_anual + lavado_manos_anual + inodoro;
928934

929935
// Limpieza
930936
let lavado_ropa_litros = 0;
931937
if (values.washingMethod === "aMano") lavado_ropa_litros = 840;
932938
else if (values.washingMethod === "lavadoraEstandar") lavado_ropa_litros = 960;
933939
else if (values.washingMethod === "lavadoraEficiente") lavado_ropa_litros = 400;
934940

935-
limpieza = (values.clothesWashPerWeek || 0) * lavado_ropa_litros;
941+
// Ropa: lavados por semana × litros por lavado × 52 semanas
942+
limpieza += (values.clothesWashPerWeek || 0) * lavado_ropa_litros * 52;
936943

937944
// Trastes
938-
let trastesLitros = values.dishwashingMethod === "si" ? 20 : 12; // "si" = a mano
945+
let trastesLitros = values.dishwashingMethod === "si" ? 20 : 12;
939946
limpieza += (values.dishesWashPerDay || 0) * trastesLitros * 365;
940947

941948
// Alimentos
942-
alimentos += (values.beefKgPerWeek || 0) * 15415;
943-
alimentos += (values.chickenKgPerWeek || 0) * 4300;
944-
alimentos += (values.coffeeCupsPerWeek || 0) * 132;
945-
alimentos += (values.teaCupsPerWeek || 0) * 56;
946-
947-
const freqToLiters = (freq) => {
948-
if (freq === "menos10") return 0;
949-
if (freq === "10a20") return 7 * 250;
950-
if (freq === "30a60") return 12 * 250;
951-
return 0;
952-
};
953-
alimentos += freqToLiters(values.arrozFrequency);
954-
alimentos += freqToLiters(values.huevoFrequency);
955-
alimentos += freqToLiters(values.platanoFrequency);
956-
alimentos += freqToLiters(values.naranjaFrequency);
957-
alimentos += (values.PanCount || 0) * 200 * 7;
949+
alimentos += (values.beefKgPerWeek || 0) * 15415 * 52;
950+
alimentos += (values.chickenKgPerWeek || 0) * 4300 * 52;
951+
alimentos += (values.coffeeCupsPerWeek || 0) * 132 * 52;
952+
alimentos += (values.teaCupsPerWeek || 0) * 56 * 52;
953+
954+
const freqToLitersAnual = (freq) => {
955+
if (freq === "menos10") return 0;
956+
if (freq === "10a20") return 7 * 250 * 52; // 7 unidades/semana × 52 semanas
957+
if (freq === "30a60") return 12 * 250 * 52; // 12 unidades/semana × 52 semanas
958+
return 0;
959+
};
960+
alimentos += freqToLitersAnual(values.arrozFrequency);
961+
alimentos += freqToLitersAnual(values.huevoFrequency);
962+
alimentos += freqToLitersAnual(values.platanoFrequency);
963+
alimentos += freqToLitersAnual(values.naranjaFrequency);
964+
alimentos += (values.PanCount || 0) * 200 * 365;
958965

959966
// Bienes
960967
bienes_servicios =
@@ -988,17 +995,58 @@ const tips = {
988995
resultadoElement.innerHTML = `${formattedTotal} <span>Litros/año</span>`;
989996
}
990997

991-
const nroCisternaElement = document.getElementById("nroCisterna");
992-
if (nroCisternaElement) {
993-
const cisternas = total / 1500;
994-
if (cisternas >= 1_000_000) {
995-
nroCisternaElement.textContent = (cisternas / 1_000_000).toFixed(1) + "M";
996-
} else if (cisternas >= 1_000) {
997-
nroCisternaElement.textContent = (cisternas / 1_000).toFixed(1) + "K";
998-
} else {
999-
nroCisternaElement.textContent = cisternas.toFixed(1);
1000-
}
1001-
}
998+
999+
// --- CÁLCULO DE CAMIONES CISTERNA ---
1000+
const LITROS_POR_CISTERNA = 15_000; //
1001+
const camionesCisterna = Math.max(1, Math.round(total / LITROS_POR_CISTERNA));
1002+
1003+
// --- Actualizar número de cisternas en pantalla ---
1004+
const nroCisternaElement = document.getElementById("nroCisterna");
1005+
if (nroCisternaElement) {
1006+
nroCisternaElement.textContent = camionesCisterna; //
1007+
}
1008+
1009+
1010+
1011+
// --- Determinar mensaje según rango ---
1012+
let mensaje = "";
1013+
let tipoMensaje = "";
1014+
1015+
if (total < 2_000_000) {
1016+
mensaje = `
1017+
<div class="checkmark">✅</div>
1018+
<p>
1019+
<strong>¡Felicidades!</strong> Tu huella hídrica anual está por debajo del promedio estimado en Bolivia.
1020+
Esto indica que ya estás tomando decisiones más conscientes. Continúa así y considera seguir reduciendo con pequeñas acciones que suman cada día.
1021+
</p>
1022+
`;
1023+
tipoMensaje = "bajo";
1024+
} else if (total >= 2_000_000 && total <= 4_000_000) {
1025+
mensaje = `
1026+
<div class="info-icon">ℹ️</div>
1027+
<p>
1028+
<strong>Tu huella hídrica anual se encuentra en el rango promedio estimado para Bolivia.</strong>
1029+
No es mala, pero sí significa que tienes buena oportunidad para mejorar. Aplica los consejos de la app/web y conviértete en referente entre tus amigos o comunidad.
1030+
</p>
1031+
`;
1032+
tipoMensaje = "medio";
1033+
} else {
1034+
mensaje = `
1035+
<div class="alert-icon">⚠️</div>
1036+
<p>
1037+
<strong>Tu huella hídrica anual está por encima del promedio estimado en Bolivia.</strong>
1038+
Esto muestra que tus hábitos tienen un impacto importante sobre el recurso agua. Te animamos a revisar los consejos que te brinda la herramienta y adoptar cambios hoy mismo: cada litro que reduces cuenta hacia un futuro más sostenible.
1039+
</p>
1040+
`;
1041+
tipoMensaje = "alto";
1042+
}
1043+
1044+
// --- Insertar mensaje en el DOM ---
1045+
const congratsContainer = document.getElementById("congrats-message");
1046+
if (congratsContainer) {
1047+
congratsContainer.className = `congrats-message ${tipoMensaje}`;
1048+
congratsContainer.innerHTML = mensaje;
1049+
}
10021050
}
10031051
</script>
10041052

src/pages/feature/styles.css

Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,48 @@ h3 {
372372
font-weight: 600;
373373
}
374374

375+
#nroCisterna {
376+
font-size: 1.3rem;
377+
font-weight:700 ;
378+
}
379+
380+
381+
/* Mensaje de felicitación/rango */
382+
.congrats-message {
383+
padding: 1rem 1.5rem;
384+
border-radius: 8px;
385+
margin: 1.5rem 0;
386+
display: flex;
387+
align-items: flex-start;
388+
gap: 0.8rem;
389+
font-size: 0.95rem;
390+
line-height: 1.5;
391+
}
392+
393+
.congrats-message.bajo {
394+
background: #f0fff4;
395+
border-left: 4px solid #28a745;
396+
color: #155724;
397+
}
398+
399+
.congrats-message.medio {
400+
background: #fff8e1;
401+
border-left: 4px solid #ffc107;
402+
color: #856404;
403+
}
404+
405+
.congrats-message.alto {
406+
background: #f8d7da;
407+
border-left: 4px solid #dc3545;
408+
color: #721c24;
409+
}
410+
411+
.congrats-message .checkmark,
412+
.congrats-message .info-icon,
413+
.congrats-message .alert-icon {
414+
font-size: 1.3rem;
415+
flex-shrink: 0;
416+
}
375417

376418

377419
/* Botón ¿Cómo ahorrar? */
@@ -452,11 +494,11 @@ h3 {
452494
/* Estilo para el botón de "Siguiente pregunta" */
453495
.next-btn {
454496
background-color: #00b4d8;
455-
padding: 12px 24px;
497+
padding: 13px 25px;
456498
border: none;
457-
border-radius: 6px;
499+
border-radius: 8px;
458500
cursor: pointer;
459-
font-size: 1rem;
501+
font-size: 1.3rem;
460502
display: block;
461503
margin: 30px auto 0;
462504
transition: background 0.2s;
@@ -514,8 +556,8 @@ h3 {
514556
}
515557

516558
.footer-links a {
517-
margin: 0 10px;
518-
color: #2e7d32;
559+
margin: 0 12px;
560+
color: #00b4d8;
519561
text-decoration: none;
520562
}
521563

@@ -607,35 +649,31 @@ h3 {
607649

608650
/* Botones */
609651
#step13 .option-btn {
610-
width: 60%; /* los hace más anchos y uniformes */
611-
max-width: 300px; /* evita que se hagan demasiado grandes */
612-
margin: 0 auto; /* centrado horizontal */
652+
width: 60%;
613653
padding: 8px 12px;
614-
font-size: 14px;
654+
font-size: 1.3rem;
615655
border-radius: 6px;
616656
text-align: center;
617657
}
618658

619659
#step12 .option-btn {
620-
width: 60%; /* los hace más anchos y uniformes */
621-
max-width: 300px; /* evita que se hagan demasiado grandes */
622-
margin: 0 auto; /* centrado horizontal */
660+
width: 60%;
623661
padding: 8px 12px;
624-
font-size: 14px;
662+
font-size:1.3rem;
625663
border-radius: 6px;
626664
text-align: center;
627665
}
628666

629667
#step13 .next-btn {
630668
margin-top: 12px;
631669
padding: 8px 16px;
632-
font-size: 15px;
670+
font-size:1.3rem;
633671
}
634672

635673
#step12 .next-btn {
636674
margin-top: 12px;
637675
padding: 8px 16px;
638-
font-size: 15px;
676+
font-size: 1.3rem;
639677
}
640678
.options-container {
641679
display: flex;

0 commit comments

Comments
 (0)