Muchos cambios

master
Araozu 2021-01-14 18:24:55 -05:00
parent 66dff9daee
commit 02899b0285
62 changed files with 2898 additions and 20483 deletions

20208
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -5,15 +5,15 @@
"devDependencies": {
"@types/jest": "26.0.20",
"@types/node": "14.14.20",
"aphrodite": "^2.4.0",
"normalize.css": "^8.0.1",
"solid-js": "^0.23.11",
"solid-scripts": "0.0.50",
"typescript": "4.1.3"
},
"dependencies": {},
"scripts": {
"start": "solid-scripts start",
"build": "solid-scripts build",
"test": "solid-scripts test"
"build": "solid-scripts build"
},
"browserslist": [
"Chrome 74",
@ -21,5 +21,8 @@
"Safari 11",
"Edge 17",
"Node 10"
]
],
"dependencies": {
"yaml": "^1.10.0"
}
}

7
public/css/global.css Normal file
View File

@ -0,0 +1,7 @@
body {
color: white
}
[class^="ph-"], [class*=" ph-"] ::before {
font-size: 0.8rem;
}

1
public/css/phosphor.min.css vendored Normal file

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,429 @@
titulo: Horarios 2018-2, Ingeniería de Sistemas.
año: 2018
periodo: 2
facultad:
id: fps
nombre: Facultad de Producción y Servicios
escuela:
id: epis
nombre: Escuela Profesional de Ingeniería de Sistemas
años:
1er año:
Realidad Nacional:
nombre: Realidad Nacional
abreviado: RN
Teoria:
A:
Docente: "?"
Horas:
- Ma0700
- Ma0750
- Ma0850
B:
Docente: "?"
Horas:
- Lu1400
- Lu1450
- Lu1550
Calculo 1:
nombre: Cálculo en 1 variable
abreviado: C1V
Teoria:
A:
Docente: Doris Tupacyupanqui
Horas:
- Ma1130
- Ma1220
- Ma1310
- Mi0850
- Mi0940
- Vi0700
- Vi0750
B:
Docente: Pablo Quicaño
Horas:
- Lu1640
- Ma1740
- Ma1830
- Ma1920
- Ju1740
- Ju1920
- Ju1830
Discretas 2:
nombre: Estructuras Discretas 2
abreviado: ED2
Teoria:
A:
Docente: Olha Sharhorodska
Horas:
- Mi1220
- Mi1310
- Ju1220
- Ju1310
B:
Docente: Olha Sharhorodska
Horas:
- Mi1400
- Mi1450
- Vi1550
- Vi1640
Web 1:
nombre: Programacion Web 1
abreviado: PW1
Teoria:
A:
Docente: Richart Escobedo
Horas:
- Ma0940
- Ma1040
B:
Docente: Carlo Corrales
Horas:
- Lu1220
- Lu1310
Laboratorio:
A:
Docente: Richart Escobedo
Horas:
- Ma1130
- Ma1220
- Mi0850
- Mi0940
B:
Docente: Carlo Corrales
Horas:
- Lu1400
- Lu1450
- Mi1550
- Mi1640
C:
Docente: Richart Escobedo
Horas:
- Ma1550
- Ma1640
- Lu1740
- Lu1830
D:
Docente: Carlo Corrales
Horas:
- Lu1740
- Lu1830
- Mi1740
- Mi1830
E:
Docente: Carlo Corrales
Horas:
- Lu1550
- Lu1640
- Ma1740
- Ma1830
FP2:
nombre: Fundamentos de Programacion 2
abreviado: FP2
Teoria:
A:
Docente: Marco Aedo
Horas:
- Lu0850
- Lu0940
- Vi1220
- Vi1310
B:
Docente: Marco Aedo
Horas:
- Ju1550
- Ju1640
- Vi1400
- Vi1450
Laboratorio:
A:
Docente: Marco Aedo
Horas:
- Lu1040
- Lu1130
- Ju1040
- Ju1130
B:
Docente: Marco Aedo
Horas:
- Ju1400
- Ju1450
- Vi1550
- Vi1640
C:
Docente: Marco Aedo
Horas:
- Ju0850
- Ju0940
- Vi1040
- Vi1130
D:
Docente: Karim Guevara
Horas:
- Vi0850
- Vi0940
- Ju0850
- Ju0940
E:
Docente: Ernesto Suarez
Horas:
- Mi1040
- Mi1130
- Ju0700
- Ju0750
Comunicacion Integral:
nombre: Comunicacion Integral
abreviado: CI
Teoria:
A:
Docente: "?"
Horas:
- Lu0700
- Lu0750
- Mi0700
- Mi0750
B:
Docente: "?"
Horas:
- Ma1400
- Ma1450
- Ju1400
- Ju1450
2do año:
Ecologia:
nombre: Ecologia y Medio Ambiente
abreviado: ECA
Teoria:
A:
Docente: "?"
Horas:
- Lu0700
- Lu0750
- Lu0850
B:
Docente: "?"
Horas:
- Mi1400
- Mi1450
- Mi1550
Estadistica:
nombre: Estadistica y Matematica
abreviado: EMAT
Teoria:
A:
Docente: Antonia Quispe
Horas:
- Mi0700
- Mi0750
- Vi0850
- Vi0940
B:
Docente: Esther Yanapa
Horas:
- Ma1550
- Ma1640
- Ju1830
- Ju1920
Laboratorio:
A:
Docente: Antonia Quispe
Horas:
- Mi0850
- Mi0940
B:
Docente: Esther Yanapa
Horas:
- Ma1740
- Ma1830
C:
Docente: Esther Yanapa
Horas:
- Ma0700
- Ma0750
D:
Docente: Esther Yanapa
Horas:
- Ma0850
- Ma0940
Arquitectura de Computadoras:
nombre: Arquitectura de Computadoras
abreviado: AC
Teoria:
A:
Docente: Pedro Rodriguez Gonzales
Horas:
- Ju0850
- Ju0940
- Vi1040
B:
Docente: Pedro Rodriguez Gonzales
Horas:
- Ju1550
- Ju1640
- Ju1740
Laboratorio:
A:
Docente: Pedro Rodriguez Gonzales
Horas:
- Ju0700
- Ju0750
B:
Docente: Pedro Rodriguez Gonzales
Horas:
- Vi1220
- Vi1310
C:
Docente: Pedro Rodriguez Gonzales
Horas:
- Vi0700
- Vi0750
D:
Docente: Pedro Rodriguez Gonzales
Horas:
- Vi0850
- Vi0940
Metodos de Investigacion y Redaccion:
nombre: Metodos de Investigacion y Redaccion
abreviado: MIR
Teoria:
A:
Docente: Jesus Zuniga Cueva
Horas:
- Mi1040
- Mi1130
- Mi1220
B:
Docente: Jesus Zuniga Cueva
Horas:
- Lu1220
- Lu1310
- Mi1310
C:
Docente: Jesus Zuniga Cueva
Horas:
- Ma1040
- Ma1130
- Ma1220
Interaccion Humano Computador->IHC:
nombre: Interaccion Humano Computador
abreviado: IHC
Teoria:
A:
Docente: Olha Sharhorodska
Horas:
- Ju1040
- Ju1130
- Vi1220
- Vi1310
B:
Docente: Olha Sharhorodska
Horas:
- Ju1400
- Ju1450
- Vi1400
- Vi1450
Laboratorio:
A:
Docente: Richart Escobedo
Horas:
- Lu1040
- Lu1130
B:
Docente: Richart Escobedo
Horas:
- Lu1550
- Lu1640
C:
Docente: Richart Escobedo
Horas:
- Ma1740
- Ma1830
D:
Docente: Juan Ramirez Ticona
Horas:
- Lu1550
- Lu1640
Enfoque Empresarial->EE:
nombre: Enfoque Empresarial
abreviado: EE
Teoria:
A:
Docente: Juan C. Juarez Bueno
Horas:
- Lu0940
- Ma0850
- Ma0940
- Ju1220
- Ju1310
B:
Docente: Juan C. Juarez Bueno
Horas:
- Ma1310
- Ma1400
- Ma1450
- Vi1550
- Vi1640
Analisis y Disenio de Algoritmos->ADA:
nombre: Analisis y Diseño de Algoritmos
abreviado: ADA
Teoria:
A:
Docente: Atencio Torres Carlos
Horas:
- Lu1400
- Lu1450
- Vi0700
- Vi0750
B:
Docente: Atencio Torres Carlos
Horas:
- Lu1740
- Lu1830
- Vi1740
- Vi1830
Laboratorio:
A:
Docente: Christian Portugal
Horas:
- Lu1400
- Lu1450
B:
Docente: Christian Portugal
Horas:
- Mi1550
- Mi1640
C:
Docente: Christian Portugal
Horas:
- Mi1740
- Mi1830
3er año:
Construccion de Software->CS:
nombre: Construcción de Software
Redes y Comunicacion de Datos-> RCD:
nombre: Redes y Comunicacion de Datos
Tecnologia de Objetos->TO:
nombre: Tecnologia de Objetos
Sistemas Operativos:
nombre: Sistemas Operativos
4to año:
Aspectos Formales de Verif. y Esp.->AFVE:
nombre: Aspectos Formales de Verif. y Esp
Gestion de Proyectos de Software->GPS:
nombre: Gestion de Proyectos de Software
5to año:
Topicos Avanzados en Ing. de Software->TAIS:
nombre: Topicos Avanzados en Ing. de Software
Practicas Pre-Profesionales:
nombre: Practicas Pre-Profesionales
abreviado: PPP
Teoria:
A:
Docente: Ernesto Suarez
Horas:
- Ma1550
- Ma1640
- Mi0700
- Mi0750
- Ju0850
- Ju0940

