horarios-v3/src/ContenedorHorarios/MiHorario.tsx

141 lines
5.1 KiB
TypeScript
Raw Normal View History

2021-03-26 02:39:34 +00:00
import { estilosGlobales } from "../Estilos"
import { StyleSheet, css } from "aphrodite"
import { Tabla } from "./Tabla"
import { EstadoLayout } from "./ContenedorHorarios"
import { Switch, Match, createMemo, SetStateFunction } from "solid-js"
2021-03-26 02:39:34 +00:00
import { BotonMaxMin } from "./BotonMaxMin"
import { BotonIcono } from "./BotonIcono"
import { Curso, Cursos, ListaCursosUsuario } from "../types/DatosHorario"
import { CursosElem } from "./CursosElem"
import { TablaObserver } from "./TablaObserver"
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)",
2021-03-26 02:39:34 +00:00
textDecoration: "none",
},
},
})
export function MiHorario(props: MiHorarioProps) {
const tablaObserver = new TablaObserver()
const datosMiHorario = createMemo(() => {
2021-03-26 02:39:34 +00:00
const obj: Cursos = {}
props.cursosUsuario.cursos.forEach((x, i) => {
2021-03-26 02:39:34 +00:00
obj[i] = x
})
return obj
})
2021-01-14 23:24:55 +00:00
2021-03-26 02:39:34 +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.
*/
2021-03-26 02:39:34 +00:00
return (
<div>
<Switch>
<Match when={props.estadoLayout === "Normal" || props.estadoLayout === "MaxPersonal"}>
2021-03-26 02:39:34 +00:00
<div>
<div className={css(
estilosGlobales.inlineBlock,
estilosGlobales.contenedor,
)}
>
Mi horario
2021-03-26 02:39:34 +00:00
</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(
2021-03-26 02:39:34 +00:00
e.horario,
estilosGlobales.contenedor,
)}
>
<Tabla
data={datosMiHorario()}
anio={"Mi horario"}
version={1}
setCursosUsuarios={props.setCursosUsuarios}
tablaObserver={tablaObserver}
2021-03-26 02:39:34 +00:00
/>
</div>
2021-03-26 02:39:34 +00:00
<CursosElem
version={Math.floor(Math.random() * 1_000_000)}
2021-03-26 02:39:34 +00:00
anioActual={() => "Mi horario"}
dataAnio={datosMiHorario()}
fnAgregarCurso={props.fnAgregarCurso}
listaCursosUsuario={props.cursosUsuario}
esCursoMiHorario
setCursosUsuarios={props.setCursosUsuarios}
tablaObserver={tablaObserver}
/>
2021-03-26 02:39:34 +00:00
</Match>
<Match when={props.estadoLayout === "MaxHorarios"}>
<BotonMaxMin
fnMaximizar={fnMaximizar}
fnMinimizar={fnMinimizar}
estadoActualLayout={estadoActualLayout}
estadoLayoutMax={"MaxPersonal"}
/>
2021-03-26 02:39:34 +00:00
</Match>
</Switch>
</div>
)
2021-01-14 23:24:55 +00:00
}