| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 | /** * @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.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 () {                            that.$el.tableExport($.extend({}, that.options.exportOptions, {                                type: type,                                escape: false                            }));                        };                    if (that.options.exportDataType === 'all' && that.options.pagination) {                        that.$el.one(that.options.sidePagination === 'server' ? 'post-body.bs.table' : 'page-change.bs.table', function () {                            doExport();                            that.togglePagination();                        });                        that.togglePagination();                    } else if (that.options.exportDataType === 'selected') {                        var data = that.getData(),                            selectedData = that.getAllSelections();                        // Quick fix #2220                        if (that.options.sidePagination === 'server') {                            data = {total: that.options.totalRows};                            data[that.options.dataField] = that.getData();                            var Table = typeof require === 'function' ? require('table') : null;                            selectedData = {total: that.options.totalRows};                            selectedData[that.options.dataField] = Table && that.options.maintainSelected ? Table.api.selecteddata(that.$el) : that.getAllSelections();                        }                        that.load(selectedData);                        doExport();                        that.load(data);                    } else {                        doExport();                    }                });            }        }    };})(jQuery);
 |