Show.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <toast></toast>
  3. <div class="container">
  4. <img class="avatar" src="https://avatars2.githubusercontent.com/u/11198912?v=3&s=460"/>
  5. <h2 class="has-text-centered">@{{user.username}}</h2>
  6. <div class="admin-functionality">
  7. <a class="button is-small is-info is-outlined" @click="changeRank('admin')">Promote to Admin</a>
  8. <a class="button is-small is-danger is-outlined" @click="changeRank('user')">Demote to User</a>
  9. </div>
  10. <nav class="level">
  11. <div class="level-item has-text-centered">
  12. <p class="heading">Rank</p>
  13. <p class="title">User</p>
  14. </div>
  15. <div class="level-item has-text-centered">
  16. <p class="heading">Songs Requested</p>
  17. <p class="title">{{requested}}</p>
  18. </div>
  19. <div class="level-item has-text-centered">
  20. <p class="heading">Likes</p>
  21. <p class="title">{{liked}}</p>
  22. </div>
  23. <div class="level-item has-text-centered">
  24. <p class="heading">Dislikes</p>
  25. <p class="title">{{disliked}}</p>
  26. </div>
  27. </nav>
  28. </div>
  29. </template>
  30. <script>
  31. import { Toast } from 'vue-roaster';
  32. export default {
  33. data() {
  34. return {
  35. user: {},
  36. liked: 0,
  37. disliked: 0,
  38. requested: 0
  39. }
  40. },
  41. methods: {
  42. changeRank(newRank) {
  43. console.log(rank);
  44. Toast.methods.addToast(`User ${this.$route.params.username} has been promoted to the rank of ${rank}`, 200000);
  45. }
  46. },
  47. ready: function() {
  48. let local = this;
  49. local.socket = local.$parent.socket;
  50. local.socket.emit("/u/:username", local.$route.params.username, results => {
  51. local.user = results.data;
  52. console.log(local.user)
  53. local.liked = results.data.statistics.songsLiked.length;
  54. local.disliked = local.user.statistics.songsDisliked.length;
  55. local.requested = local.user.statistics.songsRequested;
  56. });
  57. },
  58. components: { Toast }
  59. }
  60. </script>
  61. <style lang="scss" scoped>
  62. .avatar {
  63. border-radius: 50%;
  64. width: 250px;
  65. display: block;
  66. margin: auto;
  67. }
  68. .level {
  69. margin-top: 40px;
  70. }
  71. .admin-functionality {
  72. text-align: center;
  73. margin: 0 auto;
  74. }
  75. </style>