Bootstrap Table - hiding sub-columns fix
// Bootstrap table - fix for hiding sub-columns, as seen in #1578 (https://github.com/wenzhixin/bootstrap-table/issues/1578)
HTML
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-table/1.8.1/bootstrap-table.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="https://rawgit.com/dabros/bootstrap-table/patch-8/src/bootstrap-table.js"></script>
<div class="container">
<h1>Group Columns</h1>
<p>Use <code>rowspan, colspan</code> options to set the group columns header.</p>
<table id="table" data-toggle="table" data-show-columns="true">
<thead>
<tr>
<th colspan="5">ABCDE</th>
</tr>
<tr>
<th colspan="2">AB</th>
<th colspan="2">CD</th>
<th data-field="fieldE" rowspan="2" data-valign="middle">E</th>
</tr>
<tr>
<th data-field="fieldA" data-visible="true">A</th>
<th data-field="fieldB" data-visible="true">B</th>
<th data-field="fieldC" data-visible="false">C</th>
<th data-field="fieldD" data-visible="true">D</th>
</tr>
</thead>
<tbody>
<tr>
<td style="border: 1px solid black">a1</td>
<td style="border: 1px solid black">b1</td>
<td style="border: 1px solid black">c1</td>
<td style="border: 1px solid black">d1</td>
<td style="border: 1px solid black">e1</td>
</tr>
<tr>
<td style="border: 1px solid black">a2</td>
<td style="border: 1px solid black">b2</td>
<td style="border: 1px solid black">c2</td>
<td style="border: 1px solid black">d2</td>
<td style="border: 1px solid black">e2</td>
</tr>
</tbody>
</table>
</div>
JavaScript
// Bootstrap table - fix for hiding sub-columns, as seen in #1578 (https://github.com/wenzhixin/bootstrap-table/issues/1578)
// ~line 60 - SetFieldIndex
// ~line 701 - initHeader
// ~line 1583 - initBody
// ~line 2090 - toggle
// NOTE IMPORTANT - toggle for when disabling local to test patch/PR version
// - version of bootstrap-table included in resources taken from:
// https://rawgit.com/dabros/bootstrap-table/patch-8/src/bootstrap-table.js
if(false)
{
/**
* @author zhixin wen <[email protected]>
* version: 1.10.0
* https://github.com/wenzhixin/bootstrap-table/
*/
! function($) {
'use strict';
// TOOLS DEFINITION
// ======================
var cachedWidth = null;
// it only does '%s', and return '' when arguments are undefined
var sprintf = function(str) {
var args = arguments,
flag = true,
i = 1;
str = str.replace(/%s/g, function() {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
};
var getPropertyFromOther = function(list, from, to, value) {
var result = '';
$.each(list, function(i, item) {
if (item[from] === value) {
result = item[to];
return false;
}
return true;
});
return result;
};
var getFieldIndex = function(columns, field) {
var index = -1;
$.each(columns, function(i, column) {
if (column.field === field) {
index = i;
return false;
}
return true;
});
return index;
};
// http://jsfiddle.net/wenyi/47nz7ez9/3/
var setFieldIndex = function(columns) {
var i, j, k,
totalCol = 0,
flag = [];
for (i = 0; i < columns[0].length; i++) {
totalCol += columns[0][i].colspan || 1;
}
for (i = 0; i < columns.length; i++) {
flag[i] = [];
for (j = 0; j < totalCol; j++) {
flag[i][j] = false;
}
}
for (i = 0; i...