View File

@ -0,0 +1,125 @@
titulo: Horarios 2019-2, Ingeniería de Sistemas.
años:
2do año:
Estadistica:
nombre: Estadistica Matemática, Probabilidades y Métodos Empíricos
abreviado: EMAT
Teoria:
A:
Docente: Antonia Quispe
Horas:
- Lu0850
- Lu0940
- Ju0700
- Ju0750
B:
Docente: Antonia Quispe
Horas:
- Ma1040
- Ma1130
- Ju1640
- Ju1740
Laboratorio:
A:
Docente: Antonia Quispe
Horas:
- Ma0850
- Ma0940
B:
Docente: Antonia Quispe
Horas:
- Lu1040
- Lu1130
C:
Docente: Antonia Quispe
Horas:
- Ju0850
- Ju0940
D:
Docente: Antonia Quispe
Horas:
- Vi1040
- Vi1130
Analisis y Diseño de Algoritmos:
nombre: Analisis y Diseño de Algoritmos
abreviado: ADA
Teoria:
A:
Docente: O. Ramirez
Horas:
- Lu1400
- Lu1450
- Mi1550
- Mi1640
B:
Docente: O. Ramirez
Horas:
- Lu1550
- Lu1640
- Mi1740
- Mi1830
Laboratorio:
A:
Docente: Cristian Portugal
Horas:
- Lu1400
- Lu1450
B:
Docente: Cristian Portugal
Horas:
- Lu1550
- Lu1640
C:
Docente: Cristian Portugal
Horas:
- Lu1740
- Lu1830
Enfoque Empresarial:
nombre: Enfoque Empresarial
abreviado: EE
Teoria:
A:
Docente: Juan C. Juarez
Horas:
- Lu1040
- Lu1130
- Lu1220
- Mi0850
- Mi0940
B:
Docente: Edward Zarate
Horas:
- Lu1830
- Ma1400
- Ma1450
- Vi1550
- Vi1640
3er año:
Construccion de Software:
nombre: Construcción de Software
abreviado: CS
Teoria:
A:
Docente: V. Cornejo
Horas:
- Lu0850
- Lu0940
Sistemas Operativos:
nombre: Sistemas Operativos
abreviado: SO
Teoria:
A:
Docente: Karim Guevara
Horas:
- Ma0700
- Ma0750
- Ju0700
- Ju0750
B:
Docente: Karim Guevara
Horas:
- Ju1400
- Ju1450
- Vi1400
- Vi1450

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,937 @@
titulo: Horarios 2020-2, Ingeniería de Sistemas.
descripcion: |
<b>Hay horas distintas/grupos eliminados en lab.</b>
<br>
Horarios de lab: https://drive.google.com/file/d/1SEYhSvpiWi2oplOSc9tkpVzPRpl91lLP/view
<br>
<br>
Ultima actualizacion: 12 de septiembre de 2020.
<br>
Puedes ver el historial de cambios en GitHub.
años:
1er año:
Realidad Nacional:
nombre: Realidad Nacional
abreviado: RN
Teoria:
A:
Docente: Hilda Rodriguez
Horas:
- Ma0940
- Ma1040
- Ma1130
B:
Docente: Amparto Yto
Horas:
- Ma1400
- Ma1450
- Ma1550
Calculo 1:
nombre: Cálculo en 1 variable
abreviado: C1V
Teoria:
A:
Docente: Paul Cheneaux
Horas:
- Ma1220
- Ma1310
- Mi0850
- Mi0940
- Mi1040
- Vi0700
- Vi0750
B:
Docente: Jorge Tarqui
Horas:
- Lu1550
- Lu1640
- Mi1550
- Mi1640
- Vi1400
- Vi1450
- Vi1550
Discretas 2:
nombre: Estructuras Discretas 2
abreviado: ED2
Teoria:
A:
Docente: Olha Sharhorodska
Horas:
- Vi0850
- Vi0940
- Ju1040
- Ju1130
B:
Docente: Olha Sharhorodska
Horas:
- Lu1400
- Lu1450
- Ju1400
- Ju1450
Web 1:
nombre: Programacion Web 1
abreviado: PW1
Teoria:
A:
Docente: Alfredo Paz
Horas:
- Lu1040
- Lu1130
B:
Docente: Carlo Corrales
Horas:
- Ma1640
- Ma1740
Laboratorio:
A:
Docente: Alfredo Paz
Horas:
- Ju1040
- Ju1130
- Vi1040
- Vi1130
B:
Docente: Alfredo Paz
Horas:
- Lu1550
- Lu1640
- Ju1550
- Ju1640
C:
Docente: Alfredo Paz
Horas:
- Ju0850
- Ju0940
- Vi0850
- Vi0940
D:
Docente: Carlo Corrales
Horas:
- Ma1830
- Ma1920
- Ju0850
- Ju0940
FP2:
nombre: Fundamentos de Programacion 2
abreviado: FP2
Teoria:
A:
Docente: Marco Aedo
Horas:
- Lu0850
- Lu0940
- Ju0850
- Ju0940
B:
Docente: Marco Aedo
Horas:
- Ma1830
- Ma1920
- Vi1640
- Vi1740
Laboratorio:
A:
Docente: Marco Aedo
Horas:
- Lu1040
- Lu1130
- Ju1040
- Ju1130
B:
Docente: Marco Aedo
Horas:
- Ma1640
- Ma1740
- Vi1830
- Vi1920
C:
Docente: R. Calienes
Horas:
- Lu1220
- Lu1310
- Ju1220
- Ju1310
D:
Docente: Y. Yari
Horas:
- Mi1220
- Mi1310
- Ju1550
- Ju1640
Comunicacion Integral:
nombre: Comunicacion Integral
abreviado: CI
Teoria:
A:
Docente: Ana Álvarez
Horas:
- Lu0700
- Lu0750
- Ju0700
- Ju0750
B:
Docente: Ana Álvarez
Horas:
- Lu1740
- Lu1830
- Mi1400
- Mi1450
2do año:
Ecologia:
nombre: Ecologia y Medio Ambiente
abreviado: ECA
Teoria:
A:
Docente: Marco Valdivia
Horas:
- Ju0940
- Ju1040
- Ju1130
B:
Docente: Luis Mendoza
Horas:
- Ju1400
- Ju1450
- Ju1550
Estadistica:
nombre: Estadistica y Matematica
abreviado: EMAT
Teoria:
A:
Docente: Julieta Flores
Horas:
- Mi0850
- Mi0940
- Ju1220
- Ju1310
B:
Docente: Julieta Flores
Horas:
- Mi1040
- Mi1130
- Ju1640
- Ju1740
Laboratorio:
A:
Docente: "?"
Horas:
- Lu1400
- Lu1450
B:
Docente: "?"
Horas:
- Ma1040
- Ma1130
C:
Docente: "?"
Horas:
- Ma1400
- Ma1450
D:
Docente: "?"
Horas:
- Lu1040
- Lu1130
Arquitectura de Computadoras:
nombre: Arquitectura de Computadoras
abreviado: AC
Teoria:
A:
Docente: Pedro Rodriguez
Horas:
- Vi1220
- Vi1310
- Vi1400
B:
Docente: Pedro Rodriguez
Horas:
- Ju1830
- Ju1920
- Ju2010
Laboratorio:
A:
Docente: Pedro Rodriguez
Horas:
- Vi1040
- Vi1130
B:
Docente: Pedro Rodriguez
Horas:
- Ju1400
- Ju1450
C:
Docente: Pedro Rodriguez
Horas:
- Ju1550
- Ju1640
D:
Docente: Pedro Rodriguez
Horas:
- Vi0850
- Vi0940
E:
Docente: Pedro Rodriguez
Horas:
- Vi0700
- Vi0750
Metodos de Investigacion y Redaccion:
nombre: Metodos de Investigacion y Redaccion
abreviado: MIR
Teoria:
A:
Docente: Norka Bedregal
Horas:
- Lu0750
- Lu0850
- Lu0940
B:
Docente: Norka Bedregal
Horas:
- Ma1740
- Ma1830
- Ma1920
C:
Docente: Rolando Cárdenas
Horas:
- Vi0750
- Vi0850
- Vi0940
Interaccion Humano Computador:
nombre: Interaccion Humano Computador
abreviado: IHC
Teoria:
A:
Docente: Richart Escobedo
Horas:
- Ma0700
- Ma0750
- Mi0700
- Mi0750
B:
Docente: Richart Escobedo
Horas:
- Ma1550
- Ma1640
- Mi1550
- Mi1640
Laboratorio:
A:
Docente: Richart Escobedo
Horas:
- Ma0850
- Ma0940
B:
Docente: Richart Escobedo
Horas:
- Ma1740
- Ma1830
C:
Docente: Richart Escobedo
Horas:
- Mi0850
- Mi0940
D:
Docente: Richart Escobedo
Horas:
- Mi1740
- Mi1830
Enfoque Empresarial:
nombre: Enfoque Empresarial
abreviado: EE
Teoria:
A:
Docente: Juan Carlos Juarez
Horas:
- Lu1740
- Lu1830
- Vi1740
- Vi1830
- Vi1920
B:
Docente: Juan C. Juarez Bueno
Horas:
- Mi1740
- Mi1830
- Mi1920
- Vi1450
- Vi1550
Analisis y Disenio de Algoritmos:
nombre: Analisis y Diseño de Algoritmos
abreviado: ADA
Teoria:
A:
Docente: Aurea Soriano
Horas:
- Ma0850
- Ma0940
- Ju0750
- Ju0850
B:
Docente: Aurea Soriano
Horas:
- Lu1550
- Lu1640
- Mi1220
- Mi1310
C:
Docente: Rolando Cárdenas
Horas:
- Mi1400
- Mi1450
- Vi1040
- Vi1130
Laboratorio:
A:
Docente: J. Cárdenas
Horas:
- Lu1220
- Lu1310
B:
Docente: J. Cárdenas
Horas:
- Ma1550
- Ma1640
C:
Docente: J. Cárdenas
Horas:
- Vi1310
- Vi1400
D:
Docente: J. Cárdenas
Horas:
- Mi1550
- Mi1640
E:
Docente: J. Cárdenas
Horas:
- Ma1040
- Ma1130
3er año:
FSI:
nombre: Fundamentos de Sistemas de Informacion
abreviado: FSI
Teoria:
A:
Docente: Juan Carlos Juarez
Horas:
- Lu0850
- Lu0940
- Lu1040
- Mi1040
- Mi1130
B:
Docente: Juan Carlos Juarez
Horas:
- Mi1550
- Mi1640
- Mi1740
- Ju1740
- Ju1830
Redes:
nombre: Redes y Comunicación de Datos
abreviado: RCD
Teoria:
A:
Docente: Lucy Delgado
Horas:
- Ma1220
- Ma1310
- Mi0850
- Mi0940
B:
Docente: Lucy Delgado
Horas:
- Lu1310
- Lu1400
- Ma1400
- Ma1450
Laboratorio:
A:
Docente: L. Laura
Horas:
- Mi1040
- Mi1130
B:
Docente: L. Laura
Horas:
- Ju1550
- Ju1640
C:
Docente: L. Laura
Horas:
- Mi1220
- Mi1310
Metodos Num:
nombre: Métodos numéricos
abreviado: MN
Teoria:
A:
Docente: Olha Sharhorodska
Horas:
- Vi1040
- Vi1130
- Vi1220
B:
Docente: Olha Sharhorodska
Horas:
- Lu1550
- Lu1640
- Lu1740
Laboratorio:
A:
Docente: Olha Sharodovska
Horas:
- Lu1130
- Lu1220
B:
Docente: Roni Apaza
Horas:
- Vi1550
- Vi1640
C:
Docente: Roni Apaza
Horas:
- Vi1740
- Vi1830
D:
Docente: Roni Apaza
Horas:
- Mi1830
- Mi1920
SO:
nombre: Sistemas Operativos
abreviado: SO
Teoria:
A:
Docente: Karim Guevara
Horas:
- Ma0700
- Ma0750
- Ju0850
- Ju0940
B:
Docente: Karim Guevara
Horas:
- Ma1550
- Ma1640
- Ju1550
- Ju1640
Laboratorio:
A:
Docente: Karim Guevara
Horas:
- Ma1400
- Ma1450
B:
Docente: Karim Guevara
Horas:
- Ju1040
- Ju1130
C:
Docente: Karim Guevara
Horas:
- Ju1400
- Ju1450
D:
Docente: Karim Guevara
Horas:
- Ju1220
- Ju1310
Construccion Soft:
nombre: Construccion de Software
abreviado: CS
Teoria:
A:
Docente: Jorge Chamby
Horas:
- Ma0850
- Ma0940
B:
Docente: Jorge Chamby
Horas:
- Ju1400
- Ju1450
Laboratorio:
A:
Docente: Jorge Chambi
Horas:
- Mi0700
- Mi0750
- Vi0850
- Vi0940
B:
Docente: M. Galarza
Horas:
- Lu1830
- Lu1920
- Vi1830
- Vi1920
C:
Docente: M. Galarza
Horas:
- Ju0700
- Ju0750
- Ma0700
- Ma0750
D:
Docente: M. Galarza
Horas:
- Ma1920
- Ma2010
- Mi1400
- Mi1450
TecDat:
nombre: Tecnologia de Objetos
abreviado: TO
Teoria:
A:
Docente: Oscar Ramírez
Horas:
- Ma1040
- Ma1130
- Ju1040
- Ju1130
B:
Docente: Oscar Ramírez
Horas:
- Mi1400
- Mi1450
- Vi1400
- Vi1450
Laboratorio:
A:
Docente: J. Cárdenas
Horas:
- Lu0700
- Lu0750
B:
Docente: J. Cárdenas
Horas:
- Lu1550
- Lu1640
C:
Docente: J. Cárdenas
Horas:
- Ju0850
- Ju0940
D:
Docente: J. Cárdenas
Horas:
- Ju1220
- Ju1310
4to año:
Intro Soft Ent:
nombre: Introduccion a Software de Entetenimiento
abreviado: IDSEe
Teoria:
A:
Docente: Diego Iquira
Horas:
- Lu0750
- Lu0850
- Lu0940
B:
Docente: Diego Iquira
Horas:
- Mi1550
- Mi1640
- Mi1740
Laboratorio:
A:
Docente: D. Iquira
Horas:
- Lu1220
- Lu1310
B:
Docente: D. Iquira
Horas:
- Ju1920
- Ju2010
Diseno y Arquitectura:
nombre: Diseño Y Arquitectura de Software
abreviado: DAS
Teoria:
A:
Docente: Percy Huertas
Horas:
- Lu1040
- Lu1130
- Mi1040
- Mi1130
B:
Docente: Percy Huertas
Horas:
- Mi1400
- Mi1450
- Ju1400
- Ju1450
Laboratorio:
A:
Docente: P. Huertas
Horas:
- Ma1740
- Ma1830
B:
Docente: Roni Apaza
Horas:
- Ma1830
- Ma1920
C:
Docente: Roni Apaza
Horas:
- Ju1740
- Ju1830
Gestion Proyecto Soft:
nombre: Gestion de Proyectos de Software
abreviado: GPS
Teoria:
A:
Docente: Jesús Silva
Horas:
- Vi1040
- Vi1130
B:
Docente: Oscar Ramírez
Horas:
- Lu1400
- Lu1450
Laboratorio:
A:
Docente: J. Silva
Horas:
- Ma1130
- Ma1220
B:
Docente: Oscar Ramírez
Horas:
- Ma1400
- Ma1450
C:
Docente: Oscar Ramírez
Horas:
- Ma1550
- Ma1640
Negocios Electronicos:
nombre: Negocios Electrónicos
abreviado: NE
Teoria:
A:
Docente: Cesar Baluarte
Horas:
- Mi0750
- Mi0850
- Mi0940
B:
Docente: Oscar Ramírez
Horas:
- Lu1550
- Lu1640
- Lu1740
Laboratorio:
A:
Docente: Cesar Baluarte
Horas:
- Ju1220
- Ju1310
B:
Docente: Oscar Ramírez
Horas:
- Mi1400
- Mi1450
Auditoria:
nombre: Auditoría de Sistemas
abreviado: AS
Teoria:
A:
Docente: Edward Zarate
Horas:
- Ma0700
- Ma0750
- Ma0850
- Ju0700
- Ju0750
B:
Docente: Edward Zarate
Horas:
- Ma1400
- Ma1450
- Ma1550
- Ju1550
- Ju1640
Aspectos Formales:
nombre: Aspectos Formales de Verificación y Especificación
abreviado: AFEV
Teoria:
A:
Docente: Elizabet Vidal
Horas:
- Ju0850
- Ju0940
B:
Docente: Maribel Molina
Horas:
- Vi1550
- Vi1640
Laboratorio:
A:
Docente: M. Molina
Horas:
- Mi1220
- Mi1310
B:
Docente: M. Molina
Horas:
- Mi1830
- Mi1920
Calidad Soft:
nombre: Calidad de Software
abreviado: CS
Teoria:
A:
Docente: Jesús Silva
Horas:
- Ju1040
- Ju1130
B:
Docente: Maribel Molina
Horas:
- Vi1400
- Vi1450
Laboratorio:
A:
Docente: J. Silva
Horas:
- Ju1220
- Ju1310
B:
Docente: J. Silva
Horas:
- Mi1550
- Mi1640
C:
Docente: M. Molina
Horas:
- Ma0700
- Ma0750
Intro Nueva Plat:
nombre: Introduccion al Desarrollo de Nuevas Plataformas
abreviado: IDNP
Teoria:
A:
Docente: Ernesto Suarez
Horas:
- Vi0700
- Vi0750
- Vi0850
B:
Docente: Ernesto Suarez
Horas:
- Vi1740
- Vi1830
- Vi1920
Laboratorio:
A:
Docente: Ernesto Suarez
Horas:
- Ju0850
- Ju0940
B:
Docente: Ernesto Suarez
Horas:
- Ju1550
- Ju1640
5to año:
Practicas:
nombre: Prácticas Pre Profesionales
abreviado: PPP
Teoria:
A:
Docente: Fabrizio Calienes
Horas:
- Lu0750
- Lu0850
- Ju0700
- Ju0750
- Vi0700
- Vi0750
B:
Docente: Carlo Corrales
Horas:
- Lu1400
- Lu1450
- Vi1400
- Vi1450
- Vi1550
Gestion:
nombre: Gestion de Emprendimiento de Software 2
abreviado: GES2
Teoria:
A:
Docente: Juan Carlos Zuñiga
Horas:
- Ma0850
- Ma0940
- Ma1030
B:
Docente: Juan Carlos Zuñiga
Horas:
- Ju1400
- Ju1450
- Ju1550
Proyecto Ing Soft:
nombre: Proyecto de Ingeniería de Software 2
abreviado: PIS2
Teoria:
A:
Docente: Freddy Gonzales
Horas:
- Ma1310
- Ma1400
- Ju0850
- Ju0940
Topicos Avanzados:
nombre: Tópicos Avanzados de Ing. de Software
abreviado: TAIS
Teoria:
A:
Docente: Robert Arisaca
Horas:
- Mi0940
- Mi1040
- Mi1130
B:
Docente: Robert Arisaca
Horas:
- Ma1450
- Ma1550
- Ma1640
Juegos:
nombre: Desarrollo de Software para Juegos
abreviado: DSJe
Teoria:
A:
Docente: José Sulla
Horas:
- Mi1450
- Mi1550
Inteligencia:
nombre: Inteligencia de Negocios
abreviado: IEe
Teoria:
A:
Docente: Yasiel Pérez
Horas:
- Vi0850
- Vi0940
Plataformas Emergentes:
nombre: Plataformas Emergentes
abreviado: PEe
Teoria:
A:
Docente: Yasiel Pérez
Horas:
- Vi1040
- Vi1130

