| jQuery(function($){ |
| |
| $(".refresh_table").on('click', function(e) { |
| e.preventDefault(); |
| var table_name = $(this).data('table'); |
| $('#' + table_name).DataTable().ajax.reload(); |
| }); |
| |
| |
| function humanFileSize(i){if(Math.abs(i)<1024)return i+" B";var B=["KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"],e=-1;do{i/=1024,++e}while(Math.abs(i)>=1024&&e<B.length-1);return i.toFixed(1)+" "+B[e]} |
| |
| // Queue item |
| $('#showQueuedMsg').on('show.bs.modal', function (e) { |
| $('#queue_msg_content').text(lang.loading); |
| button = $(e.relatedTarget) |
| if (button != null) { |
| $('#queue_id').text(button.data('queue-id')); |
| } |
| $.ajax({ |
| type: 'GET', |
| url: '/api/v1/get/postcat/' + button.data('queue-id'), |
| dataType: 'text', |
| complete: function (data) { |
| $('#queue_msg_content').text(data.responseText); |
| } |
| }); |
| }) |
| |
| function draw_queue() { |
| // just recalc width if instance already exists |
| if ($.fn.DataTable.isDataTable('#queuetable') ) { |
| $('#queuetable').DataTable().columns.adjust().responsive.recalc(); |
| return; |
| } |
| |
| $('#queuetable').DataTable({ |
| responsive: true, |
| processing: true, |
| serverSide: false, |
| stateSave: true, |
| pageLength: pagination_size, |
| dom: "<'row'<'col-sm-12 col-md-6'f><'col-sm-12 col-md-6'l>>" + |
| "tr" + |
| "<'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", |
| language: lang_datatables, |
| ajax: { |
| type: "GET", |
| url: "/api/v1/get/mailq/all", |
| dataSrc: function(data){ |
| $.each(data, function (i, item) { |
| item.chkbox = '<input type="checkbox" class="form-check-input" data-id="mailqitems" name="multi_select" value="' + item.queue_id + '" />'; |
| rcpts = $.map(item.recipients, function(i) { |
| return escapeHtml(i); |
| }); |
| item.recipients = rcpts.join('<hr style="margin:1px!important">'); |
| item.action = '<div class="btn-group">' + |
| '<a href="#" data-bs-toggle="modal" data-bs-target="#showQueuedMsg" data-queue-id="' + encodeURI(item.queue_id) + '" class="btn btn-xs btn-secondary">' + lang.show_message + '</a>' + |
| '</div>'; |
| }); |
| return data; |
| } |
| }, |
| columns: [ |
| { |
| // placeholder, so checkbox will not block child row toggle |
| title: '', |
| data: null, |
| searchable: false, |
| orderable: false, |
| defaultContent: '' |
| }, |
| { |
| title: '', |
| data: 'chkbox', |
| searchable: false, |
| orderable: false, |
| defaultContent: '' |
| }, |
| { |
| title: 'QID', |
| data: 'queue_id', |
| defaultContent: '' |
| }, |
| { |
| title: 'Queue', |
| data: 'queue_name', |
| defaultContent: '' |
| }, |
| { |
| title: lang_admin.arrival_time, |
| data: 'arrival_time', |
| defaultContent: '', |
| render: function (data, type){ |
| var date = new Date(data ? data * 1000 : 0); |
| return date.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"}); |
| } |
| }, |
| { |
| title: lang_admin.message_size, |
| data: 'message_size', |
| defaultContent: '', |
| render: function (data, type){ |
| return humanFileSize(data); |
| } |
| }, |
| { |
| title: lang_admin.sender, |
| data: 'sender', |
| defaultContent: '' |
| }, |
| { |
| title: lang_admin.recipients, |
| data: 'recipients', |
| defaultContent: '' |
| }, |
| { |
| title: lang_admin.action, |
| data: 'action', |
| className: 'dt-sm-head-hidden dt-text-right', |
| defaultContent: '' |
| }, |
| ] |
| }); |
| } |
| |
| draw_queue(); |
| |
| }) |