ModalEslDetails.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import {AjaxReq} from "./OMGUtils";
  2. // Private Methods
  3. function clearStatusModalFields() {
  4. $('#esl_rssi_list').html('');
  5. $('#svgtpl').html('');
  6. $('#cardbox_esl_status span').each((i, o) => {
  7. $('#cardbox_esl_status #' + o.id).html('');
  8. });
  9. }
  10. function fillESLDetails(ESLstatus) {
  11. clearStatusModalFields();
  12. $('#cardbox_esl_status span').each((i, o) => {
  13. let value = (ESLstatus.value.status[o.id]);
  14. $('#cardbox_esl_status #' + o.id).html(value);
  15. });
  16. for (let [ap, rssi] of Object.entries(ESLstatus.value.rssi)) {
  17. // language=HTML
  18. let ap_rssi = `
  19. <tr>
  20. <td>
  21. <span class="badge badge-primary">${ap}</span>
  22. </td>
  23. <td>
  24. <span class="badge text-inverse badge-warning">${rssi}</span>
  25. </td>
  26. </tr>
  27. `;
  28. $('#esl_rssi_list').append(ap_rssi);
  29. }
  30. if (ESLstatus.svgPath != null) {
  31. // Retrieve SVG from server
  32. $.get(BASEURL + '/' + ESLstatus.svgPath, data => {
  33. $('#svgtpl').html(data);
  34. }, "text");
  35. }
  36. }
  37. // MAIN CLASS
  38. export class ModalEslDetails {
  39. constructor(modalClass) {
  40. let self = this;
  41. this.abort = null;
  42. this.modalClass = modalClass;
  43. this.timer = null;
  44. $(modalClass).on('show.bs.modal', function () {
  45. let labelID = $(`${modalClass} #labelID`).html();
  46. self.RefreshESLStatus(labelID);
  47. });
  48. $(modalClass).on('hide.bs.modal', function () {
  49. self.abort();
  50. clearTimeout(self.timer);
  51. });
  52. }
  53. OpenESLDetails(labelID) {
  54. clearStatusModalFields();
  55. $(`${this.modalClass} #labelID`).html(labelID);
  56. $(`${this.modalClass}`).modal('show');
  57. }
  58. RefreshESLStatus(labelID) {
  59. let self = this;
  60. $('#spinnerloader').removeClass('d-none');
  61. let req = AjaxReq(`${BASEURL}/admin/config`, {
  62. method: 'POST',
  63. body: JSON.stringify({"method": "geteslstatus", "label_id": labelID})
  64. });
  65. req.fetchPromise()
  66. .then(json => {
  67. fillESLDetails(json);
  68. toastr.success(json.err);
  69. if ($(this.modalClass).is(':visible'))
  70. self.timer = setTimeout(function () {
  71. self.RefreshESLStatus(labelID);
  72. }, 3000);
  73. })
  74. .catch(err => {
  75. if (err.name === 'AbortError')
  76. return;
  77. if (err.url !== undefined)
  78. toastr.error(err.url, `${err.status} (${err.statusText})`);
  79. else
  80. toastr.error(err);
  81. }).finally(function () {
  82. $('#spinnerloader').addClass('d-none');
  83. });
  84. this.abort = req.abort;
  85. }
  86. }