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.")
|