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="' + escapeHtml(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="' + escapeHtml(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: '',
          render: $.fn.dataTable.render.text()
        },
        {
          title: 'Queue',
          data: 'queue_name',
          defaultContent: '',
          render: $.fn.dataTable.render.text()
        },
        {
          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: '',
          render: $.fn.dataTable.render.text()
        },
        {
          title: lang_admin.recipients,
          data: 'recipients',
          defaultContent: ''
        },
        {
          title: lang_admin.action,
          data: 'action',
          className: 'dt-sm-head-hidden dt-text-right',
          defaultContent: ''
        },
      ]
    });
  }

  draw_queue();

})
