Simplificar interfaz de horario de pc

master
Araozu 2022-10-14 17:29:05 -05:00
parent 678f266946
commit c7c705460a
3 changed files with 36 additions and 152 deletions

View File

@ -1,8 +1,5 @@
import { BarraSuperior } from "../../BarraSuperior"; import { BarraSuperior } from "../../BarraSuperior";
import { ContenedorHorarios } from "./Sistemas/ContenedorHorarios"; import { ContenedorHorarios } from "./Sistemas/ContenedorHorarios";
import { Show, createSignal } from "solid-js";
import { css } from "aphrodite";
import { estilosGlobales } from "../../Estilos";
import { Creditos } from "../../Creditos"; import { Creditos } from "../../Creditos";
import { Separador } from "../../Separador"; import { Separador } from "../../Separador";
@ -11,6 +8,7 @@ export function Sistemas() {
<div> <div>
<BarraSuperior /> <BarraSuperior />
<Separador /> <Separador />
<Separador />
<ContenedorHorarios /> <ContenedorHorarios />
<Creditos /> <Creditos />
</div> </div>

View File

@ -72,35 +72,6 @@ const {
export function ContenedorHorarios() { export function ContenedorHorarios() {
const [datosCargados, setDatosCargados] = createSignal(false); const [datosCargados, setDatosCargados] = createSignal(false);
const [datos, setDatos] = createSignal<DatosHorario | null>(null); const [datos, setDatos] = createSignal<DatosHorario | null>(null);
const [estadoLayout, setEstadoLayout] = (
createSignal<EstadoLayout>(localStorage.getItem("estadoLayout") as EstadoLayout || "Normal")
);
const e = createMemo(() => {
let templateColumns = "";
switch (estadoLayout()) {
case "MaxHorarios": {
templateColumns = "0 auto";
break;
}
case "MaxPersonal": {
templateColumns = "auto 0m";
break;
}
case "Normal": {
templateColumns = "50% 50%";
}
}
localStorage.setItem("estadoLayout", estadoLayout());
return StyleSheet.create({
contenedor: {
display: "grid",
gridTemplateColumns: templateColumns,
},
});
});
createEffect(async() => { createEffect(async() => {
const datos = await datosPromise; const datos = await datosPromise;
@ -111,28 +82,10 @@ export function ContenedorHorarios() {
}); });
return ( return (
<div className={css(e().contenedor)}> <MiHorario
<div> cursosUsuario={cursosUsuario}
<MiHorario fnAgregarCurso={agregarCursoUsuario}
estadoLayout={estadoLayout()} setCursosUsuarios={setCursosUsuarios}
setEstadoLayout={setEstadoLayout} />
cursosUsuario={cursosUsuario}
fnAgregarCurso={agregarCursoUsuario}
setCursosUsuarios={setCursosUsuarios}
/>
</div>
<div>
<Show when={datosCargados()}>
<Horarios
data={datos()!}
estadoLayout={estadoLayout()}
setEstadoLayout={setEstadoLayout}
fnAgregarCurso={(c) => agregarCursoUsuario(JSON.parse(JSON.stringify(c)))}
listaCursosUsuario={cursosUsuario}
setCursosUsuarios={setCursosUsuarios}
/>
</Show>
</div>
</div>
); );
} }

View File

@ -11,8 +11,6 @@ import { CursosElem } from "./CursosElem";
import { TablaObserver } from "./TablaObserver"; import { TablaObserver } from "./TablaObserver";
interface MiHorarioProps { interface MiHorarioProps {
estadoLayout: EstadoLayout,
setEstadoLayout: (v: EstadoLayout) => EstadoLayout,
cursosUsuario: ListaCursosUsuario, cursosUsuario: ListaCursosUsuario,
fnAgregarCurso: (c: Curso) => void, fnAgregarCurso: (c: Curso) => void,
setCursosUsuarios: SetStoreFunction<ListaCursosUsuario> setCursosUsuarios: SetStoreFunction<ListaCursosUsuario>
@ -42,105 +40,40 @@ export function MiHorario(props: MiHorarioProps) {
return obj; return obj;
}); });
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 ( return (
<div> <div>
<Switch> <div className={css(
<Match when={props.estadoLayout === "Normal" || props.estadoLayout === "MaxPersonal"}> estilosGlobales.inlineBlock,
estilosGlobales.contenedor,
)}
>
Mi horario
</div>
<div> <div className={css(
<div className={css( e.horario,
estilosGlobales.inlineBlock, estilosGlobales.contenedor,
estilosGlobales.contenedor, )}
)} >
> <Tabla
Mi horario data={datosMiHorario()}
</div> anio={"Mi horario"}
</div> version={1}
setCursosUsuarios={props.setCursosUsuarios}
tablaObserver={tablaObserver}
/>
</div>
<div> <CursosElem
<div className={css( version={Math.floor(Math.random() * 1_000_000)}
estilosGlobales.inlineBlock, anioActual={() => "Mi horario"}
estilosGlobales.contenedor, dataAnio={datosMiHorario()}
)} fnAgregarCurso={props.fnAgregarCurso}
> listaCursosUsuario={props.cursosUsuario}
Mi horario esCursoMiHorario
</div> setCursosUsuarios={props.setCursosUsuarios}
| tablaObserver={tablaObserver}
{/* />
<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}
setCursosUsuarios={props.setCursosUsuarios}
tablaObserver={tablaObserver}
/>
</div>
<CursosElem
version={Math.floor(Math.random() * 1_000_000)}
anioActual={() => "Mi horario"}
dataAnio={datosMiHorario()}
fnAgregarCurso={props.fnAgregarCurso}
listaCursosUsuario={props.cursosUsuario}
esCursoMiHorario
setCursosUsuarios={props.setCursosUsuarios}
tablaObserver={tablaObserver}
/>
</Match>
<Match when={props.estadoLayout === "MaxHorarios"}>
{/*
<BotonMaxMin
fnMaximizar={fnMaximizar}
fnMinimizar={fnMinimizar}
estadoActualLayout={estadoActualLayout}
estadoLayoutMax={"MaxPersonal"}
/>
*/}
<div />
</Match>
</Switch>
</div> </div>
); );
} }