/** 
 | 
 * @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', 
 | 
        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' 
 | 
    }); 
 | 
  
 | 
    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 btn-default' + 
 | 
                            sprintf(' btn-%s', this.options.iconSize) + 
 | 
                            ' dropdown-toggle" ' + 
 | 
                            '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 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('load-success.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(); 
 | 
  
 | 
                        that.load(selectedData); 
 | 
                        doExport(); 
 | 
                        that.load(data); 
 | 
                    } else { 
 | 
                        doExport(); 
 | 
                    } 
 | 
                }); 
 | 
            } 
 | 
        } 
 | 
    }; 
 | 
})(jQuery); 
 |