|
@@ -1,106 +0,0 @@
|
|
|
-<template>
|
|
|
- <div class='sidebar' transition='slide' v-if='$parent.sidebars.officialqueue'>
|
|
|
- <div class='inner-wrapper'>
|
|
|
- <div class='title'>Official Queue</div>
|
|
|
-
|
|
|
- <article class="media">
|
|
|
- <figure class="media-left">
|
|
|
- <p class="image is-64x64">
|
|
|
- <img :src="$parent.currentSong.thumbnail" onerror="this.src='/assets/notes-transparent.png'">
|
|
|
- </p>
|
|
|
- </figure>
|
|
|
- <div class="media-content">
|
|
|
- <div class="content">
|
|
|
- <p>
|
|
|
- Current Song: <strong>{{ $parent.currentSong.title }}</strong>
|
|
|
- <br>
|
|
|
- <small>{{ $parent.currentSong.artists }}</small>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="media-right">
|
|
|
- {{ $parent.formatTime($parent.currentSong.duration) }}
|
|
|
- </div>
|
|
|
- </article>
|
|
|
-
|
|
|
- <article class="media" v-for='song in playlist'>
|
|
|
- <div class="media-content">
|
|
|
- <div class="content">
|
|
|
- <p>
|
|
|
- <strong>{{ song.title }}</strong>
|
|
|
- <br>
|
|
|
- <small>{{ song.artists }}</small>
|
|
|
- </p>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </article>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-</template>
|
|
|
-
|
|
|
-<script>
|
|
|
- import io from '../../io';
|
|
|
-
|
|
|
- export default {
|
|
|
- data: function () {
|
|
|
- return {
|
|
|
- playlist: []
|
|
|
- }
|
|
|
- },
|
|
|
- ready: function () {
|
|
|
- let _this = this;
|
|
|
- io.getSocket((socket) => {
|
|
|
- _this.socket = socket;
|
|
|
- _this.socket.emit('stations.getPlaylist', _this.$parent.stationId, res => {
|
|
|
- console.log(res);
|
|
|
- if (res.status == 'success') _this.playlist = res.data;
|
|
|
- });
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-</script>
|
|
|
-
|
|
|
-<style type='scss' scoped>
|
|
|
- .sidebar {
|
|
|
- position: fixed;
|
|
|
- z-index: 1;
|
|
|
- top: 0;
|
|
|
- right: 0;
|
|
|
- width: 300px;
|
|
|
- height: 100vh;
|
|
|
- background-color: #fff;
|
|
|
- box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
|
|
|
- }
|
|
|
-
|
|
|
- .inner-wrapper {
|
|
|
- top: 64px;
|
|
|
- position: relative;
|
|
|
- }
|
|
|
-
|
|
|
- .slide-transition {
|
|
|
- transition: transform 0.6s ease-in-out;
|
|
|
- transform: translateX(0);
|
|
|
- }
|
|
|
-
|
|
|
- .slide-enter, .slide-leave { transform: translateX(100%); }
|
|
|
-
|
|
|
- .title {
|
|
|
- background-color: rgb(3, 169, 244);
|
|
|
- text-align: center;
|
|
|
- padding: 10px;
|
|
|
- color: white;
|
|
|
- font-weight: 600;
|
|
|
- }
|
|
|
-
|
|
|
- .media { padding: 0px 25px;}
|
|
|
-
|
|
|
- .media-content .content {
|
|
|
- height: 64px;
|
|
|
- display: flex;
|
|
|
- align-items: center;
|
|
|
-
|
|
|
- strong { word-break: break-word; }
|
|
|
- }
|
|
|
-
|
|
|
- .media-right { line-height: 64px; }
|
|
|
-</style>
|