Implementar resaltado de grupos en la tabla y cursos

master
Araozu 2021-03-17 11:55:34 -05:00
parent 95d1e3b262
commit 41d36aae64
3 changed files with 31 additions and 7 deletions

View File

@ -27,13 +27,20 @@ const e = StyleSheet.create({
interface Props { interface Props {
dataAnio: AnioData, dataAnio: AnioData,
anioActual: () => string,
fnAgregarCurso: (c: Curso) => void, fnAgregarCurso: (c: Curso) => void,
listaCursosUsuario: ListaCursosUsuario listaCursosUsuario: ListaCursosUsuario,
idHover: () => string,
setIdHover: (v: string) => string
} }
function IndicadorGrupo(props: { nombre: string, esLab: boolean }) { function IndicadorGrupo(props: { nombre: string, esLab: boolean, idParcial: string, setIdHover: (v: string) => string }) {
const id = `${props.idParcial}_${props.esLab? 'L' : 'T'}_${props.nombre}`;
return <span className={css(e.botonTexto, estilosGlobales.contenedorCursor, estilosGlobales.contenedorCursorSoft)} return <span className={css(e.botonTexto, estilosGlobales.contenedorCursor, estilosGlobales.contenedorCursorSoft)}
style={props.esLab ? {"font-style": "italic"} : {"font-weight": "bold"}}> style={props.esLab ? {"font-style": "italic"} : {"font-weight": "bold"}}
onMouseEnter={() => props.setIdHover(id)}
onMouseLeave={() => props.setIdHover("")}
>
{props.esLab ? "L" : ""}{props.nombre} {props.esLab ? "L" : ""}{props.nombre}
</span> </span>
} }
@ -51,6 +58,7 @@ const agruparProfesores = (datos: { [k: string]: DatosVariante }) => {
}; };
export function Cursos(props: Props) { export function Cursos(props: Props) {
const anio = () => props.anioActual().substring(0, props.anioActual().indexOf(" "));
const claseCursoNoAgregado = css( const claseCursoNoAgregado = css(
e.contenedorCurso, e.contenedorCurso,
@ -67,6 +75,8 @@ export function Cursos(props: Props) {
<For each={Object.entries(props.dataAnio)}> <For each={Object.entries(props.dataAnio)}>
{([_, datosCurso]) => { {([_, datosCurso]) => {
const idCurso = `${anio()}_${datosCurso.abreviado}`;
const cursoAgregadoMemo = createMemo( const cursoAgregadoMemo = createMemo(
() => props.listaCursosUsuario.cursos.find(x => { () => props.listaCursosUsuario.cursos.find(x => {
return x.nombre === datosCurso.nombre && !x.oculto return x.nombre === datosCurso.nombre && !x.oculto
@ -102,7 +112,13 @@ export function Cursos(props: Props) {
{profesor}&nbsp; {profesor}&nbsp;
</span> </span>
<For each={grupos}> <For each={grupos}>
{x => <IndicadorGrupo nombre={x} esLab={false}/>} {x =>
<IndicadorGrupo nombre={x}
esLab={false}
idParcial={idCurso}
setIdHover={props.setIdHover}
/>
}
</For> </For>
</td> </td>
}} }}
@ -116,7 +132,13 @@ export function Cursos(props: Props) {
{profesor}&nbsp; {profesor}&nbsp;
</span> </span>
<For each={grupos}> <For each={grupos}>
{x => <IndicadorGrupo nombre={x} esLab={true}/>} {x =>
<IndicadorGrupo nombre={x}
esLab={true}
idParcial={idCurso}
setIdHover={props.setIdHover}
/>
}
</For> </For>
</td> </td>
}} }}

View File

@ -1,5 +1,5 @@
import { Curso, DatosHorario, ListaCursosUsuario } from "../types/DatosHorario"; import { Curso, DatosHorario, ListaCursosUsuario } from "../types/DatosHorario";
import { For, createSignal, createMemo} from "solid-js"; import { For, createSignal, createMemo } 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";
@ -79,8 +79,11 @@ export function Horarios(props: HorariosProps) {
<div> <div>
<Cursos <Cursos
dataAnio={dataTabla()} dataAnio={dataTabla()}
anioActual={anioActual}
fnAgregarCurso={props.fnAgregarCurso} fnAgregarCurso={props.fnAgregarCurso}
listaCursosUsuario={props.listaCursosUsuario} listaCursosUsuario={props.listaCursosUsuario}
idHover={idHover}
setIdHover={setIdHover}
/> />
</div> </div>
</Match> </Match>

View File

@ -80,7 +80,6 @@ interface Props {
} }
export function CeldaFila(props: Props) { export function CeldaFila(props: Props) {
const datos = props.datos; const datos = props.datos;
const idHover = props.idHover; const idHover = props.idHover;
const setIdHover = props.setIdHover; const setIdHover = props.setIdHover;