<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/v/bs5/jq-3.7.0/jszip-3.10.1/dt-2.1.7/af-2.7.0/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/cr-2.0.4/date-1.5.4/fc-5.0.2/fh-4.0.1/kt-2.12.1/r-3.0.3/rg-1.5.0/rr-1.5.0/sc-2.4.3/sb-1.8.0/sp-2.3.2/sl-2.1.0/sr-1.4.1/datatables.min.css" rel="stylesheet">
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
<script src="https://cdn.datatables.net/v/bs5/jq-3.7.0/jszip-3.10.1/dt-2.1.7/af-2.7.0/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/cr-2.0.4/date-1.5.4/fc-5.0.2/fh-4.0.1/kt-2.12.1/r-3.0.3/rg-1.5.0/rr-1.5.0/sc-2.4.3/sb-1.8.0/sp-2.3.2/sl-2.1.0/sr-1.4.1/datatables.js"></script>
 
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>
    <meta charset=utf-8 />
    <title>DataTables - JS Bin</title>
  </head>
  <body>
    <div class="container">
      <table id="example" class="table table-striped" width="100%">
      </table>
    </div>
  </body>
</html>
 
body {
  font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  color: #333;
  background-color: #fff;
}
 
$(document).ready(function() {
      let columnDef = [
          {
            data: '__historybutton',
            _className: 'nosearchbox dt-control',
            orderable: false,
            searchable: false,
            defaultContent: '',
          },
          {
            data: '__editbutton',
            _className: 'nosearchbox',
            orderable: false,
            searchable: false,
            render: function (data, type, row, meta) {
              let ret = '<div><a class="editbutton fa fa-pencil-square-o btn btn-primary" href="#"></a></div>';
              return ret;
            },
          },
            { "data": "name", _title: "Name", _className: "nosearchbox" },
            { "data": "position", _title: "Position" },
            { "data": "office", _title: "Office", visible: false },
            { "data": "salary", _title: "Salary" },
            { "data": "start_date", _title: "Start Date" },
      ];
        
        
      var table = $('#example');
      var thead = $('<thead>').appendTo(table);
      var tr = $('<tr>').appendTo(thead);
        
      $(columnDef).each(function (i) {
        var th = $('<th>',{'html':columnDef[i]._title}).appendTo(tr);
        if ( columnDef[i].hasOwnProperty('_className') ) {
          $(th).addClass( columnDef[i]._className );
        }
      });
      $(tr).clone().appendTo(thead);
//       let thead = $('<thead>');
//       let tr1 = $('<tr>');
//       let tr2 = $('<tr>');
//       for (let c of columnDef) {
//         if ('visible' in c && c.visible === false) {
//           continue;
//         }
//         let th1 = $('<th>');
//         if (c._className) {
//           th1.addClass(c._className);
//         }
//         th1.html(c._title || '');
//         let th2 = $('<th>');
//         if (c._className) {
//           th2.addClass(c._className);
//         }
//         th2.html(c._title || '');
//         tr1.append(th1);
//         tr2.append(th2);
//       }
//       thead.append(tr1);
//       thead.append(tr2);
//       $('#example').append(thead);
//       //console.log(thead);
      $('#example thead tr:eq(1) th').each( function () {
        let title = $(this).text();
        let classList = $(this).prop('classList');
        if (classList.contains('nosearchbox') || classList.contains('white-bg')) {
          $(this).html('');
          return;
        }
        $(this).html( '<input type="text" placeholder="Search '+title+'" class="column_search" />' );
      } );
  
    var table = $('#example').DataTable({
      colReorder: true,
      orderCellsTop: true,
      rowCallback: function(row, data, displayNum, displayIndex, dataIndex) {
        let dataTable = $('#example').DataTable();
        dataTable.row(row).invalidate();
        if (displayNum > 0) {
          let prev_data = dataTable.rows( { page: 'current' } ).data()[displayNum-1].position;
          let cur_data = dataTable.rows( { page: 'current' } ).data()[displayNum].position;
          if (prev_data == cur_data) {
            let items = row.querySelectorAll(':defined');
            items.forEach((i) => {
              let column_name = dataTable.column(i).dataSrc();
              //console.log(dataTable.column(i).className());
              if (column_name && column_name == 'position') {
                //console.log(column_name);
                //console.log(i.innerHTML);
                i.innerHTML = "";
                i.classList.remove("dt-control");
              }
            });
          }
        }
      },
      dom: 'Bfrtip',
      buttons: [
           {
               extend: 'colvis'
           },
      ],
      columns: columnDef,
      
      ajax: "/examples/ajax/data/data_5k.txt",
        
        //select: {
        //  style: 'api',
        //  info: false,
        //},
        //deferLoading: 0,
        //autoWidth: true,
        scrollX: true,
        scrollY: '50vh',
        //scrollCollapse: true,
        //processing: true,
      initComplete: function () {
        $( this.api().table().container()  ).on( 'keyup', "thead input.column_search",function () {
          table
            .column( $(this).closest('th') )
            .search( this.value )
            .draw();
        });
       }
    });
 
} );
11 warnings
Line 2: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 16: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 71: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 72: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 80: 'table' is already defined.
Line 84: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 88: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 89: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 92: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 93: 'arrow function syntax (=>)' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Line 94: 'let' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers