Cambiar forma en la que se agregan cursos a miHorario

This commit is contained in:
Araozu 2021-03-24 12:29:03 -05:00
parent ca149399c4
commit e3d4c6da40
5 changed files with 24 additions and 24 deletions

View File

@ -64,16 +64,20 @@ const ElemCargando = () =>
export type EstadoLayout = "MaxPersonal" | "Normal" | "MaxHorarios"; export type EstadoLayout = "MaxPersonal" | "Normal" | "MaxHorarios";
const [cursosUsuario, setCursosUsuarios] = createState<ListaCursosUsuario>({ const [cursosUsuario, setCursosUsuarios] = createState<ListaCursosUsuario>({
sigIndice: 0,
cursos: [] cursos: []
}); });
// TODO: Agregar un indice del ultimo curso
const agregarCursoUsuario = (curso: Curso) => { const agregarCursoUsuario = (curso: Curso) => {
// Si el horario ya se habia agregado, ocultarlo // Si el horario ya se habia agregado, ocultarlo
const cursoActualIndex = cursosUsuario.cursos.findIndex(x => x.nombre === curso.nombre); const cursoActualIndex = cursosUsuario.cursos.findIndex(x => x.nombre === curso.nombre);
if (cursoActualIndex !== -1) { if (cursoActualIndex !== -1) {
setCursosUsuarios("cursos", cursoActualIndex, "oculto", x => !x); setCursosUsuarios("cursos", cursoActualIndex, "oculto", x => !x);
} else { } 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} setEstadoLayout={setEstadoLayout}
fnAgregarCurso={agregarCursoUsuario} fnAgregarCurso={agregarCursoUsuario}
listaCursosUsuario={cursosUsuario} listaCursosUsuario={cursosUsuario}
setCursosUsuarios={setCursosUsuarios}
/> />
</Show> </Show>
</div> </div>

View File

@ -1,5 +1,5 @@
import { Curso, CursoRaw, DatosHorario, DatosHorarioRaw, ListaCursosUsuario } from "../types/DatosHorario"; 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 { css } from "aphrodite";
import { estilosGlobales } from "../Estilos"; import { estilosGlobales } from "../Estilos";
import { Tabla } from "./Tabla"; import { Tabla } from "./Tabla";
@ -13,7 +13,8 @@ interface HorariosProps {
estadoLayout: EstadoLayout, estadoLayout: EstadoLayout,
setEstadoLayout: (v: EstadoLayout) => EstadoLayout, setEstadoLayout: (v: EstadoLayout) => EstadoLayout,
fnAgregarCurso: (c: Curso) => void, fnAgregarCurso: (c: Curso) => void,
listaCursosUsuario: ListaCursosUsuario listaCursosUsuario: ListaCursosUsuario,
setCursosUsuarios: SetStateFunction<ListaCursosUsuario>
} }
export function Horarios(props: HorariosProps) { export function Horarios(props: HorariosProps) {
@ -74,6 +75,7 @@ export function Horarios(props: HorariosProps) {
anio={anioActual()} anio={anioActual()}
idHover={idHover} idHover={idHover}
setIdHover={setIdHover} setIdHover={setIdHover}
setCursosUsuarios={props.setCursosUsuarios}
/> />
</div> </div>
<div> <div>

View File

@ -33,11 +33,12 @@ const e = StyleSheet.create({
export function MiHorario(props: MiHorarioProps) { export function MiHorario(props: MiHorarioProps) {
const [idHover, setIdHover] = createSignal(""); const [idHover, setIdHover] = createSignal("");
// TODO: Cambiar esto para cambiar 'seleccionado' aqui
// Simplificar para mantener reactividad (?) // Simplificar para mantener reactividad (?)
const datosMiHorario = createMemo(() => { const datosMiHorario = createMemo(() => {
const obj: Cursos = {}; const obj: Cursos = {};
props.cursosUsuario.cursos.forEach(x => { props.cursosUsuario.cursos.forEach((x, i) => {
obj[x.nombre] = {...x}; obj[i] = x;
}); });
return obj; return obj;
}); });

View File

@ -86,19 +86,13 @@ type FnSetCursosUsuarios = SetStateFunction<ListaCursosUsuario>;
const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsuarios: FnSetCursosUsuarios) => { const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsuarios: FnSetCursosUsuarios) => {
const obj: DataProcesada = {}; const obj: DataProcesada = {};
for (const cursoKey in data) { for (const [indiceCurso, curso] of Object.entries(data)) {
const curso = data[cursoKey];
if (curso.oculto) continue; if (curso.oculto) continue;
const nombreAbreviado = curso.abreviado; const nombreAbreviado = curso.abreviado;
for (const grupoStr in curso.Teoria) { for (const [grupoStr, grupo] of Object.entries(curso.Teoria)) {
const grupo = curso.Teoria[grupoStr]; for (const hora of grupo.Horas) {
if (!grupo) continue;
for (const horaKey in grupo.Horas) {
const hora = grupo.Horas[horaKey];
const dia = hora.substring(0, 2); const dia = hora.substring(0, 2);
const horas = hora.substring(2, 4); const horas = hora.substring(2, 4);
const minutos = hora.substr(4); const minutos = hora.substr(4);
@ -119,19 +113,13 @@ const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsua
id, id,
txt: `${nombreAbreviado} ${grupoStr}`, txt: `${nombreAbreviado} ${grupoStr}`,
esLab: false, esLab: false,
seleccionado: grupo.seleccionado, seleccionado: false,
fnSeleccionar: () => { fnSeleccionar: () => {}
// setCursosUsuarios("cursos", );
console.log(":D");
}
}); });
} }
} }
for (const grupoStr in curso.Laboratorio) { for (const [grupoStr, grupo] of Object.entries(curso.Laboratorio ?? {})) {
const grupo = curso.Teoria[grupoStr];
if (!grupo) continue;
for (const hora of grupo.Horas) { for (const hora of grupo.Horas) {
const dia = hora.substring(0, 2); const dia = hora.substring(0, 2);
const horas = hora.substring(2, 4); const horas = hora.substring(2, 4);
@ -155,7 +143,10 @@ const procesarAnio = (data: Cursos, anio: string, version: number, setCursosUsua
esLab: true, esLab: true,
seleccionado: grupo.seleccionado, seleccionado: grupo.seleccionado,
fnSeleccionar: () => { fnSeleccionar: () => {
console.log(":D (lab)");
/// @ts-ignore
setCursosUsuarios("cursos", parseInt(indiceCurso), "Laboratorio", grupoStr, "seleccionado", true);
console.log("Seleccionando...", indiceCurso);
} }
}); });
} }

View File

@ -45,6 +45,7 @@ export interface Curso {
} }
export interface ListaCursosUsuario { export interface ListaCursosUsuario {
sigIndice: number,
cursos: Curso[] cursos: Curso[]
} }