Skip to main content

Panel Actividades

Descripción​

Vista de gestión de actividades educativas. Permite crear, editar, buscar, activar/desactivar y listar actividades con soporte para recursos multimedia, preguntas, tips motivacionales, juegos integrados y programación por fecha/semana/año.

Componentes​

ComponenteRutaPropósito
ActivityDataPagecomponents/activity/data-page.tsxPágina de listado con tabla, paginación y búsqueda
ActivityComponentcomponents/activity/activity.tsxFormulario de creación/edición
table.tsxcomponents/activity/table.tsxDeprecado — tabla inline vía ListPageLayout

ActivityDataPage​

Usa ListPageLayout como layout genérico. Columnas:

ColumnaRender
Títuloa.title, clase min-w-[430px]
DificultadPuntos ● color ámbar según a.difficulty (1 a 5)
RecursosConteo: a.resources?.length
PreguntasConteo: a.questions?.length
ProgramaciónFecha localizada desde a.schedule.date
EstadoBadge Activo/Inactivo según a.isActive

Acciones disponibles: ✏️ Editar (abre tab /Actividad/{id}) y 🔁 Activar/Desactivar (modal de confirmación con variante danger/warning).

La paginación usa estado local currentPage (default 1) y pageSize (default 12). La búsqueda se delega al componente Search con searchEntity="activity".

ActivityComponent​

Formulario en tabs con las siguientes secciones envueltas en CardSection:

  1. Información Principal — Título, emoción (DropdownMenuButton con datos de getAllEmotions), dificultad numérica 1-5, toggle activo sí/no, descripción textarea.
  2. Programación — Fecha (datepicker), semana (number 1-53), año.
  3. Recursos Multimedia — Lista dinámica de recursos (video/audio) con URL, duración en segundos y autor.
  4. Preguntas — Lista dinámica de preguntas tipo abierta o múltiple. Las de tipo múltiple incluyen opciones con radio button para respuesta correcta.
  5. Tips de Apoyo Emocional — Mensajes con emoji, texto y categoría (start, question, wordsearch, matching, emotionbox, dicegame, complete).
  6. Juegos — Agregar juegos tipo WordSearch, MatchingConcepts, EmotionBox o DiceGame, cada uno con su formulario de configuración específico (WordSearchForm, MatchingConceptsForm, DiceGameForm, EmotionBoxForm).

Integración API​

FunciónMétodoUso
getAll(page, pageSize)GETCarga paginada de actividades
getActivityById(id)GETCarga datos para edición
createActivity(payload)POSTCrear nueva actividad
updateActivity(id, payload)PUTActualizar actividad existente
updateActivityStatus(id, isActive, data)PATCHActivar/desactivar
assignUser(activityId, userId)POSTAsignar usuario a actividad

Payload​

interface CreateActivityPayload {
title: string;
description?: string;
difficulty: number; // 1-5
isActive: boolean;
emotion: string; // ID de emoción
resources?: Resource[];
questions?: Question[];
tips?: Tip[];
games?: Game[];
schedule?: {
date: Date;
weekNumber: number;
year: number;
};
}