Update modules/ui.py
Browse files- modules/ui.py +25 -48
modules/ui.py
CHANGED
|
@@ -79,13 +79,11 @@ def display_chat_interface():
|
|
| 79 |
|
| 80 |
##########################################################################
|
| 81 |
|
| 82 |
-
def display_student_progress(
|
| 83 |
-
st.title(f"Progreso de {username}")
|
| 84 |
-
|
| 85 |
-
student_data = get_student_data(username)
|
| 86 |
|
| 87 |
if student_data and student_data['entries_count'] > 0:
|
| 88 |
-
st.success(f"Datos obtenidos exitosamente para {username}")
|
| 89 |
|
| 90 |
# Mostrar estadísticas generales
|
| 91 |
st.header("Estadísticas Generales")
|
|
@@ -97,11 +95,7 @@ def display_student_progress(username):
|
|
| 97 |
fig, ax = plt.subplots(figsize=(10, 6))
|
| 98 |
categories = list(student_data['word_count'].keys())
|
| 99 |
counts = list(student_data['word_count'].values())
|
| 100 |
-
|
| 101 |
-
# Traducir las categorías
|
| 102 |
-
translated_categories = [POS_TRANSLATIONS.get(cat, cat) for cat in categories]
|
| 103 |
-
|
| 104 |
-
ax.bar(translated_categories, counts)
|
| 105 |
ax.set_xlabel('Categoría')
|
| 106 |
ax.set_ylabel('Conteo Total')
|
| 107 |
ax.set_title('Conteo de Palabras por Categoría Gramatical')
|
|
@@ -110,49 +104,32 @@ def display_student_progress(username):
|
|
| 110 |
else:
|
| 111 |
st.info("No hay datos de conteo de palabras disponibles.")
|
| 112 |
|
| 113 |
-
#
|
| 114 |
-
st.subheader("Evolución del Conteo de Palabras")
|
| 115 |
-
evolution_data = {}
|
| 116 |
-
for entry in student_data['entries']:
|
| 117 |
-
for category, count in entry['word_count'].items():
|
| 118 |
-
if category not in evolution_data:
|
| 119 |
-
evolution_data[category] = []
|
| 120 |
-
evolution_data[category].append(count)
|
| 121 |
-
|
| 122 |
-
if evolution_data:
|
| 123 |
-
fig, ax = plt.subplots(figsize=(10, 6))
|
| 124 |
-
for category, counts in evolution_data.items():
|
| 125 |
-
ax.plot(range(1, len(counts) + 1), counts, label=POS_TRANSLATIONS.get(category, category))
|
| 126 |
-
ax.set_xlabel('Número de Entrada')
|
| 127 |
-
ax.set_ylabel('Conteo de Palabras')
|
| 128 |
-
ax.set_title('Evolución del Conteo de Palabras por Categoría')
|
| 129 |
-
ax.legend()
|
| 130 |
-
st.pyplot(fig)
|
| 131 |
-
else:
|
| 132 |
-
st.info("No hay suficientes datos para mostrar la evolución del conteo de palabras.")
|
| 133 |
-
|
| 134 |
-
# Lista colapsable de diagramas de arco
|
| 135 |
st.header("Diagramas de Arco")
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
| 139 |
-
|
| 140 |
-
with st.expander(f"Diagrama de Arco - {timestamp.strftime('%Y-%m-%d %H:%M:%S')}"):
|
| 141 |
st.write(entry['arc_diagrams'][0], unsafe_allow_html=True)
|
| 142 |
-
else:
|
| 143 |
-
st.info("No hay diagramas de arco disponibles.")
|
| 144 |
|
| 145 |
-
#
|
| 146 |
st.header("Diagramas de Red")
|
| 147 |
-
|
| 148 |
-
|
| 149 |
-
|
| 150 |
-
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
|
|
|
|
|
|
|
| 155 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
else:
|
| 157 |
st.warning("No se encontraron datos para este estudiante.")
|
| 158 |
st.info("Intenta realizar algunos análisis de texto primero.")
|
|
|
|
| 79 |
|
| 80 |
##########################################################################
|
| 81 |
|
| 82 |
+
def display_student_progress(student_data):
|
| 83 |
+
st.title(f"Progreso de {student_data['username']}")
|
|
|
|
|
|
|
| 84 |
|
| 85 |
if student_data and student_data['entries_count'] > 0:
|
| 86 |
+
st.success(f"Datos obtenidos exitosamente para {student_data['username']}")
|
| 87 |
|
| 88 |
# Mostrar estadísticas generales
|
| 89 |
st.header("Estadísticas Generales")
|
|
|
|
| 95 |
fig, ax = plt.subplots(figsize=(10, 6))
|
| 96 |
categories = list(student_data['word_count'].keys())
|
| 97 |
counts = list(student_data['word_count'].values())
|
| 98 |
+
ax.bar(categories, counts)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 99 |
ax.set_xlabel('Categoría')
|
| 100 |
ax.set_ylabel('Conteo Total')
|
| 101 |
ax.set_title('Conteo de Palabras por Categoría Gramatical')
|
|
|
|
| 104 |
else:
|
| 105 |
st.info("No hay datos de conteo de palabras disponibles.")
|
| 106 |
|
| 107 |
+
# Diagramas de Arco (consolidados)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 108 |
st.header("Diagramas de Arco")
|
| 109 |
+
with st.expander("Ver todos los Diagramas de Arco"):
|
| 110 |
+
for i, entry in enumerate(student_data['entries']):
|
| 111 |
+
if 'arc_diagrams' in entry and entry['arc_diagrams']:
|
| 112 |
+
st.subheader(f"Entrada {i+1} - {entry['timestamp']}")
|
|
|
|
| 113 |
st.write(entry['arc_diagrams'][0], unsafe_allow_html=True)
|
|
|
|
|
|
|
| 114 |
|
| 115 |
+
# Diagramas de Red (consolidados)
|
| 116 |
st.header("Diagramas de Red")
|
| 117 |
+
with st.expander("Ver todos los Diagramas de Red"):
|
| 118 |
+
for i, entry in enumerate(student_data['entries']):
|
| 119 |
+
if 'network_diagram' in entry and entry['network_diagram']:
|
| 120 |
+
st.subheader(f"Entrada {i+1} - {entry['timestamp']}")
|
| 121 |
+
try:
|
| 122 |
+
# Decodificar la imagen base64
|
| 123 |
+
image_bytes = base64.b64decode(entry['network_diagram'])
|
| 124 |
+
st.image(image_bytes)
|
| 125 |
+
except Exception as e:
|
| 126 |
+
st.error(f"Error al mostrar el diagrama de red: {str(e)}")
|
| 127 |
|
| 128 |
+
# Mostrar entradas recientes
|
| 129 |
+
st.header("Entradas Recientes")
|
| 130 |
+
for i, entry in enumerate(student_data['entries'][:5]): # Mostrar las 5 entradas más recientes
|
| 131 |
+
with st.expander(f"Entrada {i+1} - {entry['timestamp']}"):
|
| 132 |
+
st.write(entry['text'])
|
| 133 |
else:
|
| 134 |
st.warning("No se encontraron datos para este estudiante.")
|
| 135 |
st.info("Intenta realizar algunos análisis de texto primero.")
|