AIdeaText commited on
Commit
110113e
·
verified ·
1 Parent(s): a689749

Update modules/ui/ui.py

Browse files
Files changed (1) hide show
  1. modules/ui/ui.py +104 -0
modules/ui/ui.py CHANGED
@@ -368,6 +368,110 @@ def display_videos_and_info(lang_code, t):
368
  ####################################
369
  ####################################
370
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  # Manejar el contenido de cada tab
372
  for index, tab in enumerate(tabs):
373
  with tab:
 
368
  ####################################
369
  ####################################
370
 
371
+ def user_page(lang_code, t):
372
+ logger.info(f"Entrando en user_page para el estudiante: {st.session_state.username}")
373
+
374
+ # Inicializar el tab seleccionado si no existe
375
+ if 'selected_tab' not in st.session_state:
376
+ st.session_state.selected_tab = 0
377
+
378
+ # Inicializar el estado del análisis en vivo
379
+ if 'semantic_live_active' not in st.session_state:
380
+ st.session_state.semantic_live_active = False
381
+
382
+ # Manejar la carga inicial de datos del usuario
383
+ if 'user_data' not in st.session_state:
384
+ with st.spinner(t.get('loading_data', "Cargando tus datos...")):
385
+ try:
386
+ st.session_state.user_data = get_student_morphosyntax_data(st.session_state.username)
387
+ st.session_state.last_data_fetch = datetime.now(timezone.utc).isoformat()
388
+ except Exception as e:
389
+ logger.error(f"Error al obtener datos del usuario: {str(e)}")
390
+ st.error(t.get('data_load_error', "Hubo un problema al cargar tus datos. Por favor, intenta recargar la página."))
391
+ return
392
+
393
+ logger.info(f"Idioma actual: {st.session_state.lang_code}")
394
+ logger.info(f"Modelos NLP cargados: {'nlp_models' in st.session_state}")
395
+
396
+ # Configuración de idiomas disponibles
397
+ languages = {'Español': 'es', 'English': 'en', 'Français': 'fr'}
398
+
399
+ # Estilos CSS personalizados
400
+ st.markdown("""
401
+ <style>
402
+ .stSelectbox > div > div {
403
+ padding-top: 0px;
404
+ }
405
+ .stButton > button {
406
+ padding-top: 2px;
407
+ margin-top: 0px;
408
+ }
409
+ div[data-testid="stHorizontalBlock"] > div:nth-child(3) {
410
+ display: flex;
411
+ justify-content: flex-end;
412
+ align-items: center;
413
+ }
414
+ </style>
415
+ """, unsafe_allow_html=True)
416
+
417
+ # Barra superior con información del usuario y controles
418
+ with st.container():
419
+ col1, col2, col3 = st.columns([2, 2, 1])
420
+ with col1:
421
+ st.markdown(f"<h3 style='margin-bottom: 0; padding-top: 10px;'>{t['welcome']}, {st.session_state.username}</h3>",
422
+ unsafe_allow_html=True)
423
+ with col2:
424
+ selected_lang = st.selectbox(
425
+ t['select_language'],
426
+ list(languages.keys()),
427
+ index=list(languages.values()).index(st.session_state.lang_code),
428
+ key=f"language_selector_{st.session_state.username}_{st.session_state.lang_code}"
429
+ )
430
+ new_lang_code = languages[selected_lang]
431
+ if st.session_state.lang_code != new_lang_code:
432
+ st.session_state.lang_code = new_lang_code
433
+ st.rerun()
434
+ with col3:
435
+ if st.button(t['logout'],
436
+ key=f"logout_button_{st.session_state.username}_{st.session_state.lang_code}"):
437
+ st.session_state.clear()
438
+ st.rerun()
439
+
440
+ st.markdown("---")
441
+
442
+ # Asegurarse de que tenemos las traducciones del chatbot
443
+ chatbot_t = t.get('CHATBOT_TRANSLATIONS', {}).get(lang_code, {})
444
+
445
+ # Mostrar chatbot en sidebar
446
+ display_sidebar_chat(lang_code, chatbot_t)
447
+
448
+ # Inicializar estados para todos los tabs
449
+ if 'tab_states' not in st.session_state:
450
+ st.session_state.tab_states = {
451
+ 'current_situation_active': False,
452
+ 'morpho_active': False,
453
+ 'semantic_live_active': False,
454
+ 'semantic_active': False,
455
+ 'discourse_live_active': False,
456
+ 'discourse_active': False,
457
+ 'activities_active': False,
458
+ 'feedback_active': False
459
+ }
460
+
461
+ # Sistema de tabs
462
+ tab_names = [
463
+ t.get('current_situation_tab', "Mi Situación Actual"),
464
+ t.get('morpho_tab', 'Análisis Morfosintáctico'),
465
+ t.get('semantic_live_tab', 'Análisis Semántico Vivo'),
466
+ t.get('semantic_tab', 'Análisis Semántico'),
467
+ t.get('discourse_live_tab', 'Análisis de Discurso Vivo'),
468
+ t.get('discourse_tab', 'Análsis de Discurso'),
469
+ t.get('activities_tab', 'Mis Actividades'),
470
+ t.get('feedback_tab', 'Formulario de Comentarios')
471
+ ]
472
+
473
+ tabs = st.tabs(tab_names)
474
+
475
  # Manejar el contenido de cada tab
476
  for index, tab in enumerate(tabs):
477
  with tab: