diff --git a/app.ts b/app.ts index 4db3a55..461c10c 100644 --- a/app.ts +++ b/app.ts @@ -1,10 +1,11 @@ let express = require('express'); let app = express(); - app.use(express.static('dist')); + +// Que era history?? // @ts-ignore -app.use(history()); +// app.use(history()); app.use(express.urlencoded()); app.use(express.json()); @@ -14,4 +15,14 @@ app.get("/"); app.post('/links', require('./srv/LinksAnimes/obtenerLinks').obtenerLinks); app.put('/links', require('./srv/LinksAnimes/modificarLink').modificarLinks); -app.listen(8080); \ No newline at end of file +app.put('/a/', require('./srv/Admin/crearAnime').crearAnime); +app.get('/a/', require('./srv/Admin/obtenerTodosAnimes').obtenerTodosAnimes); + +app.get('/op/:id', require('./srv/Admin/OP/obtenerOPs').obtenerOPs); +app.post('/op/', require('./srv/Admin/OP/nuevoOP').nuevoOP); + +app.get('/eps/variantes/:anime_ID', require('./srv/Admin/Eps/obtenerVariantes').obtenerVariantes); +app.get('/eps/links/:opcion_ID', require('./srv/Admin/Eps/obtenerLinks').obtenerLinks); +app.post('/eps/links/', require('./srv/Admin/Eps/crearLink').crearLink); + +app.listen(8080); diff --git a/package.json b/package.json index 5fe24db..d5068bb 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,8 @@ "serve": "vue-cli-service serve", "build": "vue-cli-service build", "express": "vue-cli-service express:watch", - "express:run": "vue-cli-service express:run" + "express:run": "vue-cli-service express:run", + "deploy": "gcloud app deploy" }, "dependencies": { "@types/express": "^4.16.0", diff --git a/src/components/Administracion/lista-animes.vue b/src/components/Administracion/lista-animes.vue index fe9907b..9578ce3 100644 --- a/src/components/Administracion/lista-animes.vue +++ b/src/components/Administracion/lista-animes.vue @@ -13,7 +13,8 @@ {{ anime["anime_ID"] }} {{ anime["titulo"] }} - | | + | + | @@ -124,6 +125,15 @@ formCrear.appendChild(form); elemNuevo.appendChild(formCrear); + const botonCerrar = document.createElement("button"); + botonCerrar.className = "btn red"; + botonCerrar.addEventListener("click", () => { + elemActual.parentNode.removeChild(marco); + }); + botonCerrar.innerText = "Cerrar."; + elemNuevo.appendChild(document.createElement("br")); + elemNuevo.appendChild(botonCerrar); + elemNuevo.style.padding = "30px"; const xhr = new XMLHttpRequest(); @@ -148,12 +158,256 @@ marcof.appendChild(elemNuevo); elemActual.parentNode.insertBefore(marco, elemActual.nextSibling); + }, + verLinks (elemId, animeID) { + console.log("Viendo los links."); + /* TODO: Usar los datos para crear: + * Form para crear Variantes (usando un xhr) + * Form para crear links que se adecue a cada variante (usando un xhr diferente) + * con 2 peticiones xhr + * */ + const crear = data => { + const elemActual = document.getElementById(elemId); + + const marco = document.createElement("tr"); + marco.appendChild(document.createElement("td")); + const marcof = document.createElement("td"); + marco.appendChild(marcof); + marco.appendChild(document.createElement("td")); + + const elemNuevo = document.createElement("div"); + + for (const varianteID in data) { + if (data.hasOwnProperty(varianteID)) { + + const variante = data[varianteID]; + + const contenedor = document.createElement("div"); + + const varianteSpan = document.createElement("span"); + varianteSpan.className = "variante"; + varianteSpan.innerText = variante.formato; + contenedor.appendChild(varianteSpan); + + const resSpan = document.createElement("span"); + resSpan.className = "res"; + resSpan.innerText = variante.res; + contenedor.appendChild(resSpan); + + const servidorSpan = document.createElement("span"); + servidorSpan.className = "servidor"; + servidorSpan.innerText = variante.servidor; + contenedor.appendChild(servidorSpan); + + const botonVerVariante = document.createElement("span"); + botonVerVariante.className = "ver-variante"; + botonVerVariante.innerText = "Ver mas"; + let contenedorLinks; + const verLinks = () => { + botonVerVariante.innerText = "Cerrar"; + botonVerVariante.removeEventListener("click", verLinks); + botonVerVariante.addEventListener("click", ocultarLinks); + + const generarListaEps = data => { + contenedorLinks.innerHTML = ""; + + for (const epID in data) { + if (data.hasOwnProperty(epID)) { + const ep = data[epID]; + + const epDiv = document.createElement("div"); + epDiv.className = "eps-div"; + epDiv.innerHTML = `Ep. ${ep.num_ep}, ${ep.peso} y ${ep.visitas} visitas -> + ${ep.link.substr(0, 50)}...`; + contenedorLinks.appendChild(epDiv); + + } + } + + const agregarEpForm = document.createElement("form"); + agregarEpForm.class = "agregar-ep-form"; + agregarEpForm.onsubmit = () => false; + + const numEp = document.createElement("input"); + numEp.className = "agregar-ep-form__num-ep"; + numEp.placeholder = "Ep num"; + agregarEpForm.appendChild(numEp); + + const visitas = document.createElement("input"); + visitas.className = "agregar-ep-form__visitas"; + visitas.placeholder = "Visitas"; + visitas.value = '0'; + agregarEpForm.appendChild(visitas); + + const peso = document.createElement("input"); + peso.className = "agregar-ep-form__peso"; + peso.placeholder = "Peso"; + agregarEpForm.appendChild(peso); + + const link = document.createElement("input"); + link.className = "agregar-ep-form__link"; + link.placeholder = "link"; + agregarEpForm.appendChild(link); + + const botonCrear = document.createElement("button"); + botonCrear.className = "agregar-ep-form__boton-crear"; + botonCrear.innerText = "Crear ep"; + botonCrear.addEventListener("click", () => { + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/eps/links/"); + xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + xhr.onload = () => { + const respuesta = YAML.parse(xhr.responseText); + if (!respuesta.error) { + numEp.value = visitas.value = peso.value = link.value = ""; + } else { + console.log("Error :c"); + } + }; + const dataAEnviar = { + opcion_ID: variante.opcion_ID, + num_ep: numEp.value, + visitas: visitas.value, + link: link.value, + peso: peso.value + }; + xhr.send(`params=${YAML.stringify(dataAEnviar)}`); + + }); + agregarEpForm.appendChild(botonCrear); + + contenedorLinks.appendChild(agregarEpForm); + }; + + contenedorLinks = document.createElement("div"); + contenedorLinks.className = "identado"; + contenedorLinks.innerHTML = "Cargando..."; + contenedor.insertBefore(contenedorLinks, botonVerVariante.nextSibling); + + const xhr = new XMLHttpRequest(); + xhr.open("GET", `/eps/links/${variante.opcion_ID}`); + xhr.onload = () => { + generarListaEps(YAML.parse(xhr.responseText)); + console.log(xhr.responseText); + }; + xhr.send(); + }; + function ocultarLinks() { + botonVerVariante.innerText = "Ver mas"; + botonVerVariante.removeEventListener("click", ocultarLinks); + botonVerVariante.addEventListener("click", verLinks); + + contenedor.removeChild(contenedorLinks); + } + botonVerVariante.addEventListener("click", verLinks); + contenedor.appendChild(botonVerVariante); + + elemNuevo.appendChild(contenedor); + } + + } + + const botonCerrar = document.createElement("button"); + botonCerrar.className = "btn red"; + botonCerrar.innerText = "Cerrar."; + botonCerrar.addEventListener("click", () => { + elemActual.parentNode.removeChild(marco); + }); + elemNuevo.appendChild(document.createElement("br")); + elemNuevo.appendChild(botonCerrar); + + marcof.appendChild(elemNuevo); + elemActual.parentNode.insertBefore(marco, elemActual.nextSibling); + }; + + const xhr = new XMLHttpRequest(); + xhr.open("GET", `/eps/variantes/${animeID}`); + xhr.onload = () => { + const data = YAML.parse(xhr.responseText); + console.log(xhr.responseText); + crear(data); + }; + xhr.send(); + } } } -