Resaltar todas las horas de un curso-grupo y permitir cambiar de año
This commit is contained in:
parent
aa9d09cc9c
commit
01cd27c8cc
@ -7,7 +7,7 @@ import { horas } from "../Store";
|
|||||||
|
|
||||||
export function Horarios(props: { data: DatosHorario }) {
|
export function Horarios(props: { data: DatosHorario }) {
|
||||||
|
|
||||||
const [anioActual, setAnioActual] = createSignal("3er año");
|
const [anioActual, setAnioActual] = createSignal("1er año");
|
||||||
|
|
||||||
const elAnios = <For each={Object.entries(props.data.años)}>
|
const elAnios = <For each={Object.entries(props.data.años)}>
|
||||||
{([nombre]) => {
|
{([nombre]) => {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { StyleSheet, css } from "aphrodite";
|
import { StyleSheet, css } from "aphrodite";
|
||||||
import { createEffect, createMemo, createState, For } from "solid-js";
|
import { createEffect, createMemo, createSignal, createState, For } from "solid-js";
|
||||||
import { estilosGlobales } from "../Estilos";
|
import { estilosGlobales } from "../Estilos";
|
||||||
import { AnioData } from "../types/DatosHorario";
|
import { AnioData } from "../types/DatosHorario";
|
||||||
import { dias, horas, horasDescanso } from "../Store";
|
import { dias, horas, horasDescanso } from "../Store";
|
||||||
@ -10,6 +10,9 @@ const e = StyleSheet.create({
|
|||||||
zIndex: 2,
|
zIndex: 2,
|
||||||
transition: "background-color 250ms",
|
transition: "background-color 250ms",
|
||||||
marginLeft: "4rem",
|
marginLeft: "4rem",
|
||||||
|
display: "flex",
|
||||||
|
alignItems: "center",
|
||||||
|
minHeight: "1rem",
|
||||||
":hover": {
|
":hover": {
|
||||||
// backgroundColor: "rgba(200, 200, 200, 0.25)"
|
// backgroundColor: "rgba(200, 200, 200, 0.25)"
|
||||||
}
|
}
|
||||||
@ -43,24 +46,16 @@ const e = StyleSheet.create({
|
|||||||
padding: "0.25rem 0.35rem",
|
padding: "0.25rem 0.35rem",
|
||||||
cursor: "pointer",
|
cursor: "pointer",
|
||||||
borderRadius: "5px",
|
borderRadius: "5px",
|
||||||
":hover": {
|
transition: "background-color 100ms"
|
||||||
backgroundColor: "rgba(200, 200, 200, 0.25)"
|
},
|
||||||
}
|
celdaCursoActiva: {
|
||||||
|
backgroundColor: "rgba(200, 200, 200, 0.25)"
|
||||||
},
|
},
|
||||||
celdaCursoTeoria: {
|
celdaCursoTeoria: {
|
||||||
fontWeight: "bold"
|
fontWeight: "bold"
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
TODO: Configurar state.
|
|
||||||
Que el padre pase un objeto state con todos los cursos e info adicional sobre los cursos:
|
|
||||||
Si seleccionado,
|
|
||||||
si solo teoria o lab,
|
|
||||||
cual grupo
|
|
||||||
y aqui resaltar adecuadamente.
|
|
||||||
*/
|
|
||||||
|
|
||||||
interface DataProcesada {
|
interface DataProcesada {
|
||||||
[hora: string]: {
|
[hora: string]: {
|
||||||
[dia: string]: {
|
[dia: string]: {
|
||||||
@ -134,24 +129,14 @@ const procesarAnio = (data: AnioData, anio: string, version: number) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function Tabla(props: { data: AnioData, anio: string, version: number }) {
|
export function Tabla(props: { data: AnioData, anio: string, version: number }) {
|
||||||
|
|
||||||
const anio = () => props.anio.substring(0, props.anio.indexOf(" "));
|
const anio = () => props.anio.substring(0, props.anio.indexOf(" "));
|
||||||
const data = createMemo(() => procesarAnio(props.data, anio(), props.version));
|
const data = createMemo(() => procesarAnio(props.data, anio(), props.version));
|
||||||
|
const [idHover, setIdHover] = createSignal("");
|
||||||
|
|
||||||
return <div>
|
const celdas = createMemo(() => {
|
||||||
<div className={css(e.fila)}>
|
console.log("Renderizar tabla", props.anio);
|
||||||
<For each={dias}>
|
return <For each={horas}>
|
||||||
{dia =>
|
|
||||||
<div className={css(e.celdaComun, estilosGlobales.inlineBlock, e.celdaDia)}>
|
|
||||||
{dia}
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
</For>
|
|
||||||
</div>
|
|
||||||
<For each={horas}>
|
|
||||||
{hora => {
|
{hora => {
|
||||||
const c = anio();
|
|
||||||
console.log(c);
|
|
||||||
return <div style={{position: "relative"}}>
|
return <div style={{position: "relative"}}>
|
||||||
<div className={css(e.celdaHora, estilosGlobales.inlineBlock)}>
|
<div className={css(e.celdaHora, estilosGlobales.inlineBlock)}>
|
||||||
{hora.substring(0, 5)}
|
{hora.substring(0, 5)}
|
||||||
@ -166,11 +151,18 @@ export function Tabla(props: { data: AnioData, anio: string, version: number })
|
|||||||
|
|
||||||
return <div className={css(e.celdaComun, estilosGlobales.inlineBlock)}>
|
return <div className={css(e.celdaComun, estilosGlobales.inlineBlock)}>
|
||||||
<For each={datos}>
|
<For each={datos}>
|
||||||
{({txt, esLab}) =>
|
{({id, txt, esLab}) => {
|
||||||
<span className={css(e.celdaCurso, !esLab && e.celdaCursoTeoria)}>
|
|
||||||
|
const clases = () => {
|
||||||
|
const clases = [e.celdaCurso, !esLab && e.celdaCursoTeoria];
|
||||||
|
if (id === idHover()) clases.push(e.celdaCursoActiva);
|
||||||
|
return css(...clases);
|
||||||
|
};
|
||||||
|
|
||||||
|
return <span className={clases()} onMouseEnter={() => setIdHover(id)}>
|
||||||
{txt}
|
{txt}
|
||||||
</span>
|
</span>;
|
||||||
}
|
}}
|
||||||
</For>
|
</For>
|
||||||
</div>;
|
</div>;
|
||||||
}}
|
}}
|
||||||
@ -180,5 +172,18 @@ export function Tabla(props: { data: AnioData, anio: string, version: number })
|
|||||||
</div>;
|
</div>;
|
||||||
}}
|
}}
|
||||||
</For>
|
</For>
|
||||||
|
});
|
||||||
|
|
||||||
|
return <div>
|
||||||
|
<div className={css(e.fila)}>
|
||||||
|
<For each={dias}>
|
||||||
|
{dia =>
|
||||||
|
<div className={css(e.celdaComun, estilosGlobales.inlineBlock, e.celdaDia)}>
|
||||||
|
{dia}
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</For>
|
||||||
|
</div>
|
||||||
|
{celdas()}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user