server.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <div class="row">
  3. <div class="col-4">
  4. <div id="actions">
  5. <a @click="remove(server.id)"><img src="svg/x.svg"></a>
  6. <a><img src="svg/pencil.svg"></a>
  7. </div>
  8. <router-link :server="server" :to="{ path: '/server/'+server.id}">
  9. {{ server.name }} <img v-show="server.isPassword" class="icon" src="svg/lock.svg">
  10. </router-link>
  11. </div>
  12. <div class="col-3">
  13. {{ server.fullType }}
  14. </div>
  15. <div class="col-3">
  16. {{ server.address }}
  17. </div>
  18. <div class="col-2">
  19. {{ server.players }}/{{ server.maxPlayers }}
  20. </div>
  21. </div>
  22. </template>
  23. <script>
  24. import swal from "sweetalert2";
  25. import $ from "jquery";
  26. export default {
  27. props: {
  28. server: {
  29. type: Object,
  30. default:function () {
  31. return {
  32. id:0,
  33. name: "Name",
  34. address: "Address",
  35. players: 0,
  36. maxPlayers: 0,
  37. isPassword: false
  38. };
  39. }
  40. },
  41. update: {
  42. type: Function
  43. }
  44. },
  45. data: function () {
  46. return {};
  47. },
  48. methods: {
  49. remove: function (id) {
  50. var self = this;
  51. swal({
  52. title: 'Are you sure?',
  53. text: "You won't be able to revert this!",
  54. type: 'warning',
  55. showCancelButton: true,
  56. confirmButtonColor: '#3085d6',
  57. cancelButtonColor: '#d33',
  58. confirmButtonText: 'Yes, delete it!'
  59. }).then(function () {
  60. var req = new XMLHttpRequest();
  61. req.open('GET', '/api/servers/remove/'+ id);
  62. req.send(null);
  63. req.onreadystatechange = function () {
  64. if (req.readyState == XMLHttpRequest.DONE &&
  65. req.status === 200) {
  66. self.update();
  67. var el = $(self.$el);
  68. el.css("opacity", 0.5);
  69. var actions = el.find("#actions");
  70. actions.children().hide();
  71. actions.append('<img src="svg/loading.svg"></img>');
  72. }
  73. };
  74. }, function () {
  75. }).catch(console.log);
  76. }
  77. }
  78. }
  79. </script>