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";
|
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>
|
||||||
|
@ -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>
|
||||||
|
@ -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;
|
||||||
});
|
});
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -45,6 +45,7 @@ export interface Curso {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ListaCursosUsuario {
|
export interface ListaCursosUsuario {
|
||||||
|
sigIndice: number,
|
||||||
cursos: Curso[]
|
cursos: Curso[]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user