Initial commit
0
.gitignore
vendored
Normal file → Executable file
0
package.json
Normal file → Executable file
0
pnpm-lock.yaml
Normal file → Executable file
0
public/css/global.css
Normal file → Executable file
0
public/css/phosphor.min.css
vendored
Normal file → Executable file
0
public/horarios/2018_2_fps_ingenieriadesistemas.yaml
Normal file → Executable file
0
public/horarios/2019_2_fps_ingenieriadesistemas.yaml
Normal file → Executable file
0
public/horarios/2020_1_fps_ingenieriadesistemas.yaml
Normal file → Executable file
0
public/horarios/2020_2_fps_ingenieriadesistemas.yaml
Normal file → Executable file
0
public/img/wall0.webp
Normal file → Executable file
Before Width: | Height: | Size: 156 KiB After Width: | Height: | Size: 156 KiB |
0
public/img/wall1.webp
Normal file → Executable file
Before Width: | Height: | Size: 170 KiB After Width: | Height: | Size: 170 KiB |
0
public/img/wall2.webp
Normal file → Executable file
Before Width: | Height: | Size: 262 KiB After Width: | Height: | Size: 262 KiB |
0
public/img/wall3.webp
Normal file → Executable file
Before Width: | Height: | Size: 175 KiB After Width: | Height: | Size: 175 KiB |
0
public/img/wall4.webp
Normal file → Executable file
Before Width: | Height: | Size: 174 KiB After Width: | Height: | Size: 174 KiB |
0
public/index.html
Normal file → Executable file
0
public/manifest.json
Normal file → Executable file
2
src/App.tsx
Normal file → Executable file
@ -1,5 +1,5 @@
|
|||||||
import { BarraSuperior } from "./BarraSuperior";
|
import { BarraSuperior } from "./BarraSuperior";
|
||||||
import { ContenedorHorarios } from "./ContenedorHorarios/";
|
import { ContenedorHorarios } from "./ContenedorHorarios/ContenedorHorarios";
|
||||||
import { Wallpaper } from "./Wallpaper";
|
import { Wallpaper } from "./Wallpaper";
|
||||||
import { Show } from "solid-js";
|
import { Show } from "solid-js";
|
||||||
import { css } from "aphrodite";
|
import { css } from "aphrodite";
|
||||||
|
96
src/BarraSuperior.tsx
Normal file → Executable file
@ -4,55 +4,55 @@ import { numWallpaper, setNumWallpaper } from "./Store";
|
|||||||
|
|
||||||
const totalWallpapers = 4;
|
const totalWallpapers = 4;
|
||||||
|
|
||||||
|
const e = StyleSheet.create({
|
||||||
|
contCambiador: {
|
||||||
|
userSelect: "none"
|
||||||
|
},
|
||||||
|
boton: {
|
||||||
|
cursor: "pointer",
|
||||||
|
textDecoration: "underline",
|
||||||
|
"::before": {
|
||||||
|
fontSize: "1rem",
|
||||||
|
transform: "translateY(0.2rem)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
botonDesactivado: {
|
||||||
|
cursor: "not-allowed",
|
||||||
|
textDecoration: "none"
|
||||||
|
},
|
||||||
|
botonLeft: {
|
||||||
|
paddingRight: "0.5rem",
|
||||||
|
marginRight: "0.25rem"
|
||||||
|
},
|
||||||
|
botonRight: {
|
||||||
|
paddingLeft: "0.5rem",
|
||||||
|
marginRight: "0.25rem"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const retrocederWallpaper = () => {
|
||||||
|
const num = numWallpaper();
|
||||||
|
if (num > 0) {
|
||||||
|
setNumWallpaper(num - 1);
|
||||||
|
localStorage.setItem("num-img", (num - 1).toString());
|
||||||
|
} else {
|
||||||
|
setNumWallpaper(totalWallpapers);
|
||||||
|
localStorage.setItem("num-img", (totalWallpapers).toString());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const avanzarWallpaper = () => {
|
||||||
|
const num = numWallpaper();
|
||||||
|
if (num < totalWallpapers) {
|
||||||
|
setNumWallpaper(num + 1);
|
||||||
|
localStorage.setItem("num-img", (num + 1).toString());
|
||||||
|
} else {
|
||||||
|
setNumWallpaper(0);
|
||||||
|
localStorage.setItem("num-img", (0).toString());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
function CambiadorImg() {
|
function CambiadorImg() {
|
||||||
const e = StyleSheet.create({
|
|
||||||
contCambiador: {
|
|
||||||
userSelect: "none"
|
|
||||||
},
|
|
||||||
boton: {
|
|
||||||
cursor: "pointer",
|
|
||||||
textDecoration: "underline",
|
|
||||||
"::before": {
|
|
||||||
fontSize: "1rem",
|
|
||||||
transform: "translateY(0.2rem)"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
botonDesactivado: {
|
|
||||||
cursor: "not-allowed",
|
|
||||||
textDecoration: "none"
|
|
||||||
},
|
|
||||||
botonLeft: {
|
|
||||||
paddingRight: "0.5rem",
|
|
||||||
marginRight: "0.25rem"
|
|
||||||
},
|
|
||||||
botonRight: {
|
|
||||||
paddingLeft: "0.5rem",
|
|
||||||
marginRight: "0.25rem"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const retrocederWallpaper = () => {
|
|
||||||
const num = numWallpaper();
|
|
||||||
if (num > 0) {
|
|
||||||
setNumWallpaper(num - 1);
|
|
||||||
localStorage.setItem("num-img", (num - 1).toString());
|
|
||||||
} else {
|
|
||||||
setNumWallpaper(totalWallpapers);
|
|
||||||
localStorage.setItem("num-img", (totalWallpapers).toString());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const avanzarWallpaper = () => {
|
|
||||||
const num = numWallpaper();
|
|
||||||
if (num < totalWallpapers) {
|
|
||||||
setNumWallpaper(num + 1);
|
|
||||||
localStorage.setItem("num-img", (num + 1).toString());
|
|
||||||
} else {
|
|
||||||
setNumWallpaper(0);
|
|
||||||
localStorage.setItem("num-img", (0).toString());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return <div className={css(estilosGlobales.inlineBlock, e.contCambiador)}>
|
return <div className={css(estilosGlobales.inlineBlock, e.contCambiador)}>
|
||||||
<span className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>
|
<span className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>
|
||||||
<i
|
<i
|
||||||
|
0
src/ContenedorHorarios/index.tsx → src/ContenedorHorarios/ContenedorHorarios.tsx
Normal file → Executable file
30
src/ContenedorHorarios/Cursos.tsx
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
import { AnioData } from "../types/DatosHorario";
|
||||||
|
import { For } from "solid-js";
|
||||||
|
import { StyleSheet, css } from "aphrodite";
|
||||||
|
import { estilosGlobales } from "../Estilos";
|
||||||
|
|
||||||
|
const e = StyleSheet.create({
|
||||||
|
contenedorCurso: {
|
||||||
|
display: "inline-block",
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export function Cursos(props: { dataAnio: AnioData }) {
|
||||||
|
return <>
|
||||||
|
<For each={Object.entries(props.dataAnio)}>
|
||||||
|
{([_, datosCurso]) => {
|
||||||
|
return <span className={css(
|
||||||
|
e.contenedorCurso,
|
||||||
|
estilosGlobales.contenedor,
|
||||||
|
estilosGlobales.contenedorCursor,
|
||||||
|
estilosGlobales.contenedorCursorSoft
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
<i className="ph-plus"/>
|
||||||
|
{datosCurso.abreviado} - {datosCurso.nombre}
|
||||||
|
</span>
|
||||||
|
}}
|
||||||
|
</For>
|
||||||
|
</>;
|
||||||
|
}
|
9
src/ContenedorHorarios/Horarios.tsx
Normal file → Executable file
@ -1,9 +1,9 @@
|
|||||||
import { AnioData, DatosHorario } from "../types/DatosHorario";
|
import { DatosHorario } from "../types/DatosHorario";
|
||||||
import { For, createSignal, createMemo } from "solid-js";
|
import { For, createSignal, createMemo } from "solid-js";
|
||||||
import { StyleSheet, css } from "aphrodite";
|
import { css } from "aphrodite";
|
||||||
import { estilosGlobales } from "../Estilos";
|
import { estilosGlobales } from "../Estilos";
|
||||||
import { Tabla } from "./Tabla";
|
import { Tabla } from "./Tabla";
|
||||||
import { horas } from "../Store";
|
import { Cursos } from "./Cursos";
|
||||||
|
|
||||||
export function Horarios(props: { data: DatosHorario }) {
|
export function Horarios(props: { data: DatosHorario }) {
|
||||||
|
|
||||||
@ -38,5 +38,8 @@ export function Horarios(props: { data: DatosHorario }) {
|
|||||||
<div className={css(estilosGlobales.contenedor)}>
|
<div className={css(estilosGlobales.contenedor)}>
|
||||||
<Tabla data={dataTabla()} version={props.data.version} anio={anioActual()}/>
|
<Tabla data={dataTabla()} version={props.data.version} anio={anioActual()}/>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<Cursos dataAnio={dataTabla()}/>
|
||||||
|
</div>
|
||||||
</div>;
|
</div>;
|
||||||
}
|
}
|
||||||
|