Возникли проблемы с использованием таблиц данных с Bootstrap вкладками и шириной столбцов - PullRequest
0 голосов
/ 14 марта 2020

В течение последних нескольких дней я пытался заставить dataTables и Bootstrap вкладки работать так, чтобы ширина столбцов отображалась правильно, используя стили css. Прочитав и попробовав много разных подходов, я наконец-то использовал следующий код. Кажется, есть много способов достичь этого, я делаю это наилучшим образом? Большая проблема, которую я имею, заключается в том, чтобы заголовки столбцов на каждой вкладке расширялись до 100% от контейнера div.

Мой HTML

<div class="tab-content">
  <div class="tab-pane fade active in" id="tab-today">
    <table name="timeline" class="table table-striped table-bordered table-condensed" cellspacing="0" width"100%" id="userTable" >
      <thead>
      <tr class="CenterHeaderRoomData">
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
      </tr>
      </thead>
    <tbody class="CurrentBooking-rows">
    </tbody>
    </table>
  </div>

  <div class="tab-pane fade" id="tab-planned">
    <table name="timelineahead" class="table table-striped table-bordered table-condensed" cellspacing="0" width"100%" id="userTableAhead" >
      <thead>
      <tr class="CenterHeaderRoomData">
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
      </tr>
      </thead>
     <tbody class="CurrentBooking-rows">
     </tbody>
     </table>
    </div>
</div

Мой Jquery

    // TAB 1
$(document).ready(function(){
  var recordid;
      var imagepathroom = '../../../../conf/conf_images/room/';
      var noimageroomahead = '../images/no-image.png';
      var onimageroomahead = '../images/on_image.png';
      var offimageroomahead = '../images/off_image.png';
      var roomoverrideimage = '../images/room_override_image.png';
  var table = $('#userTable').DataTable( {
    createdRow: function(row, data, dataIndex){
      $('td:eq(0)', row).css('min-width', '150px');
      $('td:eq(3)', row).css('min-width', '150px');
      $('td:eq(5)', row).css('min-width', '20px');
      $('td:eq(6)', row).css('min-width', '20px');
    },
    autoWidth: false,
    order: [[ 1,2,3,4,5,6, "asc" ]],
    paging: false,
    searching: false,
    bInfo : false,
    responsive: true,
    ajax: {
      url: 'get_data.php',
      dataSrc: ''
    },
    language: {
      "emptyTable": "There are no conference bookings for <?php echo $date; ?>"
    },
    columnDefs: [
    {
      "targets": [ 5, 6, 7, 8 ],
      "orderable": false
    },
        {
      targets:[ 1 ],
      className: 'zoom'
    },
    {
      "targets": [5,6,7],
      "className": "text-center"
    },
        ],
    columns: [
   { data: "Column-1",  title: "Column-1", width: '13%'},
   { data: "Column-2", title: "Column-2", width: '10%', render : function (data, type){
     if (data != null) {
       return '<img src="' + imagepathroom + '' +data+'"  />';
     } else {
       return '<img src="' + noimageroom + '" />';
     }
   }
   },
   { data: "Column-3", title:"Column-3", width: '38%'},
   { data: "Column-4", title:"Column-4", width: '12%'},
   { data: "Column-5", title: "Column-5",width: '11%'},
   { data: 'Column-6', title: "Column-6",width: '6%',   render : function (data, type){
     if (data == "1" ){
       return '<img src="' + roomoverrideimage + '" />';
     } else {
       return '';
     }
     }
   },
   { data: 'Column-7', title: "Column-7", width: '6%',   render : function (data, type){
     if (data == 1 ){
       return '<img src="' + offimageroom + '" />';
     } else {
       return '<img src="' + onimageroom + '" />';
     }
    }
   },
   { data: 'RColumn-8', title: "",width: '4%',  render : function (data, type, full, meta) {
     var recordid = full.RecordID;
     return '<input type="button" name="edit" value="View" data-id=' + recordid + ' class="btn btn-conf-view btn-xs edit_data_modal">' }
   },
   { data: 'Column-9',"visible": false },
   ],
   rowCallback: function(row, data, index){
     $('td', row).attr('nowrap','nowrap');
   },
   });
   setInterval( function () {
     table.ajax.reload();
   }, 30000 );

//TAB 2
var recordid;
var imagepathroom = '../../../../conf/conf_images/room/';
var noimageroomahead = '../images/no-image.png';
var onimageroomahead = '../images/on_image.png';
var offimageroomahead = '../images/off_image.png';
var roomoverrideimage = '../images/room_override_image.png';
var table = $('#userTableAhead').DataTable( {
  createdRow: function(row, data, dataIndex){
    $('td:eq(0)', row).css('min-width', '150px');
    $('td:eq(3)', row).css('min-width', '150px');
    $('td:eq(5)', row).css('min-width', '20px');
    $('td:eq(6)', row).css('min-width', '20px');
  },
autoWidth: false,
order: [[ 1,2,3,4,5,6, "asc" ]],
paging: false,
searching: false,
bInfo : false,
ajax: {
  url: 'get_data_ahead.php',
  dataSrc: ''
},
language: {
"emptyTable": "There are no planned conference bookings for <?php echo $date; ?>"
},
columnDefs: [
{
"targets": [ 5, 6, 7 ],
"orderable": false
},
{
targets:[ 1 ],
className: 'zoom'
},
{
"targets": [5,6,7],
"className": "text-center"
},
],
columns: [
{ data: "Colname-1", title:"Colname-1",width: '13%'},
{ data: "Colname-2", title:"", width: '10%', render : function (data, type){
  if (data != null) {
    return '<img src="' + imagepathroom + '' +data+'" class="WayfinderSignageImage" />';
  } else {
    return '<img src="' + noimageroomahead + '" class="WayfinderSignageImage"/>';
  }
}
},
{ data: "Colname-3", title:"Colname-3", width: '38%'},
{ data: "Colname-4", title:"Colname-4",width: '12%'},
{ data: "Colname-5",title:"Colname-5", width: '11%'},

{ data: 'Colname-6', title:"Colname-6",width: '6%',   render : function (data, type){
  if (data == "1" ){
    return '<img src="' + roomoverrideimage + '" class="RoomOverrideOn"/>';
  } else {
    return '';
  }
}
},
{ data: 'Colname-7',title:"Colname-7", width: '6%',   render : function (data, type){
  if (data == 1 ){
    return '<img src="' + offimageroomahead + '" class="wayfinder-on"/>';
  } else {
    return '<img src="' + onimageroomahead + '" class="wayfinder-off"/>';
  }
}
},
{ data: 'Colname-8', title:"",width: '4%', render : function (data, type, full, meta) {
var recordid = full.RecordID;
return '<input type="button" name="edit" value="View" data-id=' + recordid + ' class="btn btn-conf-view btn-xs edit_data_modal">' }
},
],
rowCallback: function(row, data, index){
$('td', row).attr('nowrap','nowrap');
},
});
});

Мой вопрос, есть ли более эффективный способ выполнения той же задачи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...