Actualizado proyecto a Vue3

add-license-1
Araozu 2020-07-28 09:21:00 -05:00
parent ce7413e3f4
commit 2dd4ea2a9a
12 changed files with 166 additions and 145 deletions

View File

@ -12,7 +12,7 @@
"coffee-loader": "^1.0.0", "coffee-loader": "^1.0.0",
"coffeescript": "^2.5.1", "coffeescript": "^2.5.1",
"json-loader": "^0.5.7", "json-loader": "^0.5.7",
"normalize.css": "^8.0.1", "normalize-css": "^2.3.1",
"pug": "2.0.4", "pug": "2.0.4",
"pug-plain-loader": "^1.0.0", "pug-plain-loader": "^1.0.0",
"vue": "^3.0.0-rc.4", "vue": "^3.0.0-rc.4",

View File

@ -3,7 +3,7 @@ dependencies:
coffee-loader: 1.0.0_f473fea5d69d100879c6b4e11cc445d4 coffee-loader: 1.0.0_f473fea5d69d100879c6b4e11cc445d4
coffeescript: 2.5.1 coffeescript: 2.5.1
json-loader: 0.5.7 json-loader: 0.5.7
normalize.css: 8.0.1 normalize-css: 2.3.1
pug: 2.0.4 pug: 2.0.4
pug-plain-loader: 1.0.0_pug@2.0.4 pug-plain-loader: 1.0.0_pug@2.0.4
vue: 3.0.0-rc.4 vue: 3.0.0-rc.4
@ -4027,6 +4027,10 @@ packages:
/inherits/2.0.4: /inherits/2.0.4:
resolution: resolution:
integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
/insert-css/0.0.0:
dev: false
resolution:
integrity: sha1-IwS/pviTq+y4/5yo2cdgXZTPKRE=
/internal-ip/4.3.0: /internal-ip/4.3.0:
dependencies: dependencies:
default-gateway: 4.2.0 default-gateway: 4.2.0
@ -5052,6 +5056,12 @@ packages:
/node-releases/1.1.60: /node-releases/1.1.60:
resolution: resolution:
integrity: sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA== integrity: sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==
/normalize-css/2.3.1:
dependencies:
insert-css: 0.0.0
dev: false
resolution:
integrity: sha1-/APjuR46Uap6GDa657K2rG1R4VY=
/normalize-package-data/2.5.0: /normalize-package-data/2.5.0:
dependencies: dependencies:
hosted-git-info: 2.8.8 hosted-git-info: 2.8.8
@ -5096,10 +5106,6 @@ packages:
node: '>=6' node: '>=6'
resolution: resolution:
integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
/normalize.css/8.0.1:
dev: false
resolution:
integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==
/npm-run-path/2.0.2: /npm-run-path/2.0.2:
dependencies: dependencies:
path-key: 2.0.1 path-key: 2.0.1
@ -7999,7 +8005,7 @@ specifiers:
coffee-loader: ^1.0.0 coffee-loader: ^1.0.0
coffeescript: ^2.5.1 coffeescript: ^2.5.1
json-loader: ^0.5.7 json-loader: ^0.5.7
normalize.css: ^8.0.1 normalize-css: ^2.3.1
pug: 2.0.4 pug: 2.0.4
pug-plain-loader: ^1.0.0 pug-plain-loader: ^1.0.0
sass: ^1.26.5 sass: ^1.26.5

View File

@ -43,7 +43,7 @@ div.contenedor(:style="anchoBarraLateral")
cambiarEstadoBarraLateral = => barraLateralOculta.value = !barraLateralOculta.value cambiarEstadoBarraLateral = => barraLateralOculta.value = !barraLateralOculta.value
setTimeout (=> setTimeout (=>
resRaw = await fetch "/horarios/#{año}_#{periodo}_#{facultad}_#{escuela}.yaml" resRaw = await fetch "/horarios/#{año.value}_#{periodo.value}_#{facultad.value}_#{escuela.value}.yaml"
res = YAML.parse await resRaw.text() res = YAML.parse await resRaw.text()
store.commit "cambiarDatos", res store.commit "cambiarDatos", res
), 0 ), 0

