123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- <template>
- <div class="app">
- <main-header></main-header>
- <div class="row">
- <div class="col-md-8 col-sm-10 col-xs-12 col-md-offset-2 col-sm-offset-1 card">
- <table class="table table-striped">
- <thead>
- <tr>
- <td>Title</td>
- <td>Artists</td>
- <td>Genre's</td>
- <td>Controls</td>
- </tr>
- </thead>
- <tbody>
- <tr v-for="song in songs">
- <td>{{song.title}}</td>
- <td>{{song.artists}}</td>
- <td>{{song.genres}}</td>
- <td><button @click="reviewSong(song._id)">Review</button></td>
- </tr>
- </tbody>
- </table>
- </div>
- </div>
- <main-footer></main-footer>
- <div class="modal fade" id="reviewModal" tabindex="-1" role="dialog" aria-labelledby="review-modal">
- <div class="modal-dialog modal-large" role="document">
- <div class="modal-content">
- <div class="modal-header">
- <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
- <h5 class="modal-title">Review</h5>
- </div>
- <div class="modal-body">
- <label for="reviewId">ID</label>
- <input type="text" v-bind:value="reviewSongObject._id" id="reviewId"/><br>
- <label for="reviewTitle">Title</label>
- <input type="text" v-bind:value="reviewSongObject.title" id="reviewTitle"/><br>
- <label for="reviewArtists">Artists</label>
- <input type="text" v-bind:value="reviewSongObject.artists" id="reviewArtists"/><br>
- <label for="reviewGenres">Genres</label>
- <input type="text" v-bind:value="reviewSongObject.genres" id="reviewGenres"/><br>
- <label for="reviewDuration">Duration</label>
- <input type="number" v-bind:value="reviewSongObject.duration" id="reviewDuration"/><br>
- <label for="reviewSkipDuration">Skip Duration</label>
- <input type="number" v-bind:value="reviewSongObject.skipDuration" id="reviewSkipDuration"/><br>
- <label for="reviewImage">Image</label>
- <input type="text" v-bind:value="reviewSongObject.image" id="reviewImage"/>
- </div>
- <div class="modal-footer">
- <button type="button" class="btn btn-primary left" @click="saveQueueSongChanges()">Save</button>
- </div>
- </div>
- </div>
- </div>
- </div>
- </template>
- <script>
- import MainHeader from '../MainHeader.vue'
- import MainFooter from '../MainFooter.vue'
- export default {
- components: { MainHeader, MainFooter },
- data() {
- return {
- songs: [],
- reviewSongObject: {},
- reviewSongId: ""
- }
- },
- methods: {
- reviewSong: function(id) {
- let local = this;
- local.reviewSongObject = {};
- local.reviewSongId = "";
- local.songs.forEach(function(song) {
- if (song._id === id) {
- for (var prop in song) {
- local.reviewSongObject[prop] = song[prop];
- }
- local.reviewSongId = id;
- $('#reviewModal').modal('show');
- }
- });
- },
- saveQueueSongChanges: function() {
- let local = this;
- let songId = local.reviewSongId;
- let songObject = {};
- songObject._id = $("#reviewId").val();
- songObject.title = $("#reviewTitle").val();
- songObject.artists = $("#reviewArtists").val();
- songObject.genres = $("#reviewGenres").val();
- songObject.duration = $("#reviewDuration").val();
- songObject.skipDuration = $("#reviewSkipDuration").val();
- songObject.image = $("#reviewImage").val();
- if (typeof songObject.artists === "string") {
- songObject.artists = songObject.artists.split(", ");
- }
- if (typeof songObject.genres === "string") {
- songObject.genres = songObject.genres.split(", ");
- }
- local.socket.emit("/songs/queue/updateSong/:id", songId, songObject, function(data) {
- console.log(data);
- });
- }
- },
- ready: function() {
- let local = this;
- local.socket = this.$parent.socket;
- local.socket.emit("/songs/queue/getSongs", function(data) {
- local.songs = data.songs;
- });
- }
- }
- </script>
- <style lang="sass">
- </style>
|