From e3d4c6da4053b4b71d8b744d9f1aaa32165588a7 Mon Sep 17 00:00:00 2001 From: Araozu Date: Wed, 24 Mar 2021 12:29:03 -0500 Subject: [PATCH] Cambiar forma en la que se agregan cursos a miHorario --- src/ContenedorHorarios/ContenedorHorarios.tsx | 7 ++++- src/ContenedorHorarios/Horarios.tsx | 6 ++-- src/ContenedorHorarios/MiHorario.tsx | 5 ++-- src/ContenedorHorarios/Tabla.tsx | 29 +++++++------------ src/types/DatosHorario.ts | 1 + 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/ContenedorHorarios/ContenedorHorarios.tsx b/src/ContenedorHorarios/ContenedorHorarios.tsx index 56fc0dd..21ea3e7 100755 --- a/src/ContenedorHorarios/ContenedorHorarios.tsx +++ b/src/ContenedorHorarios/ContenedorHorarios.tsx @@ -64,16 +64,20 @@ const ElemCargando = () => export type EstadoLayout = "MaxPersonal" | "Normal" | "MaxHorarios"; const [cursosUsuario, setCursosUsuarios] = createState({ + sigIndice: 0, cursos: [] }); +// TODO: Agregar un indice del ultimo curso const agregarCursoUsuario = (curso: Curso) => { // Si el horario ya se habia agregado, ocultarlo const cursoActualIndex = cursosUsuario.cursos.findIndex(x => x.nombre === curso.nombre); if (cursoActualIndex !== -1) { setCursosUsuarios("cursos", cursoActualIndex, "oculto", x => !x); } else { - setCursosUsuarios("cursos", a => [...a, curso]); + setCursosUsuarios("cursos", cursosUsuario.sigIndice, curso); + setCursosUsuarios("sigIndice", x => x + 1); + // setCursosUsuarios("cursos", a => [...a, curso]); } }; @@ -134,6 +138,7 @@ export function ContenedorHorarios() { setEstadoLayout={setEstadoLayout} fnAgregarCurso={agregarCursoUsuario} listaCursosUsuario={cursosUsuario} + setCursosUsuarios={setCursosUsuarios} /> diff --git a/src/ContenedorHorarios/Horarios.tsx b/src/ContenedorHorarios/Horarios.tsx index 343b5c1..de8eaae 100755 --- a/src/ContenedorHorarios/Horarios.tsx +++ b/src/ContenedorHorarios/Horarios.tsx @@ -1,5 +1,5 @@ import { Curso, CursoRaw, DatosHorario, DatosHorarioRaw, ListaCursosUsuario } from "../types/DatosHorario"; -import { For, createSignal, createMemo } from "solid-js"; +import { For, createSignal, createMemo, SetStateFunction } from "solid-js"; import { css } from "aphrodite"; import { estilosGlobales } from "../Estilos"; import { Tabla } from "./Tabla"; @@ -13,7 +13,8 @@ interface HorariosProps { estadoLayout: EstadoLayout, setEstadoLayout: (v: EstadoLayout) => EstadoLayout, fnAgregarCurso: (c: Curso) => void, - listaCursosUsuario: ListaCursosUsuario + listaCursosUsuario: ListaCursosUsuario, + setCursosUsuarios: SetStateFunction } export function Horarios(props: HorariosProps) { @@ -74,6 +75,7 @@ export function Horarios(props: HorariosProps) { anio={anioActual()} idHover={idHover} setIdHover={setIdHover} + setCursosUsuarios={props.setCursosUsuarios} />
diff --git a/src/ContenedorHorarios/MiHorario.tsx b/src/ContenedorHorarios/MiHorario.tsx index 9cfb0c2..570586b 100755 --- a/src/ContenedorHorarios/MiHorario.tsx +++ b/src/ContenedorHorarios/MiHorario.tsx @@ -33,11 +33,12 @@ const e = StyleSheet.create({ export function MiHorario(props: MiHorarioProps) { const [idHover, setIdHover] = createSignal(""); + // TODO: Cambiar esto para cambiar 'seleccionado' aqui // Simplificar para mantener reactividad (?) const datosMiHorario = createMemo(() => { const obj: Cursos = {}; - props.cursosUsuario.cursos.forEach(x => { - obj[x.nombre] = {...x}; + props.cursosUsuario.cursos.forEach((x, i) => { + obj[i] = x; }); return obj; }); diff --git a/src/ContenedorHorarios/Tabla.tsx b/src/ContenedorHorarios/Tabla.tsx index d39b630..91dabb2 100755 --- a/src/ContenedorHorarios/Tabla.tsx +++ b/src/ContenedorHorarios/Tabla.tsx @@ -86,19 +86,13 @@ type FnSetCursosUsuarios = SetStateFunction; const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsuarios: FnSetCursosUsuarios) => { const obj: DataProcesada = {}; - for (const cursoKey in data) { - const curso = data[cursoKey]; + for (const [indiceCurso, curso] of Object.entries(data)) { if (curso.oculto) continue; const nombreAbreviado = curso.abreviado; - for (const grupoStr in curso.Teoria) { - const grupo = curso.Teoria[grupoStr]; - if (!grupo) continue; - - for (const horaKey in grupo.Horas) { - const hora = grupo.Horas[horaKey]; - + for (const [grupoStr, grupo] of Object.entries(curso.Teoria)) { + for (const hora of grupo.Horas) { const dia = hora.substring(0, 2); const horas = hora.substring(2, 4); const minutos = hora.substr(4); @@ -119,19 +113,13 @@ const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsua id, txt: `${nombreAbreviado} ${grupoStr}`, esLab: false, - seleccionado: grupo.seleccionado, - fnSeleccionar: () => { - // setCursosUsuarios("cursos", ); - console.log(":D"); - } + seleccionado: false, + fnSeleccionar: () => {} }); } } - for (const grupoStr in curso.Laboratorio) { - const grupo = curso.Teoria[grupoStr]; - if (!grupo) continue; - + for (const [grupoStr, grupo] of Object.entries(curso.Laboratorio ?? {})) { for (const hora of grupo.Horas) { const dia = hora.substring(0, 2); const horas = hora.substring(2, 4); @@ -155,7 +143,10 @@ const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsua esLab: true, seleccionado: grupo.seleccionado, fnSeleccionar: () => { - console.log(":D (lab)"); + + /// @ts-ignore + setCursosUsuarios("cursos", parseInt(indiceCurso), "Laboratorio", grupoStr, "seleccionado", true); + console.log("Seleccionando...", indiceCurso); } }); } diff --git a/src/types/DatosHorario.ts b/src/types/DatosHorario.ts index 29c2c88..b6d4e0f 100755 --- a/src/types/DatosHorario.ts +++ b/src/types/DatosHorario.ts @@ -45,6 +45,7 @@ export interface Curso { } export interface ListaCursosUsuario { + sigIndice: number, cursos: Curso[] }