You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.7 KiB
JavaScript
105 lines
3.7 KiB
JavaScript
(function (global, factory) {
|
|
if (typeof define === "function" && define.amd) {
|
|
define([], factory);
|
|
} else if (typeof exports !== "undefined") {
|
|
factory();
|
|
} else {
|
|
var mod = {
|
|
exports: {}
|
|
};
|
|
factory();
|
|
global.bootstrapTableMultiToggle = mod.exports;
|
|
}
|
|
})(this, function () {
|
|
'use strict';
|
|
|
|
/**
|
|
* @author Homer Glascock <HopGlascock@gmail.com>
|
|
* @version: v1.0.0
|
|
*/
|
|
|
|
!function ($) {
|
|
"use strict";
|
|
|
|
var sprintf = $.fn.bootstrapTable.utils.sprintf;
|
|
|
|
var reInit = function reInit(self) {
|
|
self.initHeader();
|
|
self.initSearch();
|
|
self.initPagination();
|
|
self.initBody();
|
|
};
|
|
|
|
$.extend($.fn.bootstrapTable.defaults, {
|
|
showToggleBtn: false,
|
|
multiToggleDefaults: [] //column names go here
|
|
});
|
|
|
|
$.fn.bootstrapTable.methods.push('hideAllColumns', 'showAllColumns');
|
|
|
|
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
|
_initToolbar = BootstrapTable.prototype.initToolbar;
|
|
|
|
BootstrapTable.prototype.initToolbar = function () {
|
|
|
|
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
|
|
|
|
var that = this,
|
|
$btnGroup = this.$toolbar.find('>.btn-group');
|
|
|
|
if (typeof this.options.multiToggleDefaults === 'string') {
|
|
this.options.multiToggleDefaults = JSON.parse(this.options.multiToggleDefaults);
|
|
}
|
|
|
|
if (this.options.showToggleBtn && this.options.showColumns) {
|
|
var showbtn = "<button class='btn btn-default hidden' id='showAllBtn'><span class='glyphicon glyphicon-resize-full icon-zoom-in'></span></button>",
|
|
hidebtn = "<button class='btn btn-default' id='hideAllBtn'><span class='glyphicon glyphicon-resize-small icon-zoom-out'></span></button>";
|
|
|
|
$btnGroup.append(showbtn + hidebtn);
|
|
|
|
$btnGroup.find('#showAllBtn').click(function () {
|
|
that.showAllColumns();
|
|
$btnGroup.find('#hideAllBtn').toggleClass('hidden');
|
|
$btnGroup.find('#showAllBtn').toggleClass('hidden');
|
|
});
|
|
$btnGroup.find('#hideAllBtn').click(function () {
|
|
that.hideAllColumns();
|
|
$btnGroup.find('#hideAllBtn').toggleClass('hidden');
|
|
$btnGroup.find('#showAllBtn').toggleClass('hidden');
|
|
});
|
|
}
|
|
};
|
|
|
|
BootstrapTable.prototype.hideAllColumns = function () {
|
|
var that = this,
|
|
defaults = that.options.multiToggleDefaults;
|
|
|
|
$.each(this.columns, function (index, column) {
|
|
//if its one of the defaults dont touch it
|
|
if (defaults.indexOf(column.field) == -1 && column.switchable) {
|
|
column.visible = false;
|
|
var $items = that.$toolbar.find('.keep-open input').prop('disabled', false);
|
|
$items.filter(sprintf('[value="%s"]', index)).prop('checked', false);
|
|
}
|
|
});
|
|
|
|
reInit(that);
|
|
};
|
|
|
|
BootstrapTable.prototype.showAllColumns = function () {
|
|
var that = this;
|
|
$.each(this.columns, function (index, column) {
|
|
if (column.switchable) {
|
|
column.visible = true;
|
|
}
|
|
|
|
var $items = that.$toolbar.find('.keep-open input').prop('disabled', false);
|
|
$items.filter(sprintf('[value="%s"]', index)).prop('checked', true);
|
|
});
|
|
|
|
reInit(that);
|
|
|
|
that.toggleColumn(0, that.columns[0].visible, false);
|
|
};
|
|
}(jQuery);
|
|
}); |