Cambiar forma en la que se agregan cursos a miHorario
This commit is contained in:
parent
ca149399c4
commit
e3d4c6da40
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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;
|
||||
});
|
||||
|
@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ export interface Curso {
|
||||
}
|
||||
|
||||
export interface ListaCursosUsuario {
|
||||
sigIndice: number,
|
||||
cursos: Curso[]
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user