ModalEslDetails.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import {AjaxReq} from "./OMGUtils";
  2. export class ModalEslDetails {
  3. constructor(modalClass) {
  4. this._FetchSignal = null;
  5. this.modalClass = modalClass;
  6. let self = this;
  7. $(modalClass).on('shown.bs.modal', function () {
  8. let labelID = $(`${modalClass} #labelID`).html();
  9. self.RefreshESLStatus(labelID);
  10. });
  11. $(modalClass).on('hide.bs.modal', function () {
  12. self._FetchSignal.abort();
  13. });
  14. }
  15. _clearStatusModalFields() {
  16. $('#esl_rssi_list').html('');
  17. $('#svgpath').removeAttr('src');
  18. $('#cardbox_esl_status span').each((i, o) => {
  19. $('#cardbox_esl_status #' + o.id).html('');
  20. });
  21. };
  22. OpenESLDetails(labelID) {
  23. this._FetchSignal = new AbortController();
  24. this._clearStatusModalFields();
  25. $(`${this.modalClass} #labelID`).html(labelID);
  26. $(`${this.modalClass}`).modal('show');
  27. }
  28. _fillESLDetails(ESLstatus) {
  29. this._clearStatusModalFields();
  30. $('#cardbox_esl_status span').each((i, o) => {
  31. let value = (ESLstatus.value.status[o.id]);
  32. $('#cardbox_esl_status #' + o.id).html(value);
  33. });
  34. for (let [ap, rssi] of Object.entries(ESLstatus.value.rssi)) {
  35. let ap_rssi = `<tr><td><span class="badge badge-primary">${ap}</span></td><td><span class="badge text-inverse badge-warning">${rssi}</span></td></tr>`;
  36. $('#esl_rssi_list').append(ap_rssi);
  37. }
  38. if (ESLstatus.svgPath != null)
  39. $('#svgpath').prop('src', BASEURL + '/' + ESLstatus.svgPath);
  40. }
  41. RefreshESLStatus(labelID) {
  42. $('#spinnerloader').removeClass('d-none');
  43. let self = this;
  44. AjaxReq(`${BASEURL}/admin/config`, {
  45. method: 'POST',
  46. body: JSON.stringify({"method": "geteslstatus", "label_id": labelID}),
  47. signal: self._FetchSignal.signal
  48. })
  49. .then(json => {
  50. self._fillESLDetails(json);
  51. toastr.success(json.err);
  52. if ($(this.modalClass).is(':visible'))
  53. setTimeout(function () {
  54. self.RefreshESLStatus(labelID);
  55. }, 3000);
  56. })
  57. .catch(err => {
  58. if (err.name == 'AbortError')
  59. return;
  60. if (err.url !== undefined)
  61. toastr.error(err.url, `${err.status} (${err.statusText})`);
  62. else
  63. toastr.error(err);
  64. }).finally(function () {
  65. $('#spinnerloader').addClass('d-none');
  66. });
  67. }
  68. }