AIdeaText commited on
Commit
4a2bc5c
verified
1 Parent(s): 5af2aec

Update modules/morphosyntax/morphosyntax_interface.py

Browse files
modules/morphosyntax/morphosyntax_interface.py CHANGED
@@ -1,4 +1,4 @@
1
- # modules/morphosyntax/morphosyntax_interface.py
2
 
3
  import streamlit as st
4
  import re
@@ -12,6 +12,8 @@ from ..database.morphosyntax_iterative_mongo_db import (
12
  store_student_morphosyntax_iteration,
13
  )
14
 
 
 
15
  logger = logging.getLogger(__name__)
16
 
17
  ###########################################################################
@@ -57,7 +59,7 @@ def display_arc_diagram(doc):
57
  "word_spacing": 30
58
  }
59
  )
60
- # Ajustar tama帽os
61
  svg_html = svg_html.replace('height="375"', 'height="200"')
62
  svg_html = re.sub(
63
  r'<svg[^>]*>',
@@ -81,9 +83,9 @@ def display_arc_diagram(doc):
81
  def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
82
  """
83
  Interfaz principal para la visualizaci贸n de diagramas de arco
84
- (Texto Base vs Iteraciones).
85
  """
86
- # CSS para layout vertical y estable
87
  st.markdown("""
88
  <style>
89
  .stTextArea textarea {
@@ -110,31 +112,27 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
110
  initialize_arc_analysis_state()
111
  arc_state = st.session_state.arc_analysis_state
112
 
113
- # 2) Creamos pesta帽as: "Texto Base" y "Iteraciones"
114
- tabs = st.tabs(["Texto Base", "Iteraciones"])
 
 
115
 
116
  # =================== PESTA脩A 1: Texto Base ==========================
117
  with tabs[0]:
118
- st.subheader("An谩lisis de Texto Base")
119
-
120
- # Bot贸n para iniciar nuevo an谩lisis
121
- if st.button("Nuevo An谩lisis", key="btn_reset_base"):
122
- # Si requieres recargar la app por completo, podr铆as descomentar:
123
- # st.experimental_rerun()
124
- reset_arc_analysis_state()
125
 
126
  # Textarea de texto base
127
  arc_state["base_text"] = st.text_area(
128
- "Ingrese su texto inicial",
129
  value=arc_state["base_text"],
130
  key="base_text_input",
131
  height=150
132
  )
133
 
134
  # Bot贸n para analizar texto base
135
- if st.button("Analizar Texto Base", key="btn_analyze_base"):
136
  if not arc_state["base_text"].strip():
137
- st.warning("Ingrese un texto para analizar.")
138
  else:
139
  try:
140
  # Procesar con spaCy
@@ -154,47 +152,60 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
154
  )
155
  if base_id:
156
  arc_state["base_id"] = base_id
157
- st.success(f"An谩lisis base guardado. ID: {base_id}")
 
158
 
159
  except Exception as exc:
160
- st.error("Error procesando texto base")
161
  logger.error(f"Error en an谩lisis base: {str(exc)}")
162
 
 
 
 
 
 
 
163
  # Mostrar diagrama base
164
  if arc_state["base_diagram"]:
165
  st.markdown("<hr class='divider'>", unsafe_allow_html=True)
166
- st.markdown("#### Diagrama de Arco (Texto Base)")
167
  st.write(arc_state["base_diagram"], unsafe_allow_html=True)
 
 
 
 
168
 
169
  # ================== PESTA脩A 2: Iteraciones ==========================
170
  with tabs[1]:
171
- st.subheader("An谩lisis de Cambios / Iteraciones")
172
 
173
  # Verificar que exista un texto base
174
  if not arc_state["base_id"]:
175
- st.info("Primero analiza un texto base en la pesta帽a anterior.")
 
176
  return
177
 
178
  # --- 1) Mostrar SIEMPRE el diagrama base arriba ---
179
- st.markdown("#### Diagrama de Arco (Texto Base)")
180
  if arc_state["base_diagram"]:
181
  st.write(arc_state["base_diagram"], unsafe_allow_html=True)
182
  else:
183
- st.info("No hay diagrama base disponible.")
184
 
185
  # --- 2) Caja de texto para la iteraci贸n ---
186
  st.markdown("<hr class='divider'>", unsafe_allow_html=True)
187
- st.subheader("Texto de Iteraci贸n")
 
188
  arc_state["iteration_text"] = st.text_area(
189
- "Ingrese su nueva versi贸n / iteraci贸n",
190
  value=arc_state["iteration_text"],
191
  height=150
192
  )
193
 
194
  # Bot贸n para analizar iteraci贸n
195
- if st.button("Analizar Cambios", key="btn_analyze_iteration"):
196
  if not arc_state["iteration_text"].strip():
197
- st.warning("Ingrese texto de iteraci贸n.")
198
  else:
199
  try:
200
  # Procesar con spaCy
@@ -215,14 +226,16 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
215
  arc_diagrams=analysis_iter["arc_diagrams"]
216
  )
217
  if iteration_id:
218
- st.success(f"Iteraci贸n guardada. ID: {iteration_id}")
 
219
 
220
  except Exception as exc:
221
- st.error("Error procesando iteraci贸n")
222
  logger.error(f"Error en iteraci贸n: {str(exc)}")
223
 
 
224
  # --- 3) Mostrar diagrama de iteraci贸n debajo ---
225
  if arc_state["iteration_diagram"]:
226
  st.markdown("<hr class='divider'>", unsafe_allow_html=True)
227
- st.markdown("#### Diagrama de Arco (Iteraci贸n)")
228
- st.write(arc_state["iteration_diagram"], unsafe_allow_html=True)
 
1
+ #morphosyntax_interface.py
2
 
3
  import streamlit as st
4
  import re
 
12
  store_student_morphosyntax_iteration,
13
  )
14
 
15
+ from translations import get_translations
16
+
17
  logger = logging.getLogger(__name__)
18
 
19
  ###########################################################################
 
59
  "word_spacing": 30
60
  }
61
  )
62
+ # Ajustar tama帽os en el SVG resultante
63
  svg_html = svg_html.replace('height="375"', 'height="200"')
64
  svg_html = re.sub(
65
  r'<svg[^>]*>',
 
83
  def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
84
  """
85
  Interfaz principal para la visualizaci贸n de diagramas de arco
86
+ (Texto Base vs Iteraciones), usando traducciones con morpho_t.
87
  """
88
+ # CSS para layout y estilo
89
  st.markdown("""
90
  <style>
91
  .stTextArea textarea {
 
112
  initialize_arc_analysis_state()
113
  arc_state = st.session_state.arc_analysis_state
114
 
115
+ # 2) Crear pesta帽as con etiquetas traducidas
116
+ tab_text_base = morpho_t.get('tab_text_baseline', 'Ingresa la primera versi贸n de tu texto')
117
+ tab_iterations = morpho_t.get('tab_iterations', 'Produce nuevas versiones de tu primer texto')
118
+ tabs = st.tabs([tab_text_base, tab_iterations])
119
 
120
  # =================== PESTA脩A 1: Texto Base ==========================
121
  with tabs[0]:
122
+ # st.subheader(morpho_t.get('analysis_base_subheader', "An谩lisis de Texto Base"))
 
 
 
 
 
 
123
 
124
  # Textarea de texto base
125
  arc_state["base_text"] = st.text_area(
126
+ morpho_t.get('input_baseline_text', "Ingresa el primer texto para analizarlo"),
127
  value=arc_state["base_text"],
128
  key="base_text_input",
129
  height=150
130
  )
131
 
132
  # Bot贸n para analizar texto base
133
+ if st.button(morpho_t.get('btn_analyze_baseline', "Analizar la primera versi贸n de tu texto"), key="btn_analyze_base"):
134
  if not arc_state["base_text"].strip():
135
+ st.warning(morpho_t.get('warn_enter_text', "Ingrese un texto nuevo para analizarlo."))
136
  else:
137
  try:
138
  # Procesar con spaCy
 
152
  )
153
  if base_id:
154
  arc_state["base_id"] = base_id
155
+ saved_msg = morpho_t.get('analysis_base_saved', "An谩lisis base guardado. ID: {base_id}")
156
+ st.success(saved_msg.format(base_id=base_id))
157
 
158
  except Exception as exc:
159
+ st.error(morpho_t.get('error_processing_baseline', "Error al procesar el texto inicial"))
160
  logger.error(f"Error en an谩lisis base: {str(exc)}")
161
 
162
+ # Bot贸n para iniciar nuevo an谩lisis
163
+ if st.button(morpho_t.get('btn_new_morpho_analysis', "Nuevo an谩lisis morfosint谩tico"), key="btn_reset_base"):
164
+ # Si fuera necesario recargar la app por completo:
165
+ # st.experimental_rerun()
166
+ reset_arc_analysis_state()
167
+
168
  # Mostrar diagrama base
169
  if arc_state["base_diagram"]:
170
  st.markdown("<hr class='divider'>", unsafe_allow_html=True)
171
+ st.markdown(f"#### {morpho_t.get('arc_diagram_baseline_label', 'Diagrama de arco del texto inicial')}")
172
  st.write(arc_state["base_diagram"], unsafe_allow_html=True)
173
+ else:
174
+ if arc_state["base_text"].strip():
175
+ # Solo mostrar si ya hay texto base pero no se ha procesado
176
+ st.info(morpho_t.get('baseline_diagram_not_available', "Diagrama de arco del texto inicial no disponible."))
177
 
178
  # ================== PESTA脩A 2: Iteraciones ==========================
179
  with tabs[1]:
180
+ #st.subheader(morpho_t.get('iteration_text_subheader', "Nueva versi贸n del texto inicial"))
181
 
182
  # Verificar que exista un texto base
183
  if not arc_state["base_id"]:
184
+ st.info(morpho_t.get('info_first_analyze_base',
185
+ "Verifica la existencia de un texto anterior."))
186
  return
187
 
188
  # --- 1) Mostrar SIEMPRE el diagrama base arriba ---
189
+ st.markdown(f"#### {morpho_t.get('arc_diagram_base_label', 'Diagrama de arco del texto inicial')}")
190
  if arc_state["base_diagram"]:
191
  st.write(arc_state["base_diagram"], unsafe_allow_html=True)
192
  else:
193
+ st.info(morpho_t.get('baseline_diagram_not_available', "Diagrama de arco del texto inicial no disponible."))
194
 
195
  # --- 2) Caja de texto para la iteraci贸n ---
196
  st.markdown("<hr class='divider'>", unsafe_allow_html=True)
197
+ #st.subheader(morpho_t.get('iteration_text_subheader', "Ingresa una nueva versi贸n del texto inicial y compara los arcos de ambos textos"))
198
+
199
  arc_state["iteration_text"] = st.text_area(
200
+ morpho_t.get('input_iteration_text', "Ingresa una nueva versi贸n del texto inicial y compara los arcos de ambos textos"),
201
  value=arc_state["iteration_text"],
202
  height=150
203
  )
204
 
205
  # Bot贸n para analizar iteraci贸n
206
+ if st.button(morpho_t.get('btn_analyze_iteration', "Analizar Cambios"), key="btn_analyze_iteration"):
207
  if not arc_state["iteration_text"].strip():
208
+ st.warning(morpho_t.get('warn_enter_iteration_text', "Ingresa una nueva versi贸n del texto inicial y compara los arcos de ambos textos."))
209
  else:
210
  try:
211
  # Procesar con spaCy
 
226
  arc_diagrams=analysis_iter["arc_diagrams"]
227
  )
228
  if iteration_id:
229
+ saved_iter_msg = morpho_t.get('iteration_saved', "Cambios guardados correctamente. ID: {iteration_id}")
230
+ st.success(saved_iter_msg.format(iteration_id=iteration_id))
231
 
232
  except Exception as exc:
233
+ st.error(morpho_t.get('error_iteration', "Error procesando los nuevos cambios"))
234
  logger.error(f"Error en iteraci贸n: {str(exc)}")
235
 
236
+
237
  # --- 3) Mostrar diagrama de iteraci贸n debajo ---
238
  if arc_state["iteration_diagram"]:
239
  st.markdown("<hr class='divider'>", unsafe_allow_html=True)
240
+ st.markdown(f"#### {morpho_t.get('arc_diagram_iteration_label', 'Diagrama de Arco (Iteraci贸n)')}")
241
+ st.write(arc_state["iteration_diagram"], unsafe_allow_html=True)