|
@@ -4,28 +4,28 @@
|
|
|
<div class="modal-card">
|
|
|
<header class="modal-card-head">
|
|
|
<p class="modal-card-title">Add Songs to Station</p>
|
|
|
- <button class="delete" @click="$parent.toggleModal()" ></button>
|
|
|
+ <button class="delete" @click="$parent.toggleModal('addSongToQueue')" ></button>
|
|
|
</header>
|
|
|
<section class="modal-card-body">
|
|
|
<div class="control is-grouped">
|
|
|
<p class="control is-expanded">
|
|
|
- <input class="input" type="text" placeholder="YouTube Query" v-model="$parent.querySearch">
|
|
|
+ <input class="input" type="text" placeholder="YouTube Query" v-model="querySearch">
|
|
|
</p>
|
|
|
<p class="control">
|
|
|
- <a class="button is-info" @click="$parent.submitQuery()">
|
|
|
+ <a class="button is-info" @click="submitQuery()">
|
|
|
Search
|
|
|
</a>
|
|
|
</p>
|
|
|
</div>
|
|
|
<table class="table">
|
|
|
<tbody>
|
|
|
- <tr v-for="result in $parent.queryResults">
|
|
|
+ <tr v-for="result in queryResults">
|
|
|
<td>
|
|
|
<img :src="result.thumbnail" />
|
|
|
</td>
|
|
|
<td>{{ result.title }}</td>
|
|
|
<td>
|
|
|
- <a class="button is-success" @click="$parent.addSongToQueue(result.id)">
|
|
|
+ <a class="button is-success" @click="addSongToQueue(result.id)">
|
|
|
Add
|
|
|
</a>
|
|
|
</td>
|
|
@@ -35,4 +35,53 @@
|
|
|
</section>
|
|
|
</div>
|
|
|
</div>
|
|
|
-</template>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import { Toast } from 'vue-roaster';
|
|
|
+
|
|
|
+ export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ querySearch: '',
|
|
|
+ queryResults: [],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ addSongToQueue: function (songId) {
|
|
|
+ let _this = this;
|
|
|
+ _this.socket.emit('queueSongs.add', songId, data => {
|
|
|
+ if (data.status !== 'success') {
|
|
|
+ Toast.methods.addToast(`Error: ${data.message}`, 8000);
|
|
|
+ } else {
|
|
|
+ Toast.methods.addToast(`${data.message}`, 4000);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ submitQuery: function () {
|
|
|
+ let _this = this;
|
|
|
+ _this.socket.emit('apis.searchYoutube', _this.querySearch, results => {
|
|
|
+ results = results.data;
|
|
|
+ _this.queryResults = [];
|
|
|
+ for (let i = 0; i < results.items.length; i++) {
|
|
|
+ _this.queryResults.push({
|
|
|
+ id: results.items[i].id.videoId,
|
|
|
+ url: `https://www.youtube.com/watch?v=${this.id}`,
|
|
|
+ title: results.items[i].snippet.title,
|
|
|
+ thumbnail: results.items[i].snippet.thumbnails.default.url
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ ready: function () {
|
|
|
+ let _this = this;
|
|
|
+ let socketInterval = setInterval(() => {
|
|
|
+ if (!!_this.$parent.$parent.socket) {
|
|
|
+ _this.socket = _this.$parent.$parent.socket;
|
|
|
+ clearInterval(socketInterval);
|
|
|
+ }
|
|
|
+ }, 100);
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|