admin.js 3.0 KB

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