Usar rutas de backend

master
Araozu 2022-10-14 23:44:20 -05:00
parent 94a851b188
commit cb7e982c21
11 changed files with 44 additions and 44 deletions

View File

@ -21,6 +21,7 @@ export const loginFn: LoginFunction = async(data) => {
const petition = await fetch(`${SERVER_PATH}/login`, {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
},
body: JSON.stringify({

View File

@ -15,7 +15,7 @@ function App() {
const isMobile = screen.width <= 500;
return (
<div className="App" style={isMobile ? "--color-texto: #202020;" : ""}>
<div class="App" style={isMobile ? "--color-texto: #202020;" : ""}>
<Show when={!isMobile}>
<Wallpaper />
</Show>

View File

@ -29,7 +29,7 @@ export const horasDescanso = [
"15:40 - 15:50",
"17:30 - 17:40",
];
export const SERVER_PATH = "";
export const SERVER_PATH = "http://localhost:4000/sistema";
const numImgGuardado = Number(localStorage.getItem("num-img") ?? "0");
const tamanoLetraGuardado = Number(/* localStorage.getItem("tamano-letra") ?? */ "16");

View File

@ -4,7 +4,7 @@ import { RouterLink } from "../Router";
import { batch, createSignal, Show } from "solid-js";
import { isMobile, setGruposSeleccionados } from "../Store";
import { MobileIndex } from "./MobileIndex";
import { mockLoginEmpty, mockLoginNotEmpty, mockLoginWithError } from "../API/Login";
import { loginFn } from "../API/Login";
const e = StyleSheet.create({
contenedorGlobal: {
@ -46,17 +46,17 @@ const e = StyleSheet.create({
export function Index() {
const [msgErrorVisible, setMsgErrorVisible] = createSignal(false);
const inputElement = <input className={css(e.inputCorreo)} type="email" required placeholder="correo@unsa.edu.pe" />;
const inputElement = <input class={css(e.inputCorreo)} type="email" required placeholder="correo@unsa.edu.pe" />;
const login = async(ev: Event) => {
ev.preventDefault();
const email = (inputElement as HTMLInputElement).value;
const response = await mockLoginEmpty({correo_usuario: email});
const response = await loginFn({correo_usuario: email});
if (response === null) {
setMsgErrorVisible(true);
setTimeout(() => setMsgErrorVisible(false), 2500);
} else if (response.matriculas.length === 0) {
} else if (!response.matriculas || response.matriculas.length === 0) {
localStorage.setItem("correo", email);
window.location.href = "#/pc/seleccion-cursos/";
} else if (response.matriculas.length > 0) {
@ -73,9 +73,9 @@ export function Index() {
return (
<>
<Show when={!isMobile()}>
<div className={css(e.contenedorGlobal)}>
<div className={css(e.cont)}>
<div className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, e.cont)}>
<div class={css(e.contenedorGlobal)}>
<div class={css(e.cont)}>
<div class={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, e.cont)}>
<h1 style={{
"text-align": "center",
"font-size": "1.75rem",
@ -83,7 +83,7 @@ export function Index() {
>
Horarios UNSA
</h1>
<p className={css(e.parrafo)}>
<p class={css(e.parrafo)}>
Inicia sesión con tu correo institucional.
<br />
{inputElement}
@ -92,17 +92,17 @@ export function Index() {
El correo es invalido
</span>
</div>
<button onClick={login} className={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, e.botonAccion)}>
<button onClick={login} class={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, e.botonAccion)}>
Iniciar sesion
</button>
<br />
<br />
<a
className={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, e.botonAccion)}
class={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, e.botonAccion)}
href="https://github.com/Araozu/horarios-unsa-2/"
target="_blank"
>
<i className={`${css(e.iconoGitHub)} ph-code`} />
<i class={`${css(e.iconoGitHub)} ph-code`} />
Código fuente en GitHub
</a>
</div>

View File

@ -1,7 +1,7 @@
import { css, StyleSheet } from "aphrodite/no-important";
import { batch, createSignal } from "solid-js";
import { SERVER_PATH, setGruposSeleccionados } from "../Store";
import { mockLoginEmpty } from "../API/Login";
import { loginFn } from "../API/Login";
const e = StyleSheet.create({
contenedorGlobal: {
@ -51,12 +51,12 @@ export function MobileIndex() {
});
const [msgErrorVisible, setMsgErrorVisible] = createSignal(false);
const inputElement = <input required type="email" placeholder="correo@unsa.edu.pe" className={css(s.entrada)} />;
const inputElement = <input required type="email" placeholder="correo@unsa.edu.pe" class={css(s.entrada)} />;
const login = async(ev: Event) => {
ev.preventDefault();
const email = (inputElement as HTMLInputElement).value;
const response = await mockLoginEmpty({correo_usuario: email});
const response = await loginFn({correo_usuario: email});
if (response === null) {
setMsgErrorVisible(true);
@ -76,7 +76,7 @@ export function MobileIndex() {
};
return (
<div className={css(e.contenedorGlobal)}>
<div class={css(e.contenedorGlobal)}>
<div style="text-align: center;">
<h1>Iniciar sesión</h1>
<br />
@ -84,7 +84,7 @@ export function MobileIndex() {
<form onSubmit={(ev) => login(ev)}>
{inputElement}
<br />
<button type="submit" className={css(s.boton)}>Iniciar Sesion</button>
<button type="submit" class={css(s.boton)}>Iniciar Sesion</button>
</form>
<span style={{opacity: msgErrorVisible() ? 1 : 0}}>El correo es invalido</span>
</div>

View File

@ -2,7 +2,7 @@ import { TopBar } from "./SistemasMovil/TopBar";
import { StyleSheet, css } from "aphrodite/no-important";
import { Card } from "../components/Card";
import { createSignal, For } from "solid-js";
import { getAllListaCursosMock, RespuestaListaCursos } from "../API/ListaCursos";
import { getAllListaCursos, RespuestaListaCursos } from "../API/ListaCursos";
import { Button } from "../components/Button";
const s = StyleSheet.create({
@ -23,7 +23,7 @@ export function SeleccionCursos() {
const [msjErr, setMsjError] = createSignal(false);
// Recuperar cursos de back
(async() => setCursos(await getAllListaCursosMock()))();
(async() => setCursos(await getAllListaCursos()))();
const submit = (ev: Event) => {
ev.preventDefault();
@ -62,14 +62,14 @@ export function SeleccionCursos() {
{([nombreAnio, infoCurso]) => (
<Card>
<h2>{nombreAnio} año</h2>
<div className={css(s.grid)}>
<div class={css(s.grid)}>
<For each={infoCurso}>
{(curso) => (
<>
<input
type="checkbox"
value={curso.id_curso}
className={css(s.checkbox)}
class={css(s.checkbox)}
/>
<span>{curso.nombre_curso}</span>
</>

View File

@ -1,6 +1,6 @@
import { TopBar } from "./SistemasMovil/TopBar";
import { GrupoDia, Table, TableInput } from "./SistemasMovil/Table";
import { getHorariosMock, Horario, ListaCursosCompleto } from "../API/CargaHorarios";
import { getHorarios, Horario, ListaCursosCompleto } from "../API/CargaHorarios";
import { createSignal } from "solid-js";
import { generarMapaCeldas } from "./SistemasMovil/mapaCeldas";
import { Button } from "../components/Button";
@ -12,7 +12,7 @@ export function SistemasMovil() {
// Obtener cursos seleccionados del servidor
(async() => {
const cursos: Array<string> = JSON.parse(localStorage.getItem("cursos-seleccionados") ?? "[]");
const data = await getHorariosMock({
const data = await getHorarios({
cursos: cursos.map((x) => parseInt(x, 10)),
});
setRawData(data);

View File

@ -1,7 +1,7 @@
import { TopBar } from "./SistemasMovil/TopBar";
import { Card } from "../components/Card";
import { createSignal, For } from "solid-js";
import { getMatriculaMock, InfoMatricula } from "../API/VerMatricula";
import { getMatricula, InfoMatricula } from "../API/VerMatricula";
import { gruposSeleccionados } from "../Store";
export function VerMatricula() {
@ -11,7 +11,7 @@ export function VerMatricula() {
const laboratorios = Object.entries(gruposSeleccionados)
.filter((x) => x[1] === true)
.map((x) => parseInt(x[0], 10));
setInfoMatriculas(await getMatriculaMock({matriculas: laboratorios}));
setInfoMatriculas(await getMatricula({matriculas: laboratorios}));
})();
return (

View File

@ -1,7 +1,7 @@
import { css, StyleSheet } from "aphrodite/no-important";
import { estilosGlobales } from "../../Estilos";
import { createSignal, For } from "solid-js";
import { getAllListaCursosMock, RespuestaListaCursos } from "../../API/ListaCursos";
import { getAllListaCursos, RespuestaListaCursos } from "../../API/ListaCursos";
const e = StyleSheet.create({
contenedorGlobal: {
@ -55,7 +55,7 @@ export function SeleccionCursos() {
const [msgErr, setMsgError] = createSignal(false);
// Recuperar cursos de back
(async() => setCursos(await getAllListaCursosMock()))();
(async() => setCursos(await getAllListaCursos()))();
const submit = (ev: Event) => {
ev.preventDefault();
@ -83,10 +83,10 @@ export function SeleccionCursos() {
};
return (
<div className={css(e.contenedorGlobal)}>
<div className={css(e.cont)}>
<div class={css(e.contenedorGlobal)}>
<div class={css(e.cont)}>
<form onSubmit={submit}>
<div className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, e.cont)}>
<div class={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, e.cont)}>
<h1 style={{
"text-align": "center",
"font-size": "1.75rem",
@ -100,14 +100,14 @@ export function SeleccionCursos() {
{([nombreAnio, infoCurso]) => (
<>
<h2>{nombreAnio} año</h2>
<div className={css(e.grid)}>
<div class={css(e.grid)}>
<For each={infoCurso}>
{(curso) => (
<>
<input
type="checkbox"
value={curso.id_curso}
className={css(e.checkbox)}
class={css(e.checkbox)}
/>
<span>{curso.nombre_curso}</span>
</>
@ -124,9 +124,9 @@ export function SeleccionCursos() {
</div>
<button
type="submit"
className={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, e.botonAccion)}
class={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, e.botonAccion)}
>
Iniciar sesion
Continuar
</button>
</form>
</div>

View File

@ -3,7 +3,7 @@ import { ContenedorHorarios } from "./Sistemas/ContenedorHorarios";
import { Creditos } from "../../Creditos";
import { Separador } from "../../Separador";
import { createSignal } from "solid-js";
import { getHorariosMock, ListaCursosCompleto } from "../../API/CargaHorarios";
import { getHorarios, ListaCursosCompleto } from "../../API/CargaHorarios";
import { Cursos, DatosGrupo } from "../../types/DatosHorario";
import { infoDiaAListaHoras } from "../SistemasMovil";
import { StyleSheet, css } from "aphrodite/no-important";
@ -25,7 +25,7 @@ export function Sistemas() {
// Obtener cursos seleccionados del servidor
(async() => {
const cursos: Array<string> = JSON.parse(localStorage.getItem("cursos-seleccionados") ?? "[]");
const data = await getHorariosMock({
const data = await getHorarios({
cursos: cursos.map((x) => parseInt(x, 10)),
});
setData(listaCursosADatos(data));
@ -62,7 +62,7 @@ export function Sistemas() {
<Separador />
<div style="text-align: center;">
<button
className={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, s.botonAccion)}
class={css(estilosGlobales.contenedor, estilosGlobales.contenedorCursor, s.botonAccion)}
onclick={matricular}
>
Matricular

View File

@ -1,8 +1,7 @@
import { css, StyleSheet } from "aphrodite/no-important";
import { estilosGlobales } from "../../Estilos";
import { createSignal, For } from "solid-js";
import { getAllListaCursosMock, RespuestaListaCursos } from "../../API/ListaCursos";
import { getMatriculaMock, InfoMatricula } from "../../API/VerMatricula";
import { getMatricula, InfoMatricula } from "../../API/VerMatricula";
import { gruposSeleccionados } from "../../Store";
const e = StyleSheet.create({
@ -59,14 +58,14 @@ export function VerMatricula() {
const laboratorios = Object.entries(gruposSeleccionados)
.filter((x) => x[1] === true)
.map((x) => parseInt(x[0], 10));
setInfoMatriculas(await getMatriculaMock({matriculas: laboratorios}));
setInfoMatriculas(await getMatricula({matriculas: laboratorios}));
})();
return (
<div className={css(e.contenedorGlobal)}>
<div className={css(e.cont)}>
<div class={css(e.contenedorGlobal)}>
<div class={css(e.cont)}>
<div className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, e.cont)}>
<div class={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, e.cont)}>
<h1 style={{
"text-align": "center",
"font-size": "1.75rem",