first commit
This commit is contained in:
179
WebRoot/plugins/bootstrap-table/extensions/export/bootstrap-table-export.js
vendored
Normal file
179
WebRoot/plugins/bootstrap-table/extensions/export/bootstrap-table-export.js
vendored
Normal file
@ -0,0 +1,179 @@
|
||||
/**
|
||||
* @author zhixin wen <wenzhixin2010@gmail.com>
|
||||
* extensions: https://github.com/kayalshri/tableExport.jquery.plugin
|
||||
*/
|
||||
|
||||
(function ($) {
|
||||
'use strict';
|
||||
var sprintf = $.fn.bootstrapTable.utils.sprintf;
|
||||
|
||||
var TYPE_NAME = {
|
||||
json: 'JSON',
|
||||
xml: 'XML',
|
||||
png: 'PNG',
|
||||
csv: 'CSV',
|
||||
txt: 'TXT',
|
||||
sql: 'SQL',
|
||||
doc: 'MS-Word',
|
||||
excel: 'MS-Excel',
|
||||
xlsx: 'MS-Excel (OpenXML)',
|
||||
powerpoint: 'MS-Powerpoint',
|
||||
pdf: 'PDF'
|
||||
};
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults, {
|
||||
showExport: false,
|
||||
exportDataType: 'basic', // basic, all, selected
|
||||
// 'json', 'xml', 'png', 'csv', 'txt', 'sql', 'doc', 'excel', 'powerpoint', 'pdf'
|
||||
exportTypes: ['json', 'xml', 'csv', 'txt', 'sql', 'excel'],
|
||||
exportOptions: {}
|
||||
});
|
||||
|
||||
$.extend($.fn.bootstrapTable.defaults.icons, {
|
||||
export: 'glyphicon-export icon-share'
|
||||
});
|
||||
|
||||
$.extend($.fn.bootstrapTable.locales, {
|
||||
formatExport: function () {
|
||||
return 'Export data';
|
||||
}
|
||||
});
|
||||
$.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
|
||||
|
||||
var BootstrapTable = $.fn.bootstrapTable.Constructor,
|
||||
_initToolbar = BootstrapTable.prototype.initToolbar;
|
||||
|
||||
BootstrapTable.prototype.initToolbar = function () {
|
||||
this.showToolbar = this.showToolbar || this.options.showExport;
|
||||
|
||||
_initToolbar.apply(this, Array.prototype.slice.apply(arguments));
|
||||
|
||||
if (this.options.showExport) {
|
||||
var that = this,
|
||||
$btnGroup = this.$toolbar.find('>.btn-group'),
|
||||
$export = $btnGroup.find('div.export');
|
||||
|
||||
if (!$export.length) {
|
||||
$export = $([
|
||||
'<div class="export btn-group">',
|
||||
'<button class="btn' +
|
||||
sprintf(' btn-%s', this.options.buttonsClass) +
|
||||
sprintf(' btn-%s', this.options.iconSize) +
|
||||
' dropdown-toggle" aria-label="export type" ' +
|
||||
'title="' + this.options.formatExport() + '" ' +
|
||||
'data-toggle="dropdown" type="button">',
|
||||
sprintf('<i class="%s %s"></i> ', this.options.iconsPrefix, this.options.icons.export),
|
||||
'<span class="caret"></span>',
|
||||
'</button>',
|
||||
'<ul class="dropdown-menu" role="menu">',
|
||||
'</ul>',
|
||||
'</div>'].join('')).appendTo($btnGroup);
|
||||
|
||||
var $menu = $export.find('.dropdown-menu'),
|
||||
exportTypes = this.options.exportTypes;
|
||||
|
||||
if (typeof this.options.exportTypes === 'string') {
|
||||
var types = this.options.exportTypes.slice(1, -1).replace(/ /g, '').split(',');
|
||||
|
||||
exportTypes = [];
|
||||
$.each(types, function (i, value) {
|
||||
exportTypes.push(value.slice(1, -1));
|
||||
});
|
||||
}
|
||||
$.each(exportTypes, function (i, type) {
|
||||
if (TYPE_NAME.hasOwnProperty(type)) {
|
||||
$menu.append(['<li role="menuitem" data-type="' + type + '">',
|
||||
'<a href="javascript:void(0)">',
|
||||
TYPE_NAME[type],
|
||||
'</a>',
|
||||
'</li>'].join(''));
|
||||
}
|
||||
});
|
||||
|
||||
$menu.find('li').click(function () {
|
||||
var type = $(this).data('type'),
|
||||
doExport = function () {
|
||||
|
||||
if (!!that.options.exportFooter) {
|
||||
var data = that.getData();
|
||||
var $footerRow = that.$tableFooter.find("tr").first();
|
||||
|
||||
var footerData = { };
|
||||
var footerHtml = [];
|
||||
|
||||
$.each($footerRow.children(), function (index, footerCell) {
|
||||
|
||||
var footerCellHtml = $(footerCell).children(".th-inner").first().html();
|
||||
footerData[that.columns[index].field] = footerCellHtml == ' ' ? null : footerCellHtml;
|
||||
|
||||
// grab footer cell text into cell index-based array
|
||||
footerHtml.push(footerCellHtml);
|
||||
});
|
||||
|
||||
that.append(footerData);
|
||||
|
||||
var $lastTableRow = that.$body.children().last();
|
||||
|
||||
$.each($lastTableRow.children(), function (index, lastTableRowCell) {
|
||||
|
||||
$(lastTableRowCell).html(footerHtml[index]);
|
||||
});
|
||||
}
|
||||
|
||||
that.$el.tableExport($.extend({}, that.options.exportOptions, {
|
||||
type: type,
|
||||
escape: false
|
||||
}));
|
||||
|
||||
if (!!that.options.exportFooter) {
|
||||
that.load(data);
|
||||
}
|
||||
};
|
||||
|
||||
var stateField = that.header.stateField;
|
||||
|
||||
if (that.options.exportDataType === 'all' && that.options.pagination) {
|
||||
that.$el.one(that.options.sidePagination === 'server' ? 'post-body.bs.table' : 'page-change.bs.table', function () {
|
||||
if (stateField) {
|
||||
that.hideColumn(stateField);
|
||||
}
|
||||
doExport();
|
||||
that.togglePagination();
|
||||
});
|
||||
that.togglePagination();
|
||||
} else if (that.options.exportDataType === 'selected') {
|
||||
var data = that.getData(),
|
||||
selectedData = that.getSelections();
|
||||
if (!selectedData.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (that.options.sidePagination === 'server') {
|
||||
var dataServer = {total: that.options.totalRows};
|
||||
dataServer[that.options.dataField] = data;
|
||||
data = dataServer;
|
||||
var selectedDataServer = {total: selectedData.length};
|
||||
selectedDataServer[that.options.dataField] = selectedData;
|
||||
selectedData = selectedDataServer;
|
||||
}
|
||||
|
||||
that.load(selectedData);
|
||||
if (stateField) {
|
||||
that.hideColumn(stateField);
|
||||
}
|
||||
doExport();
|
||||
that.load(data);
|
||||
} else {
|
||||
if (stateField) {
|
||||
that.hideColumn(stateField);
|
||||
}
|
||||
doExport();
|
||||
}
|
||||
if (stateField) {
|
||||
that.showColumn(stateField);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
||||
7
WebRoot/plugins/bootstrap-table/extensions/export/bootstrap-table-export.min.js
vendored
Normal file
7
WebRoot/plugins/bootstrap-table/extensions/export/bootstrap-table-export.min.js
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
/*
|
||||
* bootstrap-table - v1.12.1 - 2018-03-12
|
||||
* https://github.com/wenzhixin/bootstrap-table
|
||||
* Copyright (c) 2018 zhixin wen
|
||||
* Licensed MIT License
|
||||
*/
|
||||
!function(a){"use strict";var b=a.fn.bootstrapTable.utils.sprintf,c={json:"JSON",xml:"XML",png:"PNG",csv:"CSV",txt:"TXT",sql:"SQL",doc:"MS-Word",excel:"MS-Excel",xlsx:"MS-Excel (OpenXML)",powerpoint:"MS-Powerpoint",pdf:"PDF"};a.extend(a.fn.bootstrapTable.defaults,{showExport:!1,exportDataType:"basic",exportTypes:["json","xml","csv","txt","sql","excel"],exportOptions:{}}),a.extend(a.fn.bootstrapTable.defaults.icons,{"export":"glyphicon-export icon-share"}),a.extend(a.fn.bootstrapTable.locales,{formatExport:function(){return"Export data"}}),a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales);var d=a.fn.bootstrapTable.Constructor,e=d.prototype.initToolbar;d.prototype.initToolbar=function(){if(this.showToolbar=this.showToolbar||this.options.showExport,e.apply(this,Array.prototype.slice.apply(arguments)),this.options.showExport){var d=this,f=this.$toolbar.find(">.btn-group"),g=f.find("div.export");if(!g.length){g=a(['<div class="export btn-group">','<button class="btn'+b(" btn-%s",this.options.buttonsClass)+b(" btn-%s",this.options.iconSize)+' dropdown-toggle" aria-label="export type" title="'+this.options.formatExport()+'" data-toggle="dropdown" type="button">',b('<i class="%s %s"></i> ',this.options.iconsPrefix,this.options.icons["export"]),'<span class="caret"></span>',"</button>",'<ul class="dropdown-menu" role="menu">',"</ul>","</div>"].join("")).appendTo(f);var h=g.find(".dropdown-menu"),i=this.options.exportTypes;if("string"==typeof this.options.exportTypes){var j=this.options.exportTypes.slice(1,-1).replace(/ /g,"").split(",");i=[],a.each(j,function(a,b){i.push(b.slice(1,-1))})}a.each(i,function(a,b){c.hasOwnProperty(b)&&h.append(['<li role="menuitem" data-type="'+b+'">','<a href="javascript:void(0)">',c[b],"</a>","</li>"].join(""))}),h.find("li").click(function(){var b=a(this).data("type"),c=function(){if(d.options.exportFooter){var c=d.getData(),e=d.$tableFooter.find("tr").first(),f={},g=[];a.each(e.children(),function(b,c){var e=a(c).children(".th-inner").first().html();f[d.columns[b].field]=" "==e?null:e,g.push(e)}),d.append(f);var h=d.$body.children().last();a.each(h.children(),function(b,c){a(c).html(g[b])})}d.$el.tableExport(a.extend({},d.options.exportOptions,{type:b,escape:!1})),d.options.exportFooter&&d.load(c)},e=d.header.stateField;if("all"===d.options.exportDataType&&d.options.pagination)d.$el.one("server"===d.options.sidePagination?"post-body.bs.table":"page-change.bs.table",function(){e&&d.hideColumn(e),c(),d.togglePagination()}),d.togglePagination();else if("selected"===d.options.exportDataType){var f=d.getData(),g=d.getSelections();if(!g.length)return;if("server"===d.options.sidePagination){var h={total:d.options.totalRows};h[d.options.dataField]=f,f=h;var i={total:g.length};i[d.options.dataField]=g,g=i}d.load(g),e&&d.hideColumn(e),c(),d.load(f)}else e&&d.hideColumn(e),c();e&&d.showColumn(e)})}}}}(jQuery);
|
||||
Reference in New Issue
Block a user