View File

@ -109,7 +109,6 @@ div.lateral
} }
export default { export default {
name: "barra-lateral"
components: {vCheckBox} components: {vCheckBox}
props: props:
barraOculta: barraOculta:

View File

@ -30,6 +30,7 @@ div
{ {
abierto abierto
reiniciarTablaVue
} }
export default { export default {

View File

@ -4,7 +4,7 @@ div.info_curso(:style="estiloCurso")
) )
// input.marcador_curso(type="checkbox" v-model="cursoAgregado") // input.marcador_curso(type="checkbox" v-model="cursoAgregado")
span.ancho {{ curso.abreviado }} >  span.ancho | {{ curso.abreviado }} > 
| {{ curso.nombre }} | {{ curso.nombre }}
table.datos table.datos
tr tr
@ -40,6 +40,8 @@ div.info_curso(:style="estiloCurso")
</template> </template>
<script lang="coffee"> <script lang="coffee">
import {computed, onMounted, onUnmounted} from "vue"
import {useStore} from "vuex"
import { import {
resaltarCurso resaltarCurso
removerResaltadoCurso removerResaltadoCurso
@ -47,10 +49,141 @@ div.info_curso(:style="estiloCurso")
removerResaltadoGrupo removerResaltadoGrupo
obtenerClaseGrupoCurso obtenerClaseGrupoCurso
} from "./tablaHorarios/funcionesResaltado.coffee" } from "./tablaHorarios/funcionesResaltado.coffee"
import bloque from "./curso/bloque" import bloque from "./curso/bloque"
export default setup = (props) =>
store = useStore()
esMiHorario = computed (=> props.nombreAño is "Mi horario")
teoria = computed (=>
profesores = {}
for n, grupo of props.curso.Teoria
docente = grupo.Docente
unless profesores[docente]?
profesores[docente] = []
profesores[docente].push(n)
profesores
)
laboratorio = computed (=>
profesores = {}
for n, grupo of props.curso.Laboratorio
docente = grupo.Docente
unless profesores[docente]?
profesores[docente] = []
profesores[docente].push(n)
profesores
)
laboratorioVacio = computed (=>
labs = laboratorio.value
estaVacio = yes
for i of labs
estaVacio = no
break
estaVacio
)
nombreAñoMin = computed (=>
nombreAño = props.nombreAño
nombreAño.substring 0, nombreAño.indexOf " "
)
idCurso = computed (=>
if nombreAñoMin.value is "Mi"
props.nombreCurso
else
"_" + nombreAñoMin.value + props.curso.abreviado
)
cursoAgregado = computed(=>
cursosUsuario = store.state.horarioUsuario
for idCurso, _ of cursosUsuario
if idCurso is idCurso.value then return true
false
)
estiloCurso = computed(=>
if cursoAgregado.value then { backgroundColor: "var(--colorHover)" }
else {}
)
agregarCursoAMiHorario = =>
if cursoAgregado.value
store.commit "removerCursoMiHorario", idCurso.value
else
store.commit "agregarCursoAMiHorario", {
nombre: idCurso.value
datos: curso.value
}
obtenerClase = (grupo, esLab) =>
obtenerClaseGrupoCurso props.nombreAño, props.curso.abreviado, grupo, esLab
procesarTeoria = =>
cursoAbreviado = props.curso.abreviado
curso = props.curso
nombreStore = "_" + nombreAñoMin.value
for nombreGrupo, { Horas } of curso.Teoria
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: false }
idCelda = nombreStore + horaId
store.commit "agregarACelda", {idCelda, datos}
for nombreGrupo, { Horas } of curso.Laboratorio
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: true }
idCelda = nombreStore + horaId
store.commit "agregarACelda", {idCelda, datos}
desprocesarTeoria = =>
cursoAbreviado = props.curso.abreviado
curso = props.curso
nombreStore = "_" + nombreAñoMin.value
for nombreGrupo, { Horas } of curso.Teoria
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: no }
idCelda = nombreStore + horaId
store.commit "quitarDeCelda", idCelda
for nombreGrupo, { Horas } of curso.Laboratorio
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: yes }
idCelda = nombreStore + horaId
store.commit "quitarDeCelda", idCelda
resaltarTodasCeldas = =>
resaltarCurso props.nombreAño, props.curso.abreviado
quitarResaltadoCeldas = =>
removerResaltadoCurso props.nombreAño, props.curso.abreviado
onMounted procesarTeoria
onUnmounted desprocesarTeoria
{
esMiHorario
teoria
laboratorio
laboratorioVacio
nombreAñoMin
idCurso
cursoAgregado
estiloCurso
agregarCursoAMiHorario
obtenerClase
procesarTeoria
desprocesarTeoria
resaltarTodasCeldas
quitarResaltadoCeldas
}
export default {
name: "curso" name: "curso"
components: {bloque} components: {bloque}
props: props:
@ -63,115 +196,8 @@ div.info_curso(:style="estiloCurso")
nombreCurso: nombreCurso:
type: String type: String
required: true required: true
computed: setup
esMiHorario: -> @nombreAño is "Mi horario" }
teoria: ->
vm = this
profesores = {}
for n, grupo of vm.curso.Teoria
docente = grupo.Docente
unless profesores[docente]?
profesores[docente] = []
profesores[docente].push(n)
profesores
laboratorio: ->
vm = this
profesores = {}
for n, grupo of vm.curso.Laboratorio
docente = grupo.Docente
unless profesores[docente]?
profesores[docente] = []
profesores[docente].push(n)
profesores
laboratorioVacio: ->
labs = this.laboratorio
estaVacio = yes
for i of labs
estaVacio = no
break
estaVacio
nombreAñoMin: ->
nombreAño = @nombreAño
nombreAño.substring 0, nombreAño.indexOf " "
idCurso: ->
if @nombreAñoMin is "Mi"
@nombreCurso
else
"_" + @nombreAñoMin + @curso.abreviado
cursoAgregado: ->
cursosUsuario = @$store.state.horarioUsuario
for idCurso, _ of cursosUsuario
if idCurso is @idCurso then return true
false
estiloCurso: ->
if @cursoAgregado then { backgroundColor: "var(--colorHover)" }
else {}
methods:
agregarCursoAMiHorario: ->
if @cursoAgregado
@$store.commit "removerCursoMiHorario", @idCurso
else
idCurso = @idCurso
nombre = @nombreCurso
datos = @curso
@$store.commit "agregarCursoAMiHorario", { nombre: idCurso, datos: datos }
obtenerClase: (grupo, esLab) ->
obtenerClaseGrupoCurso @nombreAño, @curso.abreviado, grupo, esLab
procesarTeoria: () ->
cursoAbreviado = @curso.abreviado
curso = @curso
nombreStore = "_" + @nombreAñoMin
for nombreGrupo, { Horas } of curso.Teoria
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: no }
idCelda = nombreStore + horaId
@$store.commit "agregarACelda", {idCelda, datos}
for nombreGrupo, { Horas } of curso.Laboratorio
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: yes }
idCelda = nombreStore + horaId
@$store.commit "agregarACelda", {idCelda, datos}
desprocesarTeoria: () ->
cursoAbreviado = @curso.abreviado
curso = @curso
nombreStore = "_" + @nombreAñoMin
for nombreGrupo, { Horas } of curso.Teoria
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: no }
idCelda = nombreStore + horaId
@$store.commit "quitarDeCelda", idCelda
for nombreGrupo, { Horas } of curso.Laboratorio
for horaId in Horas
datos = { cursoAbreviado, nombreGrupo, esLab: yes }
idCelda = nombreStore + horaId
@$store.commit "quitarDeCelda", idCelda
resaltarTodasCeldas: () ->
resaltarCurso @nombreAño, @curso.abreviado
quitarResaltadoCeldas: () ->
removerResaltadoCurso @nombreAño, @curso.abreviado
mounted: ->
@procesarTeoria()
beforeDestroy: ->
@desprocesarTeoria()
# #
</script> </script>
@ -223,11 +249,8 @@ div.info_curso(:style="estiloCurso")
.ancho .ancho
font: font:
family: "Fira Code", monospace family: "JetBrains Mono", monospace
user-select: none user-select: none
// //
</style> </style>

