horarios-v3/src/ContenedorHorarios/MiHorario.tsx

136 lines
4.9 KiB
TypeScript
Raw Normal View History

2021-01-14 23:24:55 +00:00
import { estilosGlobales } from "../Estilos";
import { StyleSheet, css } from "aphrodite";
2021-01-15 00:49:21 +00:00
import { Tabla } from "./Tabla";
import { mostrarDescansos } from "../Store";
import { EstadoLayout } from "./ContenedorHorarios";
import { Switch, Match, For, createMemo, createSignal, SetStateFunction } from "solid-js";
import { BotonMaxMin } from "./BotonMaxMin";
import { BotonIcono } from "./BotonIcono";
2021-03-18 00:03:10 +00:00
import { Curso, Cursos, ListaCursosUsuario } from "../types/DatosHorario";
import { CursosElem } from "./CursosElem";
2021-01-14 23:24:55 +00:00
interface MiHorarioProps {
estadoLayout: EstadoLayout,
setEstadoLayout: (v: EstadoLayout) => EstadoLayout,
2021-03-18 00:03:10 +00:00
cursosUsuario: ListaCursosUsuario,
fnAgregarCurso: (c: Curso) => void,
setCursosUsuarios: SetStateFunction<ListaCursosUsuario>
}
const e = StyleSheet.create({
horario: {},
boton: {
textDecoration: "none",
// paddingRight: "0.5rem",
"::before": {
fontSize: "1rem",
// transform: "translateY(0.2rem)",
textDecoration: "none"
}
}
});
export function MiHorario(props: MiHorarioProps) {
2021-03-18 00:03:10 +00:00
const [idHover, setIdHover] = createSignal("");
const datosMiHorario = createMemo(() => {
const obj: Cursos = {};
props.cursosUsuario.cursos.forEach((x, i) => {
obj[i] = x;
});
return obj;
2021-01-14 23:24:55 +00:00
});
const fnMaximizar = () => props.setEstadoLayout("MaxPersonal");
const fnMinimizar = () => props.setEstadoLayout("Normal");
const estadoActualLayout = () => props.estadoLayout;
/* TODO: En barra superior colocar todos los horarios. En barra inferior el horario
actual.
Al hacer click en un horario de la barra superior, llevarlo al inicio de la lista.
*/
return <div>
<Switch>
<Match when={props.estadoLayout === "Normal" || props.estadoLayout === "MaxPersonal"}>
<div>
<div className={css(
estilosGlobales.inlineBlock,
estilosGlobales.contenedor
)}>
Mi horario
</div>
</div>
<div>
<div className={css(
estilosGlobales.inlineBlock,
estilosGlobales.contenedor
)}>
Mi horario
</div>
|
<BotonIcono titulo={"Nuevo horario en blanco"}
icono={"ph-plus"}
onClick={() => {
}}
/>
<BotonIcono titulo={"Reiniciar horario"}
icono={"ph-arrow-counter-clockwise"}
onClick={() => {
}}
/>
<BotonIcono titulo={"Duplicar horario"}
icono={"ph-copy"}
onClick={() => {
}}
/>
<BotonIcono titulo={"Eliminar horario"}
icono={"ph-trash"}
onClick={() => {
}}
/>
|
<BotonMaxMin
fnMaximizar={fnMaximizar}
fnMinimizar={fnMinimizar}
estadoActualLayout={estadoActualLayout}
estadoLayoutMax={"MaxPersonal"}
/>
</div>
<div className={css(
e.horario,
estilosGlobales.contenedor
)}>
<Tabla data={datosMiHorario()}
anio={"Mi horario"}
version={1}
2021-03-18 00:03:10 +00:00
idHover={idHover}
setIdHover={setIdHover}
setCursosUsuarios={props.setCursosUsuarios}
/>
</div>
2021-03-18 00:03:10 +00:00
<CursosElem anioActual={() => "Mi horario"}
dataAnio={datosMiHorario()}
fnAgregarCurso={props.fnAgregarCurso}
listaCursosUsuario={props.cursosUsuario}
idHover={idHover}
setIdHover={setIdHover}
esCursoMiHorario={true}
setCursosUsuarios={props.setCursosUsuarios}
2021-03-18 00:03:10 +00:00
/>
</Match>
<Match when={props.estadoLayout === "MaxHorarios"}>
<BotonMaxMin
fnMaximizar={fnMaximizar}
fnMinimizar={fnMinimizar}
estadoActualLayout={estadoActualLayout}
estadoLayoutMax={"MaxPersonal"}
/>
</Match>
</Switch>
2021-01-14 23:24:55 +00:00
</div>;
}