Cambiar forma en la que se agregan cursos a miHorario

master
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";
const [cursosUsuario, setCursosUsuarios] = createState<ListaCursosUsuario>({
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}
/>
</Show>
</div>

View File

@ -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<ListaCursosUsuario>
}
export function Horarios(props: HorariosProps) {
@ -74,6 +75,7 @@ export function Horarios(props: HorariosProps) {
anio={anioActual()}
idHover={idHover}
setIdHover={setIdHover}
setCursosUsuarios={props.setCursosUsuarios}
/>
</div>
<div>

View File

@ -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;
});

View File

@ -86,19 +86,13 @@ type FnSetCursosUsuarios = SetStateFunction<ListaCursosUsuario>;
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);
}
});
}

View File

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