View File

@ -9,7 +9,7 @@ td
@mouseleave="quitarResaltadoGrupo(grupo)" @mouseleave="quitarResaltadoGrupo(grupo)"
@click="toggleActivo(grupo)" @click="toggleActivo(grupo)"
) )
| {{ esLab? 'L': 'T' }}{{ grupo }}&nbsp; | &nbsp;{{ esLab? 'L': 'T' }}{{ grupo }}&nbsp;
// //
</template> </template>
@ -61,10 +61,9 @@ td
<style scoped lang="sass"> <style scoped lang="sass">
.ancho .ancho
font: font:
family: "Fira Code", monospace family: "JetBrains Mono", monospace
user-select: none user-select: none
// //

View File

@ -3,8 +3,8 @@ span.celda(:class="clases" :eslab="datos.esLab? 'true': 'false'"
@mouseenter="resaltarCeldasGrupo" @mouseenter="resaltarCeldasGrupo"
@mouseleave="quitarResaltadoGrupo" @mouseleave="quitarResaltadoGrupo"
@click="toggleActivo") @click="toggleActivo")
| {{ datos.cursoAbreviado }} | &nbsp;{{ datos.cursoAbreviado }}
span {{ (datos.esLab? "L": "") + datos.nombreGrupo }}&nbsp; span &nbsp;{{ (datos.esLab? "L": "") + datos.nombreGrupo }}&nbsp;
// //
</template> </template>