5
public/img/auto.sh Executable file
View File

@ -0,0 +1,5 @@
ls > files
sed -E 's/(wall[0-9]*)\.([a-z]*)/cwebp \1\.\2 -o \1.webp/' files > ins
bash ins
rm ins
rm files

BIN
public/img/wall0.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
public/img/wall0.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

BIN
public/img/wall1.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 KiB

BIN
public/img/wall1.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

BIN
public/img/wall10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

BIN
public/img/wall10.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
public/img/wall11.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 KiB

BIN
public/img/wall11.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

BIN
public/img/wall12.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 332 KiB

BIN
public/img/wall12.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

BIN
public/img/wall13.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

BIN
public/img/wall13.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
public/img/wall14.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 KiB

BIN
public/img/wall14.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

BIN
public/img/wall15.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 KiB

BIN
public/img/wall15.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
public/img/wall16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 KiB

BIN
public/img/wall16.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
public/img/wall17.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

BIN
public/img/wall17.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
public/img/wall2.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

BIN
public/img/wall2.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
public/img/wall3.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

BIN
public/img/wall3.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 KiB

BIN
public/img/wall4.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB

BIN
public/img/wall4.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 942 KiB

BIN
public/img/wall5.jpeg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

BIN
public/img/wall5.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

BIN
public/img/wall6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
public/img/wall6.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
public/img/wall7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 KiB

