serverDetails.vue 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div class="container no-gutters">
  3. <div class="row">
  4. <h1>{{server.name}} <small class="text-muted">{{details.name}}</small></h1>
  5. </div>
  6. <div class="row">
  7. <div class="col-5">
  8. <ul class="list-unstyled">
  9. <li v-if="server && server.address !== undefined">
  10. Address: {{server.address}}
  11. </li>
  12. <li v-if="details && details.map !== undefined">
  13. Map: {{details.map}}
  14. </li>
  15. <li v-if="details && details.password !== undefined">
  16. Password: {{details.password?"true":"false"}}
  17. </li>
  18. <li v-if="details && details.traffic !== undefined">
  19. Actual: {{details.traffic.players}}/{{details.traffic.maxplayers}}
  20. </li>
  21. </ul>
  22. </div>
  23. <div class="col-5">
  24. <div v-if="details.players !== undefined && details.traffic">
  25. Players:<span>{{details.players.length}}/{{details.traffic.maxplayers}}</span>
  26. </div>
  27. <ul class="list-group" v-if="details.players !== undefined">
  28. <li v-for="player in details.players" class="list-group-item">{{player.name}}</li>
  29. </ul>
  30. </div>
  31. <div class="col-2">
  32. <button type="button" class="btn btn-danger" @click="remove($route.params.id)">Remove</button>
  33. </div>
  34. </div>
  35. <div class="row">
  36. <servergraph :server="parseInt($route.params.id)" :maxplayers="server.maxPlayers"></servergraph>
  37. </div>
  38. </div>
  39. </template>
  40. <script>
  41. import swal from "sweetalert2";
  42. export default {
  43. created: function () {
  44. this.update();
  45. },
  46. data: function () {
  47. return {
  48. details: {
  49. traffic: {
  50. }
  51. },
  52. server: {}
  53. }
  54. },
  55. watch: {
  56. "$root.servers": function () {
  57. this.server = this.$root.servers[parseInt(this.$root.serversId[this.$route.params.id])];
  58. }
  59. },
  60. methods: {
  61. update: function () {
  62. if(this.$root.servers.length !== 0 && this.$root.serversId){
  63. this.server = this.$root.servers[parseInt(this.$root.serversId[this.$route.params.id])];
  64. }
  65. var self = this;
  66. var req = new XMLHttpRequest();
  67. req.open('GET', '/api/servers/get/'+this.$route.params.id);
  68. req.send(null);
  69. req.onreadystatechange = function () {
  70. if (req.readyState == XMLHttpRequest.DONE &&
  71. req.status === 200) {
  72. self.details = JSON.parse(req.response);
  73. }
  74. };
  75. },
  76. remove: function (id) {
  77. var self = this;
  78. swal({
  79. title: 'Are you sure?',
  80. text: "You won't be able to revert this!",
  81. type: 'warning',
  82. showCancelButton: true,
  83. confirmButtonColor: '#3085d6',
  84. cancelButtonColor: '#d33',
  85. confirmButtonText: 'Yes, delete it!'
  86. }).then(function () {
  87. var req = new XMLHttpRequest();
  88. req.open('GET', '/api/servers/remove/'+ id);
  89. req.send(null);
  90. req.onreadystatechange = function () {
  91. if (req.readyState == XMLHttpRequest.DONE &&
  92. req.status === 200) {
  93. }
  94. };
  95. self.$router.push("/");
  96. }, function () {
  97. }).catch(console.log);
  98. }
  99. }
  100. }
  101. </script>