Maximofn commited on
Commit
4ef7594
·
1 Parent(s): 6359252

feat(SRC): :rocket: Change style. Change functionality

Browse files

User has to add initial macros and then final macros is initial macros plus macros mode

Files changed (1) hide show
  1. app.py +216 -99
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
- # Create strings for the outputs
94
- train_day_protein_str = f"min: {train_day_protein_std[0]}, max: {train_day_protein_std[1]}, mean: {train_day_protein_std[2]:.2f}, mode: {train_day_protein_std[3]}"
95
- train_day_carbs_str = f"min: {train_day_carbs_std[0]}, max: {train_day_carbs_std[1]}, mean: {train_day_carbs_std[2]:.2f}, mode: {train_day_carbs_std[3]}"
96
- train_day_fat_str = f"min: {train_day_fat_std[0]}, max: {train_day_fat_std[1]}, mean: {train_day_fat_std[2]:.2f}, mode: {train_day_fat_std[3]}"
97
- intratrain_protein_str = f"min: {intratrain_protein_std[0]}, max: {intratrain_protein_std[1]}, mean: {intratrain_protein_std[2]:.2f}, mode: {intratrain_protein_std[3]}"
98
- intratrain_carbs_str = f"min: {intratrain_carbs_std[0]}, max: {intratrain_carbs_std[1]}, mean: {intratrain_carbs_std[2]:.2f}, mode: {intratrain_carbs_std[3]}"
99
- rest_day_protein_str = f"min: {rest_day_protein_std[0]}, max: {rest_day_protein_std[1]}, mean: {rest_day_protein_std[2]:.2f}, mode: {rest_day_protein_std[3]}"
100
- rest_day_carbs_str = f"min: {rest_day_carbs_std[0]}, max: {rest_day_carbs_std[1]}, mean: {rest_day_carbs_std[2]:.2f}, mode: {rest_day_carbs_std[3]}"
101
- rest_day_fat_str = f"min: {rest_day_fat_std[0]}, max: {rest_day_fat_std[1]}, mean: {rest_day_fat_std[2]:.2f}, mode: {rest_day_fat_std[3]}"
 
 
 
 
 
 
 
102
 
103
- # train_day_protein_str = "0"
104
- # train_day_carbs_str = "0"
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
- return train_day_protein_str, train_day_carbs_str, train_day_fat_str, intratrain_protein_str, intratrain_carbs_str, rest_day_protein_str, rest_day_carbs_str, rest_day_fat_str
 
 
 
 
 
 
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
- with gr.Row():
324
- esfuerzo = gr.Dropdown(
325
- choices=textos_esfuerzo,
326
- label="Esfuerzo dieta",
327
- value="No costó nada"
328
- )
329
- cumplimiento_dieta = gr.Dropdown(
330
- choices=textos_cumplimiento_dieta,
331
- label="Cumplimiento de la dieta",
332
- value="Perfecta"
333
- )
334
- objetivo = gr.Dropdown(
335
- choices=textos_objetivo,
336
- label="Objetivo",
337
- value="volumen (nada cambia)"
338
- )
339
- with gr.Row():
340
- cumplimiento_entr = gr.Dropdown(
341
- choices=textos_cumplimiento_entr,
342
- label="Cumplimiento del entrenamiento",
343
- value="Lo hice perfecto"
344
- )
345
- compromiso = gr.Dropdown(
346
- choices=textos_compromiso,
347
- label="Compromiso",
348
- value="Máximo"
349
- )
350
- variacion_peso = gr.Number(
351
- label="Variación de peso",
352
- precision=2,
353
- value=0.7
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
- with gr.Row(elem_classes="output-row"):
395
- proteina_entreno = gr.Textbox(label="Proteína día de entreno (g)")
396
- carbs_entreno = gr.Textbox(label="Carbohidratos día de entreno (g)")
397
- grasas_entreno = gr.Textbox(label="Grasas día de entreno (g)")
398
- proteina_intra = gr.Textbox(label="Proteína intraentreno (g)")
399
- carbs_intra = gr.Textbox(label="Carbohidratos intraentreno (g)")
400
- proteina_descanso = gr.Textbox(label="Proteína día de descanso (g)")
401
- carbs_descanso = gr.Textbox(label="Carbohidratos día de descanso (g)")
402
- grasas_descanso = gr.Textbox(label="Grasas día de descanso (g)")
 
 
 
 
 
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
- outputs=[proteina_entreno, carbs_entreno, grasas_entreno,
410
- proteina_intra, carbs_intra,
411
- proteina_descanso, carbs_descanso, grasas_descanso]
 
 
 
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()