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...