AIdeaText commited on
Commit
0dfdca3
·
verified ·
1 Parent(s): f0f13b4

Update modules/studentact/current_situation_interface.py

Browse files
modules/studentact/current_situation_interface.py CHANGED
@@ -25,6 +25,16 @@ def display_current_situation_interface(lang_code, nlp_models, t):
25
  """
26
  Interfaz simplificada para el análisis inicial, enfocada en recomendaciones directas.
27
  """
 
 
 
 
 
 
 
 
 
 
28
  st.markdown("## Análisis Inicial de Escritura")
29
 
30
  # Container principal con dos columnas
@@ -33,51 +43,56 @@ def display_current_situation_interface(lang_code, nlp_models, t):
33
 
34
  with input_col:
35
  st.markdown("### Ingresa tu texto")
 
 
 
 
 
 
 
36
  text_input = st.text_area(
37
  t.get('input_prompt', "Escribe o pega tu texto aquí:"),
38
  height=400,
39
- key=f"initial_analysis_input_{st.session_state.get('analysis_count', 0)}", # Key dinámica
 
 
40
  help="Este texto será analizado para darte recomendaciones personalizadas"
41
  )
42
 
 
43
  if st.button(
44
  t.get('analyze_button', "Analizar mi escritura"),
45
  type="primary",
46
- disabled=not text_input.strip(), # Verificar que no esté vacío
47
  use_container_width=True,
48
- key=f"analyze_button_{st.session_state.get('analysis_count', 0)}" # Key dinámica
49
  ):
50
  try:
51
  with st.spinner(t.get('processing', "Analizando...")):
52
- # Incrementar contador de análisis
53
- if 'analysis_count' not in st.session_state:
54
- st.session_state.analysis_count = 0
55
- st.session_state.analysis_count += 1
56
-
57
  # Procesar texto y obtener métricas
58
  doc = nlp_models[lang_code](text_input)
59
  metrics = analyze_text_dimensions(doc)
60
 
61
- # Guardar resultados en el estado
62
  st.session_state.current_doc = doc
63
  st.session_state.current_metrics = metrics
 
 
 
 
64
 
65
- # Forzar rerun para actualizar visualización
66
- st.rerun()
67
-
68
  except Exception as e:
69
  logger.error(f"Error en análisis: {str(e)}")
70
  st.error(t.get('analysis_error', "Error al analizar el texto"))
71
 
72
- # Mostrar resultados si existen
73
  with results_col:
74
- if hasattr(st.session_state, 'current_metrics'):
75
  display_recommendations(st.session_state.current_metrics, t)
76
 
77
  # Opción para ver detalles
78
  with st.expander("🔍 Ver análisis detallado", expanded=False):
79
  display_current_situation_visual(
80
- st.session_state.current_doc,
81
  st.session_state.current_metrics
82
  )
83
 
 
25
  """
26
  Interfaz simplificada para el análisis inicial, enfocada en recomendaciones directas.
27
  """
28
+ # Inicializar estados si no existen
29
+ if 'text_input' not in st.session_state:
30
+ st.session_state.text_input = ""
31
+ if 'show_results' not in st.session_state:
32
+ st.session_state.show_results = False
33
+ if 'current_doc' not in st.session_state:
34
+ st.session_state.current_doc = None
35
+ if 'current_metrics' not in st.session_state:
36
+ st.session_state.current_metrics = None
37
+
38
  st.markdown("## Análisis Inicial de Escritura")
39
 
40
  # Container principal con dos columnas
 
43
 
44
  with input_col:
45
  st.markdown("### Ingresa tu texto")
46
+
47
+ # Función para manejar cambios en el texto
48
+ def on_text_change():
49
+ st.session_state.text_input = st.session_state.text_area
50
+ st.session_state.show_results = False # Resetear resultados cuando el texto cambia
51
+
52
+ # Text area con manejo de estado
53
  text_input = st.text_area(
54
  t.get('input_prompt', "Escribe o pega tu texto aquí:"),
55
  height=400,
56
+ key="text_area",
57
+ value=st.session_state.text_input,
58
+ on_change=on_text_change,
59
  help="Este texto será analizado para darte recomendaciones personalizadas"
60
  )
61
 
62
+ # Botón de análisis
63
  if st.button(
64
  t.get('analyze_button', "Analizar mi escritura"),
65
  type="primary",
66
+ disabled=not text_input.strip(),
67
  use_container_width=True,
 
68
  ):
69
  try:
70
  with st.spinner(t.get('processing', "Analizando...")):
 
 
 
 
 
71
  # Procesar texto y obtener métricas
72
  doc = nlp_models[lang_code](text_input)
73
  metrics = analyze_text_dimensions(doc)
74
 
75
+ # Actualizar estado con nuevos resultados
76
  st.session_state.current_doc = doc
77
  st.session_state.current_metrics = metrics
78
+ st.session_state.show_results = True
79
+
80
+ # Mantener el texto en el estado
81
+ st.session_state.text_input = text_input
82
 
 
 
 
83
  except Exception as e:
84
  logger.error(f"Error en análisis: {str(e)}")
85
  st.error(t.get('analysis_error', "Error al analizar el texto"))
86
 
87
+ # Mostrar resultados en la columna derecha
88
  with results_col:
89
+ if st.session_state.show_results and st.session_state.current_metrics is not None:
90
  display_recommendations(st.session_state.current_metrics, t)
91
 
92
  # Opción para ver detalles
93
  with st.expander("🔍 Ver análisis detallado", expanded=False):
94
  display_current_situation_visual(
95
+ st.session_state.current_doc,
96
  st.session_state.current_metrics
97
  )
98