admin.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import {ModalEslDetails} from "./ModalEslDetails";
  2. import * as OMGUtils from "./OMGUtils";
  3. let modalEslDetails = null;
  4. function SaveConfig() {
  5. let config = $('#config_text').val();
  6. OMGUtils.AjaxReq(`${BASEURL}/admin/config`, {
  7. method: 'POST',
  8. body: JSON.stringify({"method": "saveconfig", "value": config})
  9. })
  10. .then(json => toastr.success(json.err))
  11. .catch(err => toastr.error(err.url, `${err.status} (${err.statusText})`));
  12. }
  13. function LoadConfig() {
  14. OMGUtils.AjaxReq(`${BASEURL}/admin/config`, {
  15. method: 'POST',
  16. body: JSON.stringify({"method": "loadconfig"})
  17. })
  18. .then(json => {
  19. $('#config_text').val(json.value);
  20. toastr.success(json.err);
  21. })
  22. .catch(err => toastr.error(err.url, `${err.status} (${err.statusText})`));
  23. }
  24. function OpenESLDetails(labelID) {
  25. modalEslDetails.OpenESLDetails(labelID);
  26. }
  27. function ESLMultiOperations(method) {
  28. let selectedLabels = $('#datatable').DataTable().rows({selected: true}).data().toArray();
  29. selectedLabels.forEach(labelID => {
  30. OMGUtils.AjaxReq(`${BASEURL}/admin/config`, {
  31. method: 'POST',
  32. body: JSON.stringify({"method": "blinklabels", "labelid": labelID[1]})
  33. })
  34. .then(json => {
  35. if (json.err == 0)
  36. toastr.success(json.value);
  37. else
  38. toastr.error(json.value);
  39. })
  40. .catch(err => toastr.error(err.url, `${err.status} (${err.statusText})`));
  41. });
  42. }
  43. // MAIN JS
  44. document.addEventListener('DOMContentLoaded', function () {
  45. modalEslDetails = new ModalEslDetails('.statusmodal');
  46. Waves.attach('.btn', ['waves-effect', 'waves-light']);
  47. Waves.init();
  48. $.fn.dataTable.ext.order['dom-checkbox'] = function (settings, col) {
  49. return this.api().column(col, {order: 'index'}).nodes().map(function (td, i) {
  50. return $(td).closest('tr').hasClass('selected') ? '1' : '0';
  51. });
  52. };
  53. // DataTable fix
  54. $("#datatable").DataTable({
  55. paging: false,
  56. scrollY: true,
  57. responsive: true,
  58. fnInitComplete: function () {
  59. $(".dataTables_scrollBody").slimscroll({
  60. color: "#DDDDDD",
  61. railVisible: true,
  62. railColor: "black",
  63. railOpacity: .3,
  64. height: "50vh"
  65. })
  66. },
  67. columnDefs: [
  68. {
  69. targets: 0,
  70. className: 'select-checkbox',
  71. orderDataType: "dom-checkbox"
  72. },
  73. {
  74. targets: -1,
  75. orderable: false
  76. }
  77. ],
  78. select: {
  79. style: 'multi',
  80. selector: 'td:first-child',
  81. }
  82. });
  83. window.OpenESLDetails = OpenESLDetails;
  84. window.LoadConfig = LoadConfig;
  85. window.SaveConfig = SaveConfig;
  86. window.ESLMultiOperations = ESLMultiOperations;
  87. });