/** 
 | 
 * @author: Dennis Hernández 
 | 
 * @webSite: http://djhvscf.github.io/Blog 
 | 
 * @version: v1.1.0 
 | 
 */ 
 | 
  
 | 
!function ($) { 
 | 
  
 | 
    'use strict'; 
 | 
  
 | 
    var showHideColumns = function (that, checked) { 
 | 
        if (that.options.columnsHidden.length > 0 ) { 
 | 
            $.each(that.columns, function (i, column) { 
 | 
                if (that.options.columnsHidden.indexOf(column.field) !== -1) { 
 | 
                    if (column.visible !== checked) { 
 | 
                        that.toggleColumn($.fn.bootstrapTable.utils.getFieldIndex(that.columns, column.field), checked, true); 
 | 
                    } 
 | 
                } 
 | 
            }); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    var resetView = function (that) { 
 | 
        if (that.options.height || that.options.showFooter) { 
 | 
            setTimeout(function(){ 
 | 
                that.resetView.call(that); 
 | 
            }, 1); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    var changeView = function (that, width, height) { 
 | 
        if (that.options.minHeight) { 
 | 
            if ((width <= that.options.minWidth) && (height <= that.options.minHeight)) { 
 | 
                conditionCardView(that); 
 | 
            } else if ((width > that.options.minWidth) && (height > that.options.minHeight)) { 
 | 
                conditionFullView(that); 
 | 
            } 
 | 
        } else { 
 | 
            if (width <= that.options.minWidth) { 
 | 
                conditionCardView(that); 
 | 
            } else if (width > that.options.minWidth) { 
 | 
                conditionFullView(that); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        resetView(that); 
 | 
    }; 
 | 
  
 | 
    var conditionCardView = function (that) { 
 | 
        changeTableView(that, false); 
 | 
        showHideColumns(that, false); 
 | 
    }; 
 | 
  
 | 
    var conditionFullView = function (that) { 
 | 
        changeTableView(that, true); 
 | 
        showHideColumns(that, true); 
 | 
    }; 
 | 
  
 | 
    var changeTableView = function (that, cardViewState) { 
 | 
        that.options.cardView = cardViewState; 
 | 
        that.toggleView(); 
 | 
    }; 
 | 
  
 | 
    var debounce = function(func,wait) { 
 | 
        var timeout; 
 | 
        return function() { 
 | 
            var context = this, 
 | 
                args = arguments; 
 | 
            var later = function() { 
 | 
                timeout = null; 
 | 
                func.apply(context,args); 
 | 
            }; 
 | 
            clearTimeout(timeout); 
 | 
            timeout = setTimeout(later, wait); 
 | 
        }; 
 | 
    }; 
 | 
  
 | 
    $.extend($.fn.bootstrapTable.defaults, { 
 | 
        mobileResponsive: false, 
 | 
        minWidth: 562, 
 | 
        minHeight: undefined, 
 | 
        heightThreshold: 100, // just slightly larger than mobile chrome's auto-hiding toolbar 
 | 
        checkOnInit: true, 
 | 
        columnsHidden: [] 
 | 
    }); 
 | 
  
 | 
    var BootstrapTable = $.fn.bootstrapTable.Constructor, 
 | 
        _init = BootstrapTable.prototype.init; 
 | 
  
 | 
    BootstrapTable.prototype.init = function () { 
 | 
        _init.apply(this, Array.prototype.slice.apply(arguments)); 
 | 
  
 | 
        if (!this.options.mobileResponsive) { 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (!this.options.minWidth) { 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        if (this.options.minWidth < 100 && this.options.resizable) { 
 | 
            console.log("The minWidth when the resizable extension is active should be greater or equal than 100"); 
 | 
            this.options.minWidth = 100; 
 | 
        } 
 | 
  
 | 
        var that = this, 
 | 
            old = { 
 | 
                width: $(window).width(), 
 | 
                height: $(window).height() 
 | 
            }; 
 | 
  
 | 
        $(window).on('resize orientationchange',debounce(function (evt) { 
 | 
            // reset view if height has only changed by at least the threshold. 
 | 
            var height = $(this).height(), 
 | 
                width = $(this).width(); 
 | 
  
 | 
            if (Math.abs(old.height - height) > that.options.heightThreshold || old.width != width) { 
 | 
                changeView(that, width, height); 
 | 
                old = { 
 | 
                    width: width, 
 | 
                    height: height 
 | 
                }; 
 | 
            } 
 | 
        },200)); 
 | 
  
 | 
        if (this.options.checkOnInit) { 
 | 
            var height = $(window).height(), 
 | 
                width = $(window).width(); 
 | 
            changeView(this, width, height); 
 | 
            old = { 
 | 
                width: width, 
 | 
                height: height 
 | 
            }; 
 | 
        } 
 | 
    }; 
 | 
}(jQuery); 
 |