EditStation.vue 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <div class='modal is-active'>
  3. <div class='modal-background'></div>
  4. <div class='modal-card'>
  5. <header class='modal-card-head'>
  6. <p class='modal-card-title'>Edit station</p>
  7. <button class='delete' @click='$parent.toggleModal("editStation")'></button>
  8. </header>
  9. <section class='modal-card-body'>
  10. <label class='label'>Display name</label>
  11. <div class='control is-grouped'>
  12. <p class='control is-expanded'>
  13. <input class='input' type='text' placeholder='Station Display Name' v-model='$parent.station.displayName'>
  14. </p>
  15. <p class='control'>
  16. <a class='button is-info' @click='updateDisplayName()'>Update</a>
  17. </p>
  18. </div>
  19. <label class='label'>Description</label>
  20. <div class='control is-grouped'>
  21. <p class='control is-expanded'>
  22. <input class='input' type='text' placeholder='Station Display Name' v-model='$parent.station.description'>
  23. </p>
  24. <p class='control'>
  25. <a class='button is-info' @click='updateDescription()'>Update</a>
  26. </p>
  27. </div>
  28. <label class='label'>Privacy</label>
  29. <div class='control is-grouped'>
  30. <p class='control is-expanded'>
  31. <span class='select'>
  32. <select v-model='$parent.station.privacy'>
  33. <option v-bind:value=''public''>Public</option>
  34. <option v-bind:value=''unlisted''>Unlisted</option>
  35. <option v-bind:value=''private''>Private</option>
  36. </select>
  37. </span>
  38. </p>
  39. <p class='control'>
  40. <a class='button is-info' @click='updatePrivacy()'>Update</a>
  41. </p>
  42. </div>
  43. </section>
  44. </div>
  45. </div>
  46. </template>
  47. <script>
  48. import { Toast } from 'vue-roaster';
  49. export default {
  50. methods: {
  51. updateDisplayName: function () {
  52. this.socket.emit('stations.updateDisplayName', this.$parent.stationId, this.$parent.station.displayName, res => {
  53. if (res.status == 'success') return Toast.methods.addToast(res.message, 4000);
  54. Toast.methods.addToast(res.message, 8000);
  55. });
  56. },
  57. updateDescription: function () {
  58. this.socket.emit('stations.updateDescription', this.$parent.stationId, this.$parent.station.description, res => {
  59. if (res.status == 'success') return Toast.methods.addToast(res.message, 4000);
  60. Toast.methods.addToast(res.message, 8000);
  61. });
  62. },
  63. updatePrivacy: function () {
  64. this.socket.emit('stations.updatePrivacy', this.$parent.stationId, this.$parent.station.privacy, res => {
  65. if (res.status == 'success') return Toast.methods.addToast(res.message, 4000);
  66. Toast.methods.addToast(res.message, 8000);
  67. });
  68. }
  69. },
  70. ready: function () {
  71. let _this = this;
  72. let socketInterval = setInterval(() => {
  73. if (!!_this.$parent.$parent.socket) {
  74. _this.socket = _this.$parent.$parent.socket;
  75. clearInterval(socketInterval);
  76. }
  77. }, 100);
  78. }
  79. }
  80. </script>
  81. <style type='scss' scoped>
  82. .controls {
  83. display: flex;
  84. a {
  85. display: flex;
  86. align-items: center;
  87. }
  88. }
  89. .table { margin-bottom: 0; }
  90. h5 { padding: 20px 0; }
  91. </style>