Индивидуальная фильтрация в Datatable - PullRequest
0 голосов
/ 06 марта 2020

В следующем коде таблицы данных я хочу изменить фильтр class, subject и language, используя select и фильтр ввода покоя в алфавитном порядке.

var oTable;

$(document).ready(function() {
  oTable = $('#BKData').dataTable({
    "aaSorting": [
      [2, "asc"],
      [3, "asc"]
    ],
    "aLengthMenu": [
      [10, 25, 50, 100, -1],
      [10, 25, 50, 100, "<?= lang('all') ?>"]
    ],
    "iDisplayLength": <?= $Settings->rows_per_page ?>,
    'bProcessing': true,
    'bServerSide': true,
    'sAjaxSource': '<?= admin_url('
    books / getBooks '.($warehouse_id ? ' / '.$warehouse_id : '
    ').($supplier ? ' ? supplier = '.$supplier->id : '
    ')) ?>',
    'fnServerData' : function(sSource, aoData, fnCallback) {
      aoData.push({
        "name": "<?= $this->security->get_csrf_token_name() ?>",
        "value": "<?= $this->security->get_csrf_hash() ?>"
      });
      $.ajax({
        'dataType': 'json',
        'type': 'POST',
        'url': sSource,
        'data': aoData,
        'success': fnCallback
      });
    },
    'fnRowCallback': function(nRow, aData, iDisplayIndex) {
      var oSettings = oTable.fnSettings();
      nRow.id = aData[0];
      nRow.className = "book_link";
      //if(aData[7] > aData[9]){ nRow.className = "book_link warning"; } else { nRow.className = "book_link"; }
      return nRow;
    },
    "aoColumns": [{
      "bSortable": false,
      "mRender": checkbox
    }, {
      "bSortable": false,
      "mRender": img_hl
    }, null, null, null, null, null, <?php if($Owner || $Admin) { echo '{"mRender": currencyFormat}, {"mRender": currencyFormat},'; } else { if($this->session->userdata('show_cost')) { echo '{"mRender": currencyFormat},';  } if($this->session->userdata('show_price')) { echo '{"mRender": currencyFormat},';  } } ?> {
      "mRender": formatQuantity
    }, null, <?php if(!$warehouse_id || !$Settings->racks) { echo '{"bVisible": false},'; } else { echo '{"bSortable": true},'; } ?> {
      "mRender": formatQuantity
    }, {
      "bSortable": false
    }]
  }).fnSetFilteringDelay().dtFilter([{
      column_number: 2,
      filter_default_label: "[<?=lang('code');?>]",
      filter_type: "text",
      data: []
    }, {
      column_number: 3,
      filter_default_label: "[<?=lang('name');?>]",
      filter_type: "text",
      data: []
    }, {
      column_number: 4,
      filter_default_label: "[<?=lang('author');?>]",
      filter_type: "text",
      data: []
    }, {
      column_number: 5,
      filter_default_label: "[<?=lang('class');?>]",
      filter_type: "text",
      data: []
    }, {
      column_number: 6,
      filter_default_label: "[<?=lang('subject');?>]",
      filter_type: "text",
      data: []
    },
    <?php $col = 6;
      if($Owner || $Admin) {
          echo '{column_number : 7, filter_default_label: "['.lang('cost').']", filter_type: "text", data: [] },';
          echo '{column_number : 8, filter_default_label: "['.lang('price').']", filter_type: "text", data: [] },';
          $col += 2;
      } else {
          if($this->session->userdata('show_cost')) { $col++; echo '{column_number : '.$col.', filter_default_label: "['.lang('cost').']", filter_type: "text", data: [] },'; }
          if($this->session->userdata('show_price')) { $col++; echo '{column_number : '.$col.', filter_default_label: "['.lang('price').']", filter_type: "text, data: []" },'; }
      }
    ?> {
      column_number: <?php $col++; echo $col; ?>,
      filter_default_label: "[<?=lang('quantity');?>]",
      filter_type: "text",
      data: []
    }, {
      column_number: <?php $col++; echo $col; ?>,
      filter_default_label: "[<?=lang('language');?>]",
      filter_type: "text",
      data: []
    },
    <?php $col++; if($warehouse_id && $Settings->racks) { echo '{column_number : '. $col.', filter_default_label: "['.lang('rack').']", filter_type: "text", data: [] },'; } ?> {
      column_number: <?php $col++; echo $col; ?>,
      filter_default_label: "[<?=lang('alert_quantity');?>]",
      filter_type: "text",
      data: []
    },
  ], "footer");
});
...