Incorporar CursosElem a Mi Horario

master
Araozu 2021-03-17 19:03:10 -05:00
parent a586c780ca
commit f3fffe25e5
4 changed files with 48 additions and 37 deletions

View File

@ -120,7 +120,11 @@ export function ContenedorHorarios() {
return <div className={css(e().contenedor)}> return <div className={css(e().contenedor)}>
<div> <div>
<MiHorario estadoLayout={estadoLayout()} setEstadoLayout={setEstadoLayout} cursosUsuario={cursosUsuario}/> <MiHorario estadoLayout={estadoLayout()}
setEstadoLayout={setEstadoLayout}
cursosUsuario={cursosUsuario}
fnAgregarCurso={agregarCursoUsuario}
/>
</div> </div>
<div> <div>
<Show when={datosCargados()}> <Show when={datosCargados()}>

View File

@ -19,6 +19,9 @@ const e = StyleSheet.create({
display: "inline-block", display: "inline-block",
verticalAlign: "top" verticalAlign: "top"
}, },
cursoOculto: {
display: "none"
},
botonTexto: { botonTexto: {
padding: "0.25rem 0.35rem", padding: "0.25rem 0.35rem",
borderRadius: "5px" borderRadius: "5px"
@ -31,7 +34,8 @@ interface Props {
fnAgregarCurso: (c: Curso) => void, fnAgregarCurso: (c: Curso) => void,
listaCursosUsuario: ListaCursosUsuario, listaCursosUsuario: ListaCursosUsuario,
idHover: () => string, idHover: () => string,
setIdHover: (v: string) => string setIdHover: (v: string) => string,
esCursoMiHorario: boolean
} }
function IndicadorGrupo(props: { nombre: string, esLab: boolean, idParcial: string, setIdHover: (v: string) => string }) { function IndicadorGrupo(props: { nombre: string, esLab: boolean, idParcial: string, setIdHover: (v: string) => string }) {
@ -68,9 +72,11 @@ export function CursosElem(props: Props) {
const claseCursoAgregado = css( const claseCursoAgregado = css(
e.contenedorCurso, e.contenedorCurso,
estilosGlobales.contenedor, estilosGlobales.contenedor,
estilosGlobales.contenedorCursorActivo, !props.esCursoMiHorario && estilosGlobales.contenedorCursorActivo,
); );
const claseCursoOculto = css(e.cursoOculto);
return <> return <>
<For each={Object.entries(props.dataAnio)}> <For each={Object.entries(props.dataAnio)}>
{([_, datosCurso]) => { {([_, datosCurso]) => {
@ -90,10 +96,14 @@ export function CursosElem(props: Props) {
: `Agregar a mi horario` : `Agregar a mi horario`
); );
const claseMemo = createMemo(() => cursoAgregadoMemo() const claseMemo = createMemo(() => {
if (props.esCursoMiHorario && datosCurso.oculto) {
return claseCursoOculto
}
return cursoAgregadoMemo()
? claseCursoAgregado ? claseCursoAgregado
: claseCursoNoAgregado : claseCursoNoAgregado
); });
const profesoresTeoria = createMemo(() => agruparProfesores(datosCurso.Teoria)); const profesoresTeoria = createMemo(() => agruparProfesores(datosCurso.Teoria));
const profesoresLab = createMemo(() => agruparProfesores(datosCurso.Laboratorio ?? {})); const profesoresLab = createMemo(() => agruparProfesores(datosCurso.Laboratorio ?? {}));

View File

@ -77,13 +77,13 @@ export function Horarios(props: HorariosProps) {
/> />
</div> </div>
<div> <div>
<CursosElem <CursosElem dataAnio={dataTabla()}
dataAnio={dataTabla()}
anioActual={anioActual} anioActual={anioActual}
fnAgregarCurso={props.fnAgregarCurso} fnAgregarCurso={props.fnAgregarCurso}
listaCursosUsuario={props.listaCursosUsuario} listaCursosUsuario={props.listaCursosUsuario}
idHover={idHover} idHover={idHover}
setIdHover={setIdHover} setIdHover={setIdHover}
esCursoMiHorario={false}
/> />
</div> </div>
</Match> </Match>

View File

@ -3,27 +3,17 @@ import { StyleSheet, css } from "aphrodite";
import { Tabla } from "./Tabla"; import { Tabla } from "./Tabla";
import { mostrarDescansos } from "../Store"; import { mostrarDescansos } from "../Store";
import { EstadoLayout } from "./ContenedorHorarios"; import { EstadoLayout } from "./ContenedorHorarios";
import { Switch, Match, For, createMemo } from "solid-js"; import { Switch, Match, For, createMemo, createSignal } from "solid-js";
import { BotonMaxMin } from "./BotonMaxMin"; import { BotonMaxMin } from "./BotonMaxMin";
import { BotonIcono } from "./BotonIcono"; import { BotonIcono } from "./BotonIcono";
import { Cursos, ListaCursosUsuario } from "../types/DatosHorario"; import { Curso, Cursos, ListaCursosUsuario } from "../types/DatosHorario";
import { CursosElem } from "./CursosElem";
interface MiHorarioProps { interface MiHorarioProps {
estadoLayout: EstadoLayout, estadoLayout: EstadoLayout,
setEstadoLayout: (v: EstadoLayout) => EstadoLayout, setEstadoLayout: (v: EstadoLayout) => EstadoLayout,
cursosUsuario: ListaCursosUsuario cursosUsuario: ListaCursosUsuario,
} fnAgregarCurso: (c: Curso) => void,
function Horario(props: { cursosUsuario: ListaCursosUsuario }) {
return <div>
<For each={props.cursosUsuario.cursos}>
{c => {
return <div>
<p>{c.abreviado} - {c.nombre}</p>
</div>
}}
</For>
</div>
} }
const e = StyleSheet.create({ const e = StyleSheet.create({
@ -40,6 +30,7 @@ const e = StyleSheet.create({
}); });
export function MiHorario(props: MiHorarioProps) { export function MiHorario(props: MiHorarioProps) {
const [idHover, setIdHover] = createSignal("");
const datosMiHorario = createMemo(() => { const datosMiHorario = createMemo(() => {
const obj: Cursos = {}; const obj: Cursos = {};
@ -119,13 +110,19 @@ export function MiHorario(props: MiHorarioProps) {
<Tabla data={datosMiHorario()} <Tabla data={datosMiHorario()}
anio={"Mi horario"} anio={"Mi horario"}
version={1} version={1}
idHover={() => ""} idHover={idHover}
setIdHover={(v: string) => ""} setIdHover={setIdHover}
/> />
<Horario cursosUsuario={props.cursosUsuario}/>
</div> </div>
<CursosElem anioActual={() => "Mi horario"}
dataAnio={datosMiHorario()}
fnAgregarCurso={props.fnAgregarCurso}
listaCursosUsuario={props.cursosUsuario}
idHover={idHover}
setIdHover={setIdHover}
esCursoMiHorario={true}
/>
</Match> </Match>
<Match when={props.estadoLayout === "MaxHorarios"}> <Match when={props.estadoLayout === "MaxHorarios"}>
<BotonMaxMin <BotonMaxMin