Saltar al contenido principal

Modal "Ver mi avance"

Componente: theme_cdigital
Figma: nodo 19723-3353
Alcance: 2 — Dashboard de aprendizaje
Estado: Estable

Propósito

Modal de progreso académico que el estudiante abre desde la vista de curso. Presenta en una sola pantalla todas las métricas de avance: progreso general, desempeño, actividades pendientes, racha de aprendizaje, progreso por módulo, últimas calificaciones y alertas académicas.

Arquitectura

core_renderer::course_progress_modal_data() ← datos desde local_pccntr8203403_dashboard
└── renderiza course_progress_modal.mustache
└── 7 cards de datos + cabecera con avatar del estudiante

La modal se abre con JavaScript nativo de Moodle (sin jQuery). El trigger es el banner informativo o un botón flotante en la vista de curso.

Dimensiones: 1020 px de ancho · cards de stats máx. 230 px (Figma 19723-3353).

Cards de datos

Todas las cards consumen datos de local_pccntr8203403_dashboard\data\course_stats.

#CardDatos claveMétodo de datos
1Mi avance generalPorcentaje de completación + anillo de progreso SVGget_user_progress()
2Mi desempeñoCalificación final del curso (fallback si no hay nota)get_user_course_grade()
3Actividades pendientesCantidad de actividades sin completar con fecha límite (lógica relativa invertida)get_pending_activities()
4Racha de aprendizajeDías consecutivos con actividad en logsget_learning_streak()
5Mi progreso por móduloProgreso por sección del curso con acordeón "Ver todos"get_user_module_progress()
6Últimas calificacionesLista de calificaciones recientes (módulo, nota, fecha)get_latest_grades()
7Alertas académicasAlertas activas ordenadas por severidadacademic_alerts::get_active_alerts()

La card de Actividades pendientes usa "lógica relativa invertida": muestra las actividades sin completar (no las completadas), ordenando primero las de entrega más próxima.

Cabecera de la modal

Muestra el nombre completo del estudiante y su foto de perfil (avatar). Si el usuario no tiene foto, se usa pix/hero-avatar.png como fallback. Se aplica validación de campos (nombre + imagen) para evitar estados vacíos.

Íconos de la modal

Consolidados en pix/Icon/ (sin prefijo icon-):

ÍconoArchivo
Archivo/actividadpix/Icon/archive.svg
Libro/módulopix/Icon/book.svg
Calendariopix/Icon/calendar-week.svg
Chevron (acordeón)pix/Icon/chevron-down.svg
Gráfico de líneaspix/Icon/line-chart.svg
Rachapix/Icon/meteor.svg
Calificacionespix/Icon/receipt.svg
Cerrar modalpix/Icon/x.svg
Copiar (purple)pix/Icon/copy-alt-purple.svg

Los íconos viven en pix/Icon/ (no en la raíz de pix/) para reflejar la estructura de capas de Figma.

Anillo de progreso

pix/progress-ring.svg — SVG animado que muestra el porcentaje de completación general. Se parametriza vía CSS custom properties desde el renderer.

Archivos clave

ArchivoDescripción
templates/course_progress_modal.mustacheTemplate principal (184 líneas)
classes/output/core_renderer.phpMétodo course_progress_modal_data()
scss/preset/cdigital.scss517+ líneas de estilos SCSS para la modal
pix/hero-avatar.pngAvatar fallback
pix/progress-ring.svgAnillo de progreso SVG
pix/Icon/*.svg9 íconos de la modal
lang/en/theme_cdigital.php · lang/es/theme_cdigital.phpStrings de la modal y de cada card

Ancho máximo del contenido del curso

Relacionado: el tema amplía el $course-content-maxwidth de Boost de 830 px a 1024 px (Figma 19723-2726) para alinear el contenido del curso con las dimensiones de la modal.

// Override previo al @import de Boost para respetar la variable
$course-content-maxwidth: 1024px;
@import 'preset/boost';