BIN
public/img/wall7.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
public/img/wall8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
public/img/wall8.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
public/img/wall9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

BIN
public/img/wall9.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

View File

@ -1,38 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<html lang="es">
<head>
<meta charset="utf-8"/>
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="theme-color" content="#000000"/>
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>Solid App</title>
<title>Horarios - Solid</title>
<link rel="stylesheet" href="css/phosphor.min.css">
<link rel="stylesheet" href="css/global.css">
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

View File

@ -1,33 +0,0 @@
.App {
text-align: center;
}
.App-logo {
animation: App-logo-spin infinite 20s linear;
height: 40vmin;
pointer-events: none;
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: #b318f0;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

View File

@ -1,9 +0,0 @@
import { render } from 'solid-js/web';
import App from './App';
it('renders without crashing', () => {
const div = document.createElement('div');
const dispose = render(App, div);
div.textContent = '';
dispose();
});

View File

@ -1,23 +1,14 @@
import logo from './logo.svg';
import './App.css';
import { BarraSuperior } from "./BarraSuperior";
import { ContenedorHorarios } from "./ContenedorHorarios/";
import { Wallpaper } from "./Wallpaper";
function App() {
return (
<div class="App">
<header class="App-header">
<img src={logo} class="App-logo" alt="logo" />
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
class="App-link"
href="https://github.com/ryansolid/solid"
target="_blank"
rel="noopener noreferrer"
>
Learn Solid
</a>
</header>
<Wallpaper/>
<BarraSuperior/>
<br/>
<ContenedorHorarios/>
</div>
);
}

104
src/BarraSuperior.tsx Normal file
View File

@ -0,0 +1,104 @@
import { estilosGlobales } from "./Estilos";
import { StyleSheet, css } from "aphrodite";
import { numWallpaper, setNumWallpaper } from "./Store";
const totalWallpapers = 17;
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());
}
};
const avanzarWallpaper = () => {
const num = numWallpaper();
if (num < totalWallpapers) {
setNumWallpaper(num + 1);
localStorage.setItem("num-img", (num + 1).toString());
}
};
const clasesLeft = () =>
numWallpaper() <= 0
? "ph-arrow-left " + css(e.boton, e.botonDesactivado, e.botonLeft)
: "ph-arrow-left " + css(e.boton, e.botonLeft);
const clasesRight = () =>
numWallpaper() >= totalWallpapers
? "ph-arrow-right " + css(e.boton, e.botonDesactivado, e.botonRight)
: "ph-arrow-right " + css(e.boton, e.botonRight);
return <div className={css(estilosGlobales.inlineBlock, e.contCambiador)}>
<span className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>
<i
className={clasesLeft()}
onClick={retrocederWallpaper}
/>
Img. {numWallpaper() + 1}
<i
className={clasesRight()}
onClick={avanzarWallpaper}
/>
</span>
</div>;
}
export function BarraSuperior() {
const estilos = StyleSheet.create({
tituloPrincipal: {
fontWeight: "bold",
fontFamily: "'SF Pro Display', sans-serif"
}
});
return <header>
<a href="/" className={css(
estilosGlobales.contenedor,
estilosGlobales.inlineBlock,
estilosGlobales.contenedorCursor,
estilos.tituloPrincipal
)}>
Horarios Unsa
</a>
<a href="https://github.com" target="_blank" className={css(
estilosGlobales.contenedor,
estilosGlobales.inlineBlock,
estilosGlobales.contenedorCursor
)}>
GitHub
<i class="ph-arrow-up-right"/>
</a>
<span className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>2021-A</span>
<span className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>Ingeniería de Sistemas</span>
<CambiadorImg/>
</header>;
}

