2017-09-25 09:00:00 +00:00
|
|
|
<template lang="pug">
|
|
|
|
div
|
2017-10-08 23:36:53 +00:00
|
|
|
v-dialog(v-model='values.show', lazy, absolute, persistent, max-width='800', @keydown.esc='close()')
|
2017-09-27 11:48:57 +00:00
|
|
|
v-card.white--text
|
|
|
|
v-card-title.pb-2.pt-2
|
|
|
|
h2.title.white--text.mb-0 Results for #[strong {{ values.title }}]
|
|
|
|
v-spacer
|
2017-10-07 18:34:40 +00:00
|
|
|
v-tooltip(left)
|
|
|
|
v-btn(
|
|
|
|
flat, icon,
|
|
|
|
v-if='magnets.length',
|
|
|
|
@click='openSelected()',
|
|
|
|
slot='activator'
|
|
|
|
)
|
|
|
|
v-icon open_in_new
|
|
|
|
span Open all selected magnets
|
|
|
|
v-tooltip(left)
|
|
|
|
v-btn(
|
|
|
|
flat, icon,
|
|
|
|
v-if='magnets.length',
|
|
|
|
v-clipboard="selected.join(eol)",
|
|
|
|
@success='snack = true',
|
|
|
|
slot='activator'
|
|
|
|
)
|
|
|
|
v-icon.copy-icon content_copy
|
|
|
|
span Copy all selected magnets
|
2017-09-27 11:48:57 +00:00
|
|
|
v-divider
|
|
|
|
v-card-text.subheading.white--text
|
|
|
|
v-expansion-panel(popout, expand)
|
|
|
|
v-expansion-panel-content(
|
|
|
|
v-for='(name, index) in filteredNames',
|
|
|
|
:key='name',
|
|
|
|
:value='index === 0',
|
|
|
|
ripple
|
2017-09-27 07:46:10 +00:00
|
|
|
)
|
2017-09-27 11:48:57 +00:00
|
|
|
v-layout.entry-name(slot='header', justify-space-between)
|
|
|
|
span.vertical-centered {{ name }}
|
2017-10-07 18:34:40 +00:00
|
|
|
v-tooltip(left)
|
|
|
|
v-btn.ma-0(
|
|
|
|
icon,
|
|
|
|
@click.stop='selectAll(name)',
|
|
|
|
slot='activator'
|
|
|
|
)
|
|
|
|
v-icon select_all
|
|
|
|
span (un)select these magnets
|
2017-09-27 11:48:57 +00:00
|
|
|
v-layout.pt-2.pl-3.pr-3(wrap)
|
|
|
|
template(v-for='link in getLinks(name)')
|
|
|
|
v-flex(xs11).mt-1.pa-0.ep-name {{ link.name }}
|
|
|
|
v-flex(xs1)
|
|
|
|
v-checkbox.pt-0.primary--text(v-model='selected', :value='link.link', label='', hide-details)
|
|
|
|
v-flex.mt-1.mb-2.pa-0.ep-magnet #[a.white--text(:href='link.link') {{ link.link }}]
|
|
|
|
v-card-actions
|
|
|
|
v-spacer
|
2017-10-08 23:36:53 +00:00
|
|
|
v-btn.blue--text.darken-1(flat, @click='close()') Thanks!
|
2017-09-25 09:00:00 +00:00
|
|
|
v-snackbar(
|
|
|
|
:timeout='2500',
|
|
|
|
top,
|
|
|
|
v-model='snack'
|
2017-09-26 08:12:20 +00:00
|
|
|
) All selected magnets were copied to clipboard!
|
2017-09-25 09:00:00 +00:00
|
|
|
v-btn.pink--text(flat, @click='snack = false') Thanks!
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
export default {
|
|
|
|
data () {
|
|
|
|
return {
|
2017-09-25 11:55:58 +00:00
|
|
|
snack: false,
|
|
|
|
selected: []
|
2017-09-25 09:00:00 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
computed: {
|
|
|
|
values () {
|
|
|
|
return this.$store.state.downloader.modal
|
|
|
|
},
|
|
|
|
show () {
|
|
|
|
return this.values.show
|
|
|
|
},
|
|
|
|
eol () {
|
|
|
|
if (this.$store.state.platform === 'win32') {
|
|
|
|
return '\r\n'
|
|
|
|
} else {
|
|
|
|
return '\n'
|
|
|
|
}
|
2017-09-25 11:55:58 +00:00
|
|
|
},
|
|
|
|
magnets () {
|
|
|
|
return this.values.magnets.map((magnet) => {
|
|
|
|
return magnet.link
|
|
|
|
})
|
2017-09-26 07:56:41 +00:00
|
|
|
},
|
|
|
|
filteredNames () {
|
|
|
|
return this.$_.uniq(this.values.magnets.map((magnet) => {
|
|
|
|
return magnet.name.split(' ').slice(1, -3).join(' ')
|
|
|
|
}))
|
2017-09-25 09:00:00 +00:00
|
|
|
}
|
|
|
|
},
|
|
|
|
watch: {
|
|
|
|
show () {
|
|
|
|
this.show && this.$store.dispatch('player/play')
|
2017-09-26 07:56:41 +00:00
|
|
|
this.selected = this.magnets
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
2017-10-08 23:36:53 +00:00
|
|
|
close () {
|
|
|
|
this.$store.commit('downloader/closeModal')
|
|
|
|
},
|
2017-09-26 07:56:41 +00:00
|
|
|
getLinks (name) {
|
|
|
|
return this.values.magnets.map((magnet) => {
|
|
|
|
if (magnet.name.includes(name)) return magnet
|
|
|
|
}).filter((e) => typeof e !== 'undefined' && e)
|
|
|
|
},
|
|
|
|
selectAll (name) {
|
|
|
|
// Find all magnets with that name
|
|
|
|
const magnets = this.$_.map(this.values.magnets, (e) => {
|
2017-09-26 08:12:20 +00:00
|
|
|
if (e.name.includes(name)) return e.link
|
|
|
|
}).filter((e) => typeof e !== 'undefined' && e)
|
2017-09-26 07:56:41 +00:00
|
|
|
|
|
|
|
// Checking if some of them are present in current selected array
|
2017-09-27 07:46:10 +00:00
|
|
|
let allSelected = false
|
|
|
|
let counter = 0
|
2017-09-26 07:56:41 +00:00
|
|
|
this.$_.each(magnets, (magnet) => {
|
|
|
|
if (this.$_.find(this.selected, (o) => o === magnet)) {
|
2017-09-27 07:46:10 +00:00
|
|
|
++counter
|
|
|
|
if (counter === magnets.length) allSelected = true
|
2017-09-26 07:56:41 +00:00
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
// Selecting or unselecting accordingly
|
|
|
|
this.$_.each(magnets, (magnet) => {
|
2017-09-27 07:46:10 +00:00
|
|
|
allSelected
|
2017-09-26 07:56:41 +00:00
|
|
|
? this.selected = this.selected.filter((link) => link !== magnet)
|
|
|
|
: !this.selected.includes(magnet) && this.selected.push(magnet)
|
|
|
|
})
|
2017-09-27 07:46:10 +00:00
|
|
|
},
|
|
|
|
openSelected () {
|
|
|
|
this.$_.each(this.selected, (l) => window.open(l))
|
2017-09-25 09:00:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
2017-10-14 15:12:24 +00:00
|
|
|
<style lang="stylus" scoped>
|
2017-09-26 07:56:41 +00:00
|
|
|
.vertical-centered
|
2017-10-14 15:12:24 +00:00
|
|
|
display flex
|
|
|
|
align-items center
|
2017-09-25 09:00:00 +00:00
|
|
|
|
2017-09-26 07:56:41 +00:00
|
|
|
.copy-icon
|
2017-10-14 15:12:24 +00:00
|
|
|
display inline-block
|
|
|
|
cursor copy
|
2017-09-25 09:00:00 +00:00
|
|
|
|
2017-09-26 07:56:41 +00:00
|
|
|
.entry-name
|
2017-10-14 15:12:24 +00:00
|
|
|
font-size 18px
|
|
|
|
letter-spacing 2px
|
|
|
|
overflow hidden
|
|
|
|
text-overflow ellipsis
|
|
|
|
font-weight 300
|
2017-09-25 09:00:00 +00:00
|
|
|
|
2017-09-26 07:56:41 +00:00
|
|
|
.ep-name
|
2017-10-14 15:12:24 +00:00
|
|
|
font-size 16px
|
|
|
|
letter-spacing 1px
|
|
|
|
overflow hidden
|
|
|
|
text-overflow ellipsis
|
2017-09-25 09:00:00 +00:00
|
|
|
|
2017-09-26 07:56:41 +00:00
|
|
|
.ep-magnet
|
2017-10-14 15:12:24 +00:00
|
|
|
font-size 16px
|
|
|
|
letter-spacing 1px
|
|
|
|
overflow hidden
|
|
|
|
text-overflow ellipsis
|
|
|
|
text-align right
|
|
|
|
width 100%
|
2017-09-25 09:00:00 +00:00
|
|
|
</style>
|
|
|
|
|