Browse Source

initial commit, added copy extension code

Hop 9 years ago
parent
commit
7f759c481b
1 changed files with 102 additions and 0 deletions
  1. 102 0
      src/extensions/copy-rows/copy-rows.js

+ 102 - 0
src/extensions/copy-rows/copy-rows.js

@@ -0,0 +1,102 @@
+/**
+ * @author Homer Glascock <HopGlascock@gmail.com>
+ * @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 = "<button class='btn btn-default' id='copyBtn'><span class='glyphicon glyphicon-copy icon-pencil'></span></button>";
+                $btnGroup.append(copybtn);
+                $btnGroup.find('#copyBtn').click(function () { that.copyColumnsToClipboard(); });
+            }
+
+            if (this.options.copyWHiddenBtn) {
+                var copyhiddenbtn = "<button class='btn btn-default' id='copyWHiddenBtn'><span class='badge'><span class='glyphicon glyphicon-copy icon-pencil'></span></span></button>";
+                $btnGroup.append(copyhiddenbtn);
+                $btnGroup.find('#copyWHiddenBtn').click(function () { that.copyColumnsToClipboardWithHidden(); });
+            }
+        }
+    };
+
+    BootstrapTable.prototype.copyColumnsToClipboard = function () {
+        var self = this,
+            ret = "",
+            delimet = this.options.copyDelemeter;
+
+        $.each(self.getSelections(), function (index, row) {
+            $.each(self.options.columns[0], function (indy, column) {
+                if (column.field !== "state" && column.field !== "RowNumber" && column.visible) {
+                    if (row[column.field] !== null) {
+                        ret += calculateObjectValue(column, self.header.formatters[indy], [row[column.field], row, index], row[column.field]);
+                    }
+                    ret += delimet;
+                }
+            });
+
+            ret += "\r\n";
+        });
+
+        copytext(ret);
+    };
+
+    BootstrapTable.prototype.copyColumnsToClipboardWithHidden = function () {
+        var self = this,
+            ret = "",
+            delimet = this.options.copyDelemeter;
+
+        $.each(self.getSelections(), function (index, row) {
+            $.each(self.options.columns[0], function (indy, column) {
+                if (column.field != "state" && column.field !== "RowNumber") {
+                    if (row[column.field] !== null) {
+                        ret += calculateObjectValue(column, self.header.formatters[indy], [row[column.field], row, index], row[column.field]);
+                    }
+                    ret += delimet;
+                }
+            });
+
+            ret += "\r\n";
+        });
+
+        copytext(ret);
+    };
+}(jQuery);