The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<table id="data-table" class="table table-striped table-bordered" width="100%" cellspacing="0">
  <thead>
    <tr>
      <th>Left Device</th>
      <th>Port</th>
      <th>Duplex</th>
      <th>Right Device</th>
      <th>Port</th>
      <th>Duplex</th>
    </tr>
  </thead>
</table>

<script type="text/javascript">
$(document).ready(function() {
  var table = $('#data-table').dataTable({
    "deferRender": true,
    "data": [% results %],
    "columns": [
      {
        "data": 'left_ip',
        "render": function(data, type, row, meta) {
          return he.encode(row.left_dns || row.left_ip);
        }
      }, {
        "data": 'left_port',
        "type": 'portsort',
        "render": function(data, type, row, meta) {
          return type === 'display' ?
            '<a href="[% device_ports %]&q=' + encodeURIComponent(row.left_dns || row.left_ip) + '&f=' + encodeURIComponent(data) + '&c_duplex=on">' + he.encode(data) + '</a>' :
            data;
        }
      }, {
        "data": 'left_duplex',
        "render": function(data, type, row, meta) {
          return he.encode(capitalizeFirstLetter(data || ''));
        }
      }, {
        "data": 'right_ip',
        "render": function(data, type, row, meta) {
          return he.encode(row.right_dns || row.right_ip);
        }
      }, {
        "data": 'right_port',
        "type": 'portsort',
        "render": function(data, type, row, meta) {
          return type === 'display' ?
            '<a href="[% device_ports %]&q=' + encodeURIComponent(row.right_dns || row.right_ip) + '&f=' + encodeURIComponent(data) + '&c_duplex=on">' + he.encode(data) + '</a>' :
            data;
        }
      }, {
        "data": 'right_duplex',
        "render": function(data, type, row, meta) {
          return he.encode(capitalizeFirstLetter(data || ''));
        }
      }
    ],
[% INCLUDE 'ajax/datatabledefaults.tt' -%]
  });
});
</script>