queue.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. jQuery(function($){
  2. $(".refresh_table").on('click', function(e) {
  3. e.preventDefault();
  4. var table_name = $(this).data('table');
  5. $('#' + table_name).DataTable().ajax.reload();
  6. });
  7. // Queue item
  8. $('#showQueuedMsg').on('show.bs.modal', function (e) {
  9. $('#queue_msg_content').text(lang.loading);
  10. button = $(e.relatedTarget)
  11. if (button != null) {
  12. $('#queue_id').text(button.data('queue-id'));
  13. }
  14. $.ajax({
  15. type: 'GET',
  16. url: '/api/v1/get/postcat/' + button.data('queue-id'),
  17. dataType: 'text',
  18. complete: function (data) {
  19. $('#queue_msg_content').text(data.responseText);
  20. }
  21. });
  22. })
  23. function draw_queue() {
  24. // just recalc width if instance already exists
  25. if ($.fn.DataTable.isDataTable('#queuetable') ) {
  26. $('#queuetable').DataTable().columns.adjust().responsive.recalc();
  27. return;
  28. }
  29. $('#queuetable').DataTable({
  30. processing: true,
  31. serverSide: false,
  32. language: lang_datatables,
  33. ajax: {
  34. type: "GET",
  35. url: "/api/v1/get/mailq/all",
  36. dataSrc: function(data){
  37. $.each(data, function (i, item) {
  38. item.chkbox = '<input type="checkbox" data-id="mailqitems" name="multi_select" value="' + item.queue_id + '" />';
  39. rcpts = $.map(item.recipients, function(i) {
  40. return escapeHtml(i);
  41. });
  42. item.recipients = rcpts.join('<hr style="margin:1px!important">');
  43. item.action = '<div class="btn-group">' +
  44. '<a href="#" data-bs-toggle="modal" data-bs-target="#showQueuedMsg" data-queue-id="' + encodeURI(item.queue_id) + '" class="btn btn-xs btn-secondary">' + lang.queue_show_message + '</a>' +
  45. '</div>';
  46. });
  47. return data;
  48. }
  49. },
  50. columns: [
  51. {
  52. // placeholder, so checkbox will not block child row toggle
  53. title: '',
  54. data: null,
  55. searchable: false,
  56. orderable: false,
  57. defaultContent: ''
  58. },
  59. {
  60. title: '',
  61. data: 'chkbox',
  62. searchable: false,
  63. orderable: false,
  64. defaultContent: ''
  65. },
  66. {
  67. title: 'QID',
  68. data: 'queue_id',
  69. defaultContent: ''
  70. },
  71. {
  72. title: 'Queue',
  73. data: 'queue_name',
  74. defaultContent: ''
  75. },
  76. {
  77. title: lang.arrival_time,
  78. data: 'arrival_time',
  79. defaultContent: '',
  80. render: function (data, type){
  81. var date = new Date(data ? data * 1000 : 0);
  82. return date.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"});
  83. }
  84. },
  85. {
  86. title: lang.message_size,
  87. data: 'message_size',
  88. defaultContent: '',
  89. render: function (data, type){
  90. return humanFileSize(data);
  91. }
  92. },
  93. {
  94. title: lang.sender,
  95. data: 'sender',
  96. defaultContent: ''
  97. },
  98. {
  99. title: lang.recipients,
  100. data: 'recipients',
  101. defaultContent: ''
  102. },
  103. {
  104. title: lang.action,
  105. data: 'action',
  106. className: 'text-md-end dt-sm-head-hidden dt-body-right',
  107. defaultContent: ''
  108. },
  109. ]
  110. });
  111. }
  112. draw_queue();
  113. })