AdminStations.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div class="columns is-mobile">
  3. <div class="column is-8-desktop is-offset-2-desktop is-12-mobile">
  4. <table class="table is-striped">
  5. <thead>
  6. <tr>
  7. <td>ID</td>
  8. <td>Display Name</td>
  9. <td>Description</td>
  10. <td>Playlist</td>
  11. <td>Options</td>
  12. </tr>
  13. </thead>
  14. <tbody>
  15. <tr v-for="(index, station) in stations" track-by="$index">
  16. <td>
  17. <p class="control">
  18. <input class="input" type="text" :value="station.id" v-model="station.id">
  19. </p>
  20. </td>
  21. <td>
  22. <p class="control">
  23. <input class="input" type="text" :value="station.displayName" v-model="station.displayName">
  24. </p>
  25. </td>
  26. <td>
  27. <p class="control">
  28. <input class="input" type="text" :value="station.description" v-model="station.description">
  29. </p>
  30. </td>
  31. <td>
  32. <div class="control is-horizontal">
  33. <input v-for="song in station.playlist" track-by="$index" class="input" type="text" :value="song.id" v-model="song.id">
  34. </p>
  35. </td>
  36. <td>
  37. <a class="button is-danger" @click="stations.splice(index, 1)">Remove</a>
  38. </td>
  39. </tr>
  40. </tbody>
  41. </table>
  42. <a class="button is-success" @click="update()">Save Changes</a>
  43. </div>
  44. </div>
  45. </template>
  46. <script>
  47. export default {
  48. data() {
  49. return {
  50. stations: []
  51. }
  52. },
  53. methods: {
  54. // saveQueueSongChanges: function() {
  55. // let local = this;
  56. // let songId = local.reviewSongId;
  57. // let songObject = {};
  58. // songObject._id = $("#reviewId").val();
  59. // songObject.title = $("#reviewTitle").val();
  60. // songObject.artists = $("#reviewArtists").val();
  61. // songObject.genres = $("#reviewGenres").val();
  62. // songObject.duration = $("#reviewDuration").val();
  63. // songObject.skipDuration = $("#reviewSkipDuration").val();
  64. // songObject.image = $("#reviewImage").val();
  65. // if (typeof songObject.artists === "string") {
  66. // songObject.artists = songObject.artists.split(", ");
  67. // }
  68. // if (typeof songObject.genres === "string") {
  69. // songObject.genres = songObject.genres.split(", ");
  70. // }
  71. // local.socket.emit("/songs/queue/updateSong/:id", songId, songObject, function(data) {
  72. // console.log(data);
  73. // });
  74. // }
  75. },
  76. ready: function() {
  77. let local = this;
  78. local.socket = local.$parent.$parent.socket;
  79. local.socket.emit("/stations", function(data) {
  80. local.stations = data;
  81. });
  82. }
  83. }
  84. </script>
  85. <style lang="scss" scoped>
  86. .is-success {
  87. width: 100%;
  88. }
  89. </style>