View File

@ -0,0 +1,23 @@
import { DatosHorario } from "../types/DatosHorario";
import { createEffect, Show, For } from "solid-js";
import { StyleSheet, css } from "aphrodite";
import { estilosGlobales } from "../Estilos";
export function Horarios(props: { data: DatosHorario }) {
const elAnios = <For each={Object.entries(props.data.años)}>
{([nombre]) =>
<div className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock, estilosGlobales.contenedorCursor)}>
{nombre}
</div>
}
</For>;
return <div>
{elAnios}
<br/>
<div className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>
Cargado :D
</div>
</div>;
}

View File

@ -0,0 +1,23 @@
import { estilosGlobales } from "../Estilos";
import { StyleSheet, css } from "aphrodite";
export function MiHorario() {
const e = StyleSheet.create({
horario: {
height: "20rem"
}
});
return <div>
<div className={css(
estilosGlobales.inlineBlock,
estilosGlobales.contenedor
)}>
Mi horario
</div>
<div className={css(
e.horario,
estilosGlobales.contenedor
)}/>
</div>;
}

View File

@ -0,0 +1,45 @@
import YAML from "yaml";
import { StyleSheet, css } from "aphrodite";
import { MiHorario } from "./MiHorario";
import { Horarios } from "./Horarios";
import { DatosHorario } from "../types/DatosHorario";
import { estilosGlobales } from "../Estilos";
import { Show, createSignal, createEffect, batch } from "solid-js";
const datosPromise = (async () => {
const file = await fetch("/horarios/2020_2_fps_ingenieriadesistemas.yaml");
const text = await file.text();
return YAML.parse(text) as DatosHorario;
})();
const ElemCargando = () =>
<div className={css(estilosGlobales.contenedor, estilosGlobales.inlineBlock)}>
Recuperando horarios...
</div>
export function ContenedorHorarios() {
const e = StyleSheet.create({
contenedor: {
display: "grid",
gridTemplateColumns: "50% 50%"
}
});
const [datosCargados, setDatosCargados] = createSignal(false);
const [datos, setDatos] = createSignal<DatosHorario | null>(null);
createEffect(async () => {
const datos = await datosPromise;
batch(() => {
setDatos(datos);
setDatosCargados(true);
});
});
return <div className={css(e.contenedor)}>
<MiHorario/>
<Show when={datosCargados()}>
<Horarios data={datos()!!}/>
</Show>
</div>;
}

