/** * @author Homer Glascock * @version: v1.0.0 */ !function ($) { "use strict"; var calculateObjectValue = $.fn.bootstrapTable.utils.calculateObjectValue, sprintf = $.fn.bootstrapTable.utils.sprintf; var copytext = function (text) { var textField = document.createElement('textarea'); $(textField).html(text); document.body.appendChild(textField); textField.select(); try { document.execCommand('copy'); } catch (e) { console.log("Oops, unable to copy"); } $(textField).remove(); }; $.extend($.fn.bootstrapTable.defaults, { copyBtn: false, copyWHiddenBtn: false, copyDelemeter: ", " }); $.fn.bootstrapTable.methods.push('copyColumnsToClipboard', 'copyColumnsToClipboardWithHidden'); 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 (this.options.clickToSelect || this.options.singleSelect) { if (this.options.copyBtn) { var copybtn = ""; $btnGroup.append(copybtn); $btnGroup.find('#copyBtn').click(function () { that.copyColumnsToClipboard(); }); } if (this.options.copyWHiddenBtn) { var copyhiddenbtn = ""; $btnGroup.append(copyhiddenbtn); $btnGroup.find('#copyWHiddenBtn').click(function () { that.copyColumnsToClipboardWithHidden(); }); } } }; BootstrapTable.prototype.copyColumnsToClipboard = function () { var that = this, ret = "", delimet = this.options.copyDelemeter; $.each(that.getSelections(), function (index, row) { $.each(that.options.columns[0], function (indy, column) { if (column.field !== "state" && column.field !== "RowNumber" && column.visible) { if (row[column.field] !== null) { ret += calculateObjectValue(column, that.header.formatters[indy], [row[column.field], row, index], row[column.field]); } ret += delimet; } }); ret += "\r\n"; }); copytext(ret); }; BootstrapTable.prototype.copyColumnsToClipboardWithHidden = function () { var that = this, ret = "", delimet = this.options.copyDelemeter; $.each(that.getSelections(), function (index, row) { $.each(that.options.columns[0], function (indy, column) { if (column.field != "state" && column.field !== "RowNumber") { if (row[column.field] !== null) { ret += calculateObjectValue(column, that.header.formatters[indy], [row[column.field], row, index], row[column.field]); } ret += delimet; } }); ret += "\r\n"; }); copytext(ret); }; }(jQuery);