serverDetails.vue 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. methods: {
  56. update: function () {
  57. if(this.$root.servers.length !== 0 && this.$root.serversId){
  58. this.server = this.$root.servers[parseInt(this.$root.serversId[this.$route.params.id])];
  59. }
  60. var self = this;
  61. var req = new XMLHttpRequest();
  62. req.open('GET', '/api/servers/get/'+this.$route.params.id);
  63. req.send(null);
  64. req.onreadystatechange = function () {
  65. if (req.readyState == XMLHttpRequest.DONE &&
  66. req.status === 200) {
  67. self.details = JSON.parse(req.response);
  68. }
  69. };
  70. },
  71. remove: function (id) {
  72. var self = this;
  73. swal({
  74. title: 'Are you sure?',
  75. text: "You won't be able to revert this!",
  76. type: 'warning',
  77. showCancelButton: true,
  78. confirmButtonColor: '#3085d6',
  79. cancelButtonColor: '#d33',
  80. confirmButtonText: 'Yes, delete it!'
  81. }).then(function () {
  82. var req = new XMLHttpRequest();
  83. req.open('GET', '/api/servers/remove/'+ id);
  84. req.send(null);
  85. req.onreadystatechange = function () {
  86. if (req.readyState == XMLHttpRequest.DONE &&
  87. req.status === 200) {
  88. }
  89. };
  90. self.$router.push("/");
  91. }, function () {
  92. }).catch(console.log);
  93. }
  94. }
  95. }
  96. </script>