24
src/Estilos.ts Normal file
View File

@ -0,0 +1,24 @@
import {StyleSheet} from "aphrodite";
export const estilosGlobales = StyleSheet.create({
contenedor: {
margin: "0.5rem",
padding: "0.75rem 0.75rem",
borderRadius: "10px",
backdropFilter: "blur(40px)",
backgroundColor: "rgba(100, 100, 100, 0.25)",
color: "white"
},
contenedorCursor: {
cursor: "pointer",
userSelect: "none",
transition: "background-color 200ms",
textDecoration: "underline",
":hover": {
backgroundColor: "rgba(255, 255, 255, 0.2)"
}
},
inlineBlock: {
display: "inline-block"
}
});

18
src/Store.ts Normal file
View File

@ -0,0 +1,18 @@
import { createSignal, createEffect } from "solid-js";
enum ModoColor {
Claro,
Oscuro,
Auto
}
const numImgGuardado = parseInt(localStorage.getItem("num-img") ?? "1");
console.log(numImgGuardado);
export const [modoColor, setModoColor] = createSignal(ModoColor.Oscuro);
export const [numWallpaper, setNumWallpaper] = createSignal(numImgGuardado);
createEffect(() => {
const num = numWallpaper();
localStorage.setItem("num-img", num.toString());
console.log("Establecer item!");
});

