admin.js 2.7 KB

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