feat(SRC): :rocket: Change style. Change functionality
Browse filesUser has to add initial macros and then final macros is initial macros plus macros mode
app.py
CHANGED
@@ -16,7 +16,10 @@ def clustering_responses(esfuerzo_dieta, objetivo, cumplimiento_entrenamiento,
|
|
16 |
return cluster_esfuerzo_dieta, cluster_objetivo, cluster_entrenamiento, cluster_cumplimiento_dieta, cluster_compromiso, diff_peso_min, diff_peso_max
|
17 |
|
18 |
def calcular_macros(esfuerzo_dieta, objetivo, cumplimiento_entrenamiento,
|
19 |
-
cumplimiento_dieta, compromiso, variacion_peso
|
|
|
|
|
|
|
20 |
# Obtenemos los valores correspondientes a cada selección
|
21 |
valor_esfuerzo = next(list(opcion.values())[0]["value"]
|
22 |
for opcion in opciones_esfuerzo
|
@@ -90,26 +93,33 @@ def calcular_macros(esfuerzo_dieta, objetivo, cumplimiento_entrenamiento,
|
|
90 |
# Print macros min, max and mean
|
91 |
print(f"Macros min, max and mean:\n{train_day_protein_std}, {train_day_carbs_std}, {train_day_fat_std}, {intratrain_protein_std}, {intratrain_carbs_std}, {rest_day_protein_std}, {rest_day_carbs_std}, {rest_day_fat_std}")
|
92 |
|
93 |
-
#
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
|
103 |
-
|
104 |
-
|
105 |
-
# train_day_fat_str = "0"
|
106 |
-
# intratrain_protein_str = "0"
|
107 |
-
# intratrain_carbs_str = "0"
|
108 |
-
# rest_day_protein_str = "0"
|
109 |
-
# rest_day_carbs_str = "0"
|
110 |
-
# rest_day_fat_str = "0"
|
111 |
|
112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
# Definimos las opciones para cada menú desplegable
|
115 |
opciones_esfuerzo = [
|
@@ -307,10 +317,58 @@ opciones_compromiso = [
|
|
307 |
}
|
308 |
]
|
309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
# Creamos la interfaz
|
311 |
-
with gr.Blocks() as demo:
|
312 |
-
# Definimos el color naranja
|
313 |
-
naranja = "#FF9300"
|
314 |
|
315 |
# Procesamos las opciones para obtener solo los textos
|
316 |
textos_esfuerzo = [list(opcion.values())[0]["text"] for opcion in opciones_esfuerzo]
|
@@ -320,95 +378,154 @@ with gr.Blocks() as demo:
|
|
320 |
textos_compromiso = [list(opcion.values())[0]["text"] for opcion in opciones_compromiso]
|
321 |
|
322 |
# Entradas
|
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 |
# Versión simple del botón
|
357 |
calcular_btn = gr.Button(
|
358 |
-
"Calcular",
|
359 |
variant="primary",
|
360 |
-
size="lg"
|
|
|
361 |
)
|
362 |
|
363 |
-
# Añadimos el estilo CSS personalizado
|
364 |
-
css = f"""
|
365 |
-
<style>
|
366 |
-
#boton-naranja {{
|
367 |
-
background-color: {naranja} !important;
|
368 |
-
border: 1px solid {naranja} !important;
|
369 |
-
}}
|
370 |
-
#boton-naranja:hover {{
|
371 |
-
background-color: {naranja}DD !important;
|
372 |
-
border: 1px solid {naranja}DD !important;
|
373 |
-
}}
|
374 |
-
</style>
|
375 |
-
"""
|
376 |
-
|
377 |
-
css_outputs = """
|
378 |
-
<style>
|
379 |
-
.output-row {
|
380 |
-
align-items: flex-end !important;
|
381 |
-
display: flex !important;
|
382 |
-
gap: 1rem !important;
|
383 |
-
}
|
384 |
-
.output-row > * {
|
385 |
-
flex: 1;
|
386 |
-
min-width: 0;
|
387 |
-
}
|
388 |
-
</style>
|
389 |
-
"""
|
390 |
-
|
391 |
-
gr.Markdown(css + css_outputs)
|
392 |
-
|
393 |
# Salidas
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
|
|
|
|
|
|
|
|
|
|
403 |
|
404 |
# Conectamos el botón con la función
|
405 |
calcular_btn.click(
|
406 |
fn=calcular_macros,
|
407 |
inputs=[esfuerzo, objetivo, cumplimiento_entr, cumplimiento_dieta,
|
408 |
-
compromiso, variacion_peso
|
409 |
-
|
410 |
-
|
411 |
-
|
|
|
|
|
|
|
412 |
)
|
413 |
|
414 |
demo.launch()
|
|
|
16 |
return cluster_esfuerzo_dieta, cluster_objetivo, cluster_entrenamiento, cluster_cumplimiento_dieta, cluster_compromiso, diff_peso_min, diff_peso_max
|
17 |
|
18 |
def calcular_macros(esfuerzo_dieta, objetivo, cumplimiento_entrenamiento,
|
19 |
+
cumplimiento_dieta, compromiso, variacion_peso,
|
20 |
+
train_day_protein_initial, train_day_carbs_initial, train_day_fat_initial,
|
21 |
+
intratrain_protein_initial, intratrain_carbs_initial,
|
22 |
+
rest_day_protein_initial, rest_day_carbs_initial, rest_day_fat_initial):
|
23 |
# Obtenemos los valores correspondientes a cada selección
|
24 |
valor_esfuerzo = next(list(opcion.values())[0]["value"]
|
25 |
for opcion in opciones_esfuerzo
|
|
|
93 |
# Print macros min, max and mean
|
94 |
print(f"Macros min, max and mean:\n{train_day_protein_std}, {train_day_carbs_std}, {train_day_fat_std}, {intratrain_protein_std}, {intratrain_carbs_std}, {rest_day_protein_std}, {rest_day_carbs_std}, {rest_day_fat_std}")
|
95 |
|
96 |
+
# Get macros min, max, mean and mode
|
97 |
+
train_day_protein_min, train_day_protein_max, train_day_protein_mean, train_day_protein_mode = train_day_protein_std
|
98 |
+
train_day_carbs_min, train_day_carbs_max, train_day_carbs_mean, train_day_carbs_mode = train_day_carbs_std
|
99 |
+
train_day_fat_min, train_day_fat_max, train_day_fat_mean, train_day_fat_mode = train_day_fat_std
|
100 |
+
|
101 |
+
intratrain_protein_min, intratrain_protein_max, intratrain_protein_mean, intratrain_protein_mode = intratrain_protein_std
|
102 |
+
intratrain_carbs_min, intratrain_carbs_max, intratrain_carbs_mean, intratrain_carbs_mode = intratrain_carbs_std
|
103 |
+
|
104 |
+
rest_day_protein_min, rest_day_protein_max, rest_day_protein_mean, rest_day_protein_mode = rest_day_protein_std
|
105 |
+
rest_day_carbs_min, rest_day_carbs_max, rest_day_carbs_mean, rest_day_carbs_mode = rest_day_carbs_std
|
106 |
+
rest_day_fat_min, rest_day_fat_max, rest_day_fat_mean, rest_day_fat_mode = rest_day_fat_std
|
107 |
+
|
108 |
+
# Calculate macros final
|
109 |
+
train_day_protein_final = train_day_protein_initial + train_day_protein_mode
|
110 |
+
train_day_carbs_final = train_day_carbs_initial + train_day_carbs_mode
|
111 |
+
train_day_fat_final = train_day_fat_initial + train_day_fat_mode
|
112 |
|
113 |
+
intratrain_protein_final = intratrain_protein_initial + intratrain_protein_mode
|
114 |
+
intratrain_carbs_final = intratrain_carbs_initial + intratrain_carbs_mode
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
|
116 |
+
rest_day_protein_final = rest_day_protein_initial + rest_day_protein_mode
|
117 |
+
rest_day_carbs_final = rest_day_carbs_initial + rest_day_carbs_mode
|
118 |
+
rest_day_fat_final = rest_day_fat_initial + rest_day_fat_mode
|
119 |
+
|
120 |
+
return (train_day_protein_final, train_day_carbs_final, train_day_fat_final,
|
121 |
+
intratrain_protein_final, intratrain_carbs_final,
|
122 |
+
rest_day_protein_final, rest_day_carbs_final, rest_day_fat_final)
|
123 |
|
124 |
# Definimos las opciones para cada menú desplegable
|
125 |
opciones_esfuerzo = [
|
|
|
317 |
}
|
318 |
]
|
319 |
|
320 |
+
# Definimos el color naranja
|
321 |
+
naranja = "#ea580b"
|
322 |
+
|
323 |
+
title_macros_iniciales_html = f"""
|
324 |
+
<h1 style="text-align: center; color: {naranja}; margin: 0; padding: 0;">Macros iniciales</h1>
|
325 |
+
"""
|
326 |
+
|
327 |
+
title_cuestionario_html = f"""
|
328 |
+
<h1 style="text-align: center; color: {naranja}; margin: 0; padding: 0;">Respuestas cuestionario</h1>
|
329 |
+
"""
|
330 |
+
|
331 |
+
title_macros_finales_html = f"""
|
332 |
+
<h1 style="text-align: center; color: {naranja}; margin: 0; padding: 0;">Macros finales</h1>
|
333 |
+
"""
|
334 |
+
|
335 |
+
style_css = f"""
|
336 |
+
<style>
|
337 |
+
.demo {{
|
338 |
+
background-color: {naranja};
|
339 |
+
}}
|
340 |
+
.input-group, .output-group {{
|
341 |
+
background-color: {naranja};
|
342 |
+
padding: 2px;
|
343 |
+
border-radius: 7px;
|
344 |
+
}}
|
345 |
+
.input-row .output-row {{
|
346 |
+
}}
|
347 |
+
.input-column {{
|
348 |
+
}}
|
349 |
+
.input-number {{
|
350 |
+
background-color: black;
|
351 |
+
color: white;
|
352 |
+
}}
|
353 |
+
.input-dropdown {{
|
354 |
+
background-color: black;
|
355 |
+
color: white;
|
356 |
+
}}
|
357 |
+
.calcular-btn {{
|
358 |
+
background-color: {naranja};
|
359 |
+
color: white;
|
360 |
+
border-radius: 7px;
|
361 |
+
margin-bottom: 70px;
|
362 |
+
}}
|
363 |
+
.output-number {{
|
364 |
+
background-color: black;
|
365 |
+
color: white;
|
366 |
+
}}
|
367 |
+
</style>
|
368 |
+
"""
|
369 |
+
|
370 |
# Creamos la interfaz
|
371 |
+
with gr.Blocks(css=style_css, elem_classes="demo") as demo:
|
|
|
|
|
372 |
|
373 |
# Procesamos las opciones para obtener solo los textos
|
374 |
textos_esfuerzo = [list(opcion.values())[0]["text"] for opcion in opciones_esfuerzo]
|
|
|
378 |
textos_compromiso = [list(opcion.values())[0]["text"] for opcion in opciones_compromiso]
|
379 |
|
380 |
# Entradas
|
381 |
+
gr.Markdown(title_macros_iniciales_html)
|
382 |
+
with gr.Group(elem_classes="input-group"):
|
383 |
+
with gr.Row(elem_classes="input-row"):
|
384 |
+
with gr.Column(elem_classes="input-column"):
|
385 |
+
train_day_protein_initial = gr.Number(
|
386 |
+
label="Proteína día de entreno (g)",
|
387 |
+
precision=0,
|
388 |
+
value=150,
|
389 |
+
step=10,
|
390 |
+
minimum=0,
|
391 |
+
elem_classes="input-number"
|
392 |
+
)
|
393 |
+
train_day_carbs_initial = gr.Number(
|
394 |
+
label="Carbohidratos día de entreno (g)",
|
395 |
+
precision=0,
|
396 |
+
value=150,
|
397 |
+
step=10,
|
398 |
+
minimum=0,
|
399 |
+
elem_classes="input-number"
|
400 |
+
)
|
401 |
+
train_day_fat_initial = gr.Number(
|
402 |
+
label="Grasas día de entreno (g)",
|
403 |
+
precision=0,
|
404 |
+
value=150,
|
405 |
+
step=10,
|
406 |
+
minimum=0,
|
407 |
+
elem_classes="input-number"
|
408 |
+
)
|
409 |
+
with gr.Column(elem_classes="input-column"):
|
410 |
+
intratrain_protein_initial = gr.Number(
|
411 |
+
label="Proteína intraentreno (g)",
|
412 |
+
precision=0,
|
413 |
+
value=150,
|
414 |
+
step=10,
|
415 |
+
minimum=0,
|
416 |
+
elem_classes="input-number"
|
417 |
+
)
|
418 |
+
intratrain_carbs_initial = gr.Number(
|
419 |
+
label="Carbohidratos intraentreno (g)",
|
420 |
+
precision=0,
|
421 |
+
value=150,
|
422 |
+
step=10,
|
423 |
+
minimum=0,
|
424 |
+
elem_classes="input-number"
|
425 |
+
)
|
426 |
+
with gr.Column(elem_classes="input-column"):
|
427 |
+
rest_day_protein_initial = gr.Number(
|
428 |
+
label="Proteína día de descanso (g)",
|
429 |
+
precision=0,
|
430 |
+
value=150,
|
431 |
+
step=10,
|
432 |
+
minimum=0,
|
433 |
+
elem_classes="input-number"
|
434 |
+
)
|
435 |
+
rest_day_carbs_initial = gr.Number(
|
436 |
+
label="Carbohidratos día de descanso (g)",
|
437 |
+
precision=0,
|
438 |
+
value=150,
|
439 |
+
step=10,
|
440 |
+
minimum=0,
|
441 |
+
elem_classes="input-number"
|
442 |
+
)
|
443 |
+
rest_day_fat_initial = gr.Number(
|
444 |
+
label="Grasas día de descanso (g)",
|
445 |
+
precision=0,
|
446 |
+
value=150,
|
447 |
+
step=10,
|
448 |
+
minimum=0,
|
449 |
+
elem_classes="input-number"
|
450 |
+
)
|
451 |
+
|
452 |
+
gr.Markdown(title_cuestionario_html)
|
453 |
+
with gr.Group(elem_classes="input-group"):
|
454 |
+
with gr.Row(elem_classes="input-row"):
|
455 |
+
esfuerzo = gr.Dropdown(
|
456 |
+
choices=textos_esfuerzo,
|
457 |
+
label="Esfuerzo dieta",
|
458 |
+
value="No costó nada",
|
459 |
+
elem_classes="input-dropdown"
|
460 |
+
)
|
461 |
+
cumplimiento_dieta = gr.Dropdown(
|
462 |
+
choices=textos_cumplimiento_dieta,
|
463 |
+
label="Cumplimiento de la dieta",
|
464 |
+
value="Perfecta",
|
465 |
+
elem_classes="input-dropdown"
|
466 |
+
)
|
467 |
+
objetivo = gr.Dropdown(
|
468 |
+
choices=textos_objetivo,
|
469 |
+
label="Objetivo",
|
470 |
+
value="volumen (nada cambia)",
|
471 |
+
elem_classes="input-dropdown"
|
472 |
+
)
|
473 |
+
with gr.Row(elem_classes="input-row"):
|
474 |
+
cumplimiento_entr = gr.Dropdown(
|
475 |
+
choices=textos_cumplimiento_entr,
|
476 |
+
label="Cumplimiento del entrenamiento",
|
477 |
+
value="Lo hice perfecto",
|
478 |
+
elem_classes="input-dropdown"
|
479 |
+
)
|
480 |
+
compromiso = gr.Dropdown(
|
481 |
+
choices=textos_compromiso,
|
482 |
+
label="Compromiso",
|
483 |
+
value="Máximo",
|
484 |
+
elem_classes="input-dropdown"
|
485 |
+
)
|
486 |
+
variacion_peso = gr.Number(
|
487 |
+
label="Variación de peso",
|
488 |
+
precision=2,
|
489 |
+
value=0.7,
|
490 |
+
step=0.1,
|
491 |
+
elem_classes="input-number"
|
492 |
+
)
|
493 |
|
494 |
# Versión simple del botón
|
495 |
calcular_btn = gr.Button(
|
496 |
+
"Calcular macros",
|
497 |
variant="primary",
|
498 |
+
size="lg",
|
499 |
+
elem_classes="calcular-btn"
|
500 |
)
|
501 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
502 |
# Salidas
|
503 |
+
gr.Markdown(title_macros_finales_html)
|
504 |
+
with gr.Group(elem_classes="output-group"):
|
505 |
+
with gr.Row(elem_classes="output-row"):
|
506 |
+
with gr.Column():
|
507 |
+
train_day_protein_final = gr.Number(label="Proteína día de entreno Final (g)", precision=0, elem_classes="output-number")
|
508 |
+
train_day_carbs_final = gr.Number(label="Carbohidratos día de entreno Final (g)", precision=0, elem_classes="output-number")
|
509 |
+
train_day_fat_final = gr.Number(label="Grasas día de entreno Final (g)", precision=0, elem_classes="output-number")
|
510 |
+
with gr.Column():
|
511 |
+
intratrain_protein_final = gr.Number(label="Proteína intraentreno Final (g)", precision=0, elem_classes="output-number")
|
512 |
+
intratrain_carbs_final = gr.Number(label="Carbohidratos intraentreno Final (g)", precision=0, elem_classes="output-number")
|
513 |
+
with gr.Column():
|
514 |
+
rest_day_protein_final = gr.Number(label="Proteína día de descanso Final (g)", precision=0, elem_classes="output-number")
|
515 |
+
rest_day_carbs_final = gr.Number(label="Carbohidratos día de descanso Final (g)", precision=0, elem_classes="output-number")
|
516 |
+
rest_day_fat_final = gr.Number(label="Grasas día de descanso Final (g)", precision=0, elem_classes="output-number")
|
517 |
|
518 |
# Conectamos el botón con la función
|
519 |
calcular_btn.click(
|
520 |
fn=calcular_macros,
|
521 |
inputs=[esfuerzo, objetivo, cumplimiento_entr, cumplimiento_dieta,
|
522 |
+
compromiso, variacion_peso,
|
523 |
+
train_day_protein_initial, train_day_carbs_initial, train_day_fat_initial,
|
524 |
+
intratrain_protein_initial, intratrain_carbs_initial,
|
525 |
+
rest_day_protein_initial, rest_day_carbs_initial, rest_day_fat_initial],
|
526 |
+
outputs=[train_day_protein_final, train_day_carbs_final, train_day_fat_final,
|
527 |
+
intratrain_protein_final, intratrain_carbs_final,
|
528 |
+
rest_day_protein_final, rest_day_carbs_final, rest_day_fat_final]
|
529 |
)
|
530 |
|
531 |
demo.launch()
|