67
src/Wallpaper.tsx Normal file
View File

@ -0,0 +1,67 @@
import { StyleSheet, css } from "aphrodite";
import { numWallpaper } from "./Store";
import { createSignal, createMemo, createEffect, createState } from "solid-js";
const duracionTransicion = 250;
export function Wallpaper() {
const estilos = StyleSheet.create({
contenedorCover: {
position: "fixed",
width: "100vw",
height: "100vh",
top: "0",
left: "0",
backgroundColor: "#212121"
},
cover: {
width: "100vw",
height: "100vh",
backgroundPosition: "bottom",
backgroundSize: "cover",
zIndex: -1,
transition: `opacity ${duracionTransicion}ms`
},
coverTransicion: {
opacity: 0
}
});
const [estilosRaw, setEstilosRaw] = createState({
"background-image": `none`,
opacity: 1
});
createEffect(() => {
const numImg = numWallpaper();
setEstilosRaw("opacity", 0);
const promesa250ms = new Promise(resolve => {
setTimeout(resolve, duracionTransicion);
});
const url = `/img/wall${numImg}.webp`;
const img = new Image();
img.addEventListener("load", async () => {
await promesa250ms;
setEstilosRaw({
"background-image": `url('${url}')`,
opacity: 1
});
});
img.src = url;
});
const dummyMemo = () => {
console.log("Memo!");
return estilosRaw;
};
return <div className={css(estilos.contenedorCover)}>
<div
className={css(estilos.cover)}
style={{"background-image": estilosRaw["background-image"], opacity: estilosRaw.opacity}}
/>
</div>
}

View File

@ -1,13 +0,0 @@
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen",
"Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue",
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
code {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New",
monospace;
}

View File