View File

@ -1,6 +1,6 @@
<template lang="pug"> <template lang="pug">
label.container {{ txt }} label.container {{ txt }}
input(type="checkbox" :checked="checked" @input="$emit('change', $event.target.checked)") input(type="checkbox" :checked="modelValue" @input="$emit('update:modelValue', $event.target.checked)")
span.checkmark span.checkmark
// //
@ -10,9 +10,6 @@ label.container {{ txt }}
export default export default
name: "v-checkbox" name: "v-checkbox"
model:
prop: "checked"
event: "change"
props: props:
txt: txt:
type: String type: String
@ -20,6 +17,9 @@ label.container {{ txt }}
checked: checked:
type: Boolean type: Boolean
required: true required: true
modelValue:
type: Boolean
required: true
# #
</script> </script>

View File

@ -2,7 +2,7 @@ import { createApp } from 'vue';
import App from './App.vue'; import App from './App.vue';
import router from './router'; import router from './router';
import store from './store'; import store from './store';
import "normalize.css"; import "normalize-css";
import "./sass/Global.sass"; import "./sass/Global.sass";
import "./sass/colores.sass"; import "./sass/colores.sass";

View File

@ -42,7 +42,6 @@ div.home
} }
export default { export default {
name: 'home'
components: {anio, vCheckBox} components: {anio, vCheckBox}
setup setup
} }

View File

@ -12,7 +12,7 @@ module.exports = {
}, },
plugins: [ plugins: [
new webpack.DefinePlugin({ new webpack.DefinePlugin({
__VUE_OPTIONS_API__: false, __VUE_OPTIONS_API__: true,
__VUE_PROD_DEVTOOLS__: true __VUE_PROD_DEVTOOLS__: true
}) })
], ],
@ -21,11 +21,5 @@ module.exports = {
disableHostCheck: true disableHostCheck: true
} }
}, },
productionSourceMap: false, productionSourceMap: false
pwa: {
workboxPluginMode: "InjectManifest",
workboxOptions: {
swSrc: __dirname + "/public/service-worker.js"
}
}
}; };