Panel de descarga refactorizado para usar Pug y Coffeescript, asi como modularizarse.
This commit is contained in:
parent
3b8b6df07d
commit
b6908fe074
149
src/components/Anime/panel-descarga/panel-descarga.vue
Normal file
149
src/components/Anime/panel-descarga/panel-descarga.vue
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
<template lang="pug">
|
||||||
|
div
|
||||||
|
div.panel.tarjeta(v-if="datosCorrectos")
|
||||||
|
div.panel__titulo(:style="'background-color: ' + color")
|
||||||
|
p Descarga aquí
|
||||||
|
p.sigEp(v-if="sigEp >= 0") Siguiente: Episodio {{ sigEp }}
|
||||||
|
div.panel__titulo__variantes
|
||||||
|
variante(
|
||||||
|
v-for="(opcion, indice) in datos"
|
||||||
|
:indice="indice" :opcion="opcion" :funCambiar="cambiarDescripcionDescarga"
|
||||||
|
)
|
||||||
|
div.panel__descripcion.fondo1
|
||||||
|
links(
|
||||||
|
v-for="(opcion, indice) in datos"
|
||||||
|
:opcion="opcion" :indice="indice" :color="color" :enEmision="sigEp >= 0"
|
||||||
|
)
|
||||||
|
|
||||||
|
div(v-else) Recuperando los eps del servidor...
|
||||||
|
//
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="coffee">
|
||||||
|
import YAML from "yaml"
|
||||||
|
import variante from "./variante.vue"
|
||||||
|
import links from "./links.vue"
|
||||||
|
|
||||||
|
export default
|
||||||
|
name: "panelDeDescarga",
|
||||||
|
components:
|
||||||
|
links: links
|
||||||
|
variante: variante
|
||||||
|
data: ->
|
||||||
|
posActual: '1',
|
||||||
|
sigEp: -1
|
||||||
|
datos: {},
|
||||||
|
datosCorrectos: false,
|
||||||
|
mostrarSpinnerParaCargaDeEps: false
|
||||||
|
props:
|
||||||
|
animeid:
|
||||||
|
type: Number,
|
||||||
|
required: true
|
||||||
|
color:
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
cambiarAviso:
|
||||||
|
type: Function,
|
||||||
|
required: true
|
||||||
|
methods:
|
||||||
|
cambiarDescripcionDescarga: (idDestino) ->
|
||||||
|
quitarClase = (nombre, nombreClase) =>
|
||||||
|
posInicial = nombre.indexOf nombreClase
|
||||||
|
if posInicial != -1
|
||||||
|
nombre.substring(0, posInicial - 1)
|
||||||
|
else
|
||||||
|
nombre
|
||||||
|
|
||||||
|
elemAnterior = document.getElementById "tarjeta#{this.posActual}"
|
||||||
|
elemNuevo = document.getElementById "tarjeta#{idDestino}"
|
||||||
|
|
||||||
|
opcionAnterior = document.getElementById "opcion#{this.posActual}"
|
||||||
|
opcionNueva = document.getElementById "opcion#{idDestino}"
|
||||||
|
|
||||||
|
if elemNuevo && elemAnterior && opcionAnterior && opcionNueva
|
||||||
|
this.posActual = idDestino
|
||||||
|
|
||||||
|
elemAnterior.style.display = "none"
|
||||||
|
opcionAnterior.style.backgroundColor = "transparent"
|
||||||
|
opcionAnterior.className =
|
||||||
|
quitarClase opcionNueva.className, "panel__titulo__variantes__variante--activa"
|
||||||
|
|
||||||
|
elemNuevo.style.display = "block"
|
||||||
|
opcionNueva.style.backgroundColor = opcionNueva.getAttribute "color-min"
|
||||||
|
opcionNueva.className += " panel__titulo__variantes__variante--activa"
|
||||||
|
|
||||||
|
else
|
||||||
|
console.log "Woah, elemNuevo && elemAnterior && opcionAnterior && opcionNueva no se cumple...\n" +
|
||||||
|
elemNuevo + " " + elemAnterior + " " + opcionAnterior + " " + opcionNueva
|
||||||
|
|
||||||
|
incrementarContador: (ep_ID, evento) ->
|
||||||
|
xhr = new XMLHttpRequest();
|
||||||
|
xhr.open "PUT", "#{this.$store.state.servidor}/links"
|
||||||
|
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
|
||||||
|
xhr.onload = ->
|
||||||
|
console.log xhr.responseText
|
||||||
|
xhr.send "ep_ID=#{ep_ID}"
|
||||||
|
|
||||||
|
created: ->
|
||||||
|
xhr = new XMLHttpRequest()
|
||||||
|
vm = this
|
||||||
|
|
||||||
|
xhr.open "POST", "#{this.$store.state.servidor}/links"
|
||||||
|
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
|
||||||
|
xhr.onload = ->
|
||||||
|
try
|
||||||
|
data = YAML.parse xhr.responseText
|
||||||
|
if data.exito
|
||||||
|
vm.datos = data.payload["opciones"]
|
||||||
|
vm.sigEp = data.payload.sigEp
|
||||||
|
vm.datosCorrectos = true
|
||||||
|
vm.cambiarAviso data.payload.aviso
|
||||||
|
else
|
||||||
|
vm.mostrarSpinnerParaCargaDeEps = false
|
||||||
|
console.log ("Error al recibir los eps del anime. resp:\n" + xhr.responseText)
|
||||||
|
catch e
|
||||||
|
vm.mostrarSpinnerParaCargaDeEps = false
|
||||||
|
console.log ("Error al recibir los eps del anime:\n" + e + "\n" + xhr.responseText)
|
||||||
|
|
||||||
|
xhr.send "animeID=#{this.animeid}"
|
||||||
|
#
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="sass">
|
||||||
|
@import "../../../assets/sass/variables"
|
||||||
|
|
||||||
|
.aviso
|
||||||
|
padding: 12px
|
||||||
|
|
||||||
|
.icono-pequeno
|
||||||
|
font-size: 15px
|
||||||
|
padding: 0 5px
|
||||||
|
cursor: default
|
||||||
|
|
||||||
|
.panel__titulo
|
||||||
|
border-radius: 10px 10px 0 0
|
||||||
|
font:
|
||||||
|
family: Muli, "Open Sans", sans-serif
|
||||||
|
size: xx-large
|
||||||
|
weight: bold
|
||||||
|
color: white
|
||||||
|
text-align: center
|
||||||
|
|
||||||
|
.sigEp
|
||||||
|
font-size: large
|
||||||
|
|
||||||
|
.panel__titulo__variantes
|
||||||
|
text-align: left
|
||||||
|
|
||||||
|
.panel__titulo__variantes__variante--activa
|
||||||
|
font-weight: bold
|
||||||
|
text-decoration: underline
|
||||||
|
|
||||||
|
.panel__descripcion
|
||||||
|
padding: 25px 15px
|
||||||
|
border-radius: 0 0 10px 10px
|
||||||
|
|
||||||
|
.panel
|
||||||
|
border-radius: 3px
|
||||||
|
</style>
|
Loading…
Reference in New Issue
Block a user