@ -1,12 +1,6 @@
import "solid-js";
import { render } from 'solid-js/web';
import './index.css';
import App from './App';
import * as serviceWorker from './serviceWorker';
import "normalize.css";
render(App, document.getElementById('root') as Node);
// If you want your app to work offline and load faster, you can change
// unregister() to register() below. Note this comes with some pitfalls.
// Learn more about service workers: https://bit.ly/CRA-PWA
serviceWorker.unregister();

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 166 155.3"><path d="M163 35S110-4 69 5l-3 1c-6 2-11 5-14 9l-2 3-15 26 26 5c11 7 25 10 38 7l46 9 18-30z" fill="#76b3e1"/><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="27.5" y1="3" x2="152" y2="63.5"><stop offset=".1" stop-color="#76b3e1"/><stop offset=".3" stop-color="#dcf2fd"/><stop offset="1" stop-color="#76b3e1"/></linearGradient><path d="M163 35S110-4 69 5l-3 1c-6 2-11 5-14 9l-2 3-15 26 26 5c11 7 25 10 38 7l46 9 18-30z" opacity=".3" fill="url(#a)"/><path d="M52 35l-4 1c-17 5-22 21-13 35 10 13 31 20 48 15l62-21S92 26 52 35z" fill="#518ac8"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="95.8" y1="32.6" x2="74" y2="105.2"><stop offset="0" stop-color="#76b3e1"/><stop offset=".5" stop-color="#4377bb"/><stop offset="1" stop-color="#1f3b77"/></linearGradient><path d="M52 35l-4 1c-17 5-22 21-13 35 10 13 31 20 48 15l62-21S92 26 52 35z" opacity=".3" fill="url(#b)"/><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="18.4" y1="64.2" x2="144.3" y2="149.8"><stop offset="0" stop-color="#315aa9"/><stop offset=".5" stop-color="#518ac8"/><stop offset="1" stop-color="#315aa9"/></linearGradient><path d="M134 80a45 45 0 00-48-15L24 85 4 120l112 19 20-36c4-7 3-15-2-23z" fill="url(#c)"/><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="75.2" y1="74.5" x2="24.4" y2="260.8"><stop offset="0" stop-color="#4377bb"/><stop offset=".5" stop-color="#1a336b"/><stop offset="1" stop-color="#1a336b"/></linearGradient><path d="M114 115a45 45 0 00-48-15L4 120s53 40 94 30l3-1c17-5 23-21 13-34z" fill="url(#d)"/></svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -1,135 +0,0 @@
// This optional code is used to register a service worker.
// register() is not called by default.
// This lets the app load faster on subsequent visits in production, and gives
// it offline capabilities. However, it also means that developers (and users)
// will only see deployed updates on subsequent visits to a page, after all the
// existing tabs open on the page have been closed, since previously cached
// resources are updated in the background.
// To learn more about the benefits of this model and instructions on how to
// opt-in, read https://bit.ly/CRA-PWA
const isLocalhost = Boolean(
window.location.hostname === 'localhost' ||
// [::1] is the IPv6 localhost address.
window.location.hostname === '[::1]' ||
// 127.0.0.1/8 is considered localhost for IPv4.
window.location.hostname.match(
/^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
)
);
export function register(config) {
if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {
// The URL constructor is available in all browsers that support SW.
const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
if (publicUrl.origin !== window.location.origin) {
// Our service worker won't work if PUBLIC_URL is on a different origin
// from what our page is served on. This might happen if a CDN is used to
// serve assets; see https://github.com/facebook/create-react-app/issues/2374
return;
}
window.addEventListener('load', () => {
const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
if (isLocalhost) {
// This is running on localhost. Let's check if a service worker still exists or not.
checkValidServiceWorker(swUrl, config);
// Add some additional logging to localhost, pointing developers to the
// service worker/PWA documentation.
navigator.serviceWorker.ready.then(() => {
console.log(
'This web app is being served cache-first by a service ' +
'worker. To learn more, visit https://bit.ly/CRA-PWA'
);
});
} else {
// Is not localhost. Just register service worker
registerValidSW(swUrl, config);
}
});
}
}
function registerValidSW(swUrl, config) {
navigator.serviceWorker
.register(swUrl)
.then(registration => {
registration.onupdatefound = () => {
const installingWorker = registration.installing;
if (installingWorker == null) {
return;
}
installingWorker.onstatechange = () => {
if (installingWorker.state === 'installed') {
if (navigator.serviceWorker.controller) {
// At this point, the updated precached content has been fetched,
// but the previous service worker will still serve the older
// content until all client tabs are closed.
console.log(
'New content is available and will be used when all ' +
'tabs for this page are closed. See https://bit.ly/CRA-PWA.'
);
// Execute callback
if (config && config.onUpdate) {
config.onUpdate(registration);
}
} else {
// At this point, everything has been precached.
// It's the perfect time to display a
// "Content is cached for offline use." message.
console.log('Content is cached for offline use.');
// Execute callback
if (config && config.onSuccess) {
config.onSuccess(registration);
}
}
}
};
};
})
.catch(error => {
console.error('Error during service worker registration:', error);
});
}
function checkValidServiceWorker(swUrl, config) {
// Check if the service worker can be found. If it can't reload the page.
fetch(swUrl)
.then(response => {
// Ensure service worker exists, and that we really are getting a JS file.
const contentType = response.headers.get('content-type');
if (
response.status === 404 ||
(contentType != null && contentType.indexOf('javascript') === -1)
) {
// No service worker found. Probably a different app. Reload the page.
navigator.serviceWorker.ready.then(registration => {
registration.unregister().then(() => {
window.location.reload();
});
});
} else {
// Service worker found. Proceed as normal.
registerValidSW(swUrl, config);
}
})
.catch(() => {
console.log(
'No internet connection found. App is running in offline mode.'
);
});
}
export function unregister() {
if ('serviceWorker' in navigator) {
navigator.serviceWorker.ready.then(registration => {
registration.unregister();
});
}
}

30
src/types/DatosHorario.ts Normal file
View File

@ -0,0 +1,30 @@
interface Curso {
nombre: string,
abreviado: string,
Teoria: {
[grupo: string]: {
Docente: string,
Horas: string[]
}
}
Laboratorio?: {
[grupo: string]: {
Docente: string,
Horas: string[]
}
}
}
interface Anio {
[key: string]: {
[nombre: string]: Curso
}
}
export interface DatosHorario {
titulo: string,
descripcion: string,
años: Anio
}