| /** | 
|  * @author: Dennis Hernández | 
|  * @webSite: http://djhvscf.github.io/Blog | 
|  * @version: v1.1.0 | 
|  */ | 
|   | 
| !function ($) { | 
|   | 
|     'use strict'; | 
|   | 
|     $.extend($.fn.bootstrapTable.defaults, { | 
|         reorderableColumns: false, | 
|         maxMovingRows: 10, | 
|         onReorderColumn: function (headerFields) { | 
|             return false; | 
|         }, | 
|         dragaccept: null | 
|     }); | 
|   | 
|     $.extend($.fn.bootstrapTable.Constructor.EVENTS, { | 
|         'reorder-column.bs.table': 'onReorderColumn' | 
|     }); | 
|   | 
|     var BootstrapTable = $.fn.bootstrapTable.Constructor, | 
|         _initHeader = BootstrapTable.prototype.initHeader, | 
|         _toggleColumn = BootstrapTable.prototype.toggleColumn, | 
|         _toggleView = BootstrapTable.prototype.toggleView, | 
|         _resetView = BootstrapTable.prototype.resetView; | 
|   | 
|     BootstrapTable.prototype.initHeader = function () { | 
|         _initHeader.apply(this, Array.prototype.slice.apply(arguments)); | 
|   | 
|         if (!this.options.reorderableColumns) { | 
|             return; | 
|         } | 
|   | 
|         this.makeRowsReorderable(); | 
|     }; | 
|   | 
|     BootstrapTable.prototype.toggleColumn = function () { | 
|         _toggleColumn.apply(this, Array.prototype.slice.apply(arguments)); | 
|   | 
|         if (!this.options.reorderableColumns) { | 
|             return; | 
|         } | 
|   | 
|         this.makeRowsReorderable(); | 
|     }; | 
|   | 
|     BootstrapTable.prototype.toggleView = function () { | 
|         _toggleView.apply(this, Array.prototype.slice.apply(arguments)); | 
|   | 
|         if (!this.options.reorderableColumns) { | 
|             return; | 
|         } | 
|   | 
|         if (this.options.cardView) { | 
|             return; | 
|         } | 
|   | 
|         this.makeRowsReorderable(); | 
|     }; | 
|   | 
|     BootstrapTable.prototype.resetView = function () { | 
|         _resetView.apply(this, Array.prototype.slice.apply(arguments)); | 
|   | 
|         if (!this.options.reorderableColumns) { | 
|             return; | 
|         } | 
|   | 
|         this.makeRowsReorderable(); | 
|     }; | 
|   | 
|     BootstrapTable.prototype.makeRowsReorderable = function () { | 
|         var that = this; | 
|         try { | 
|             $(this.$el).dragtable('destroy'); | 
|         } catch (e) {} | 
|         $(this.$el).dragtable({ | 
|             maxMovingRows: that.options.maxMovingRows, | 
|             dragaccept: that.options.dragaccept, | 
|             clickDelay:200, | 
|             beforeStop: function() { | 
|                 var ths = [], | 
|                     formatters = [], | 
|                     columns = [], | 
|                     columnsHidden = [], | 
|                     columnIndex = -1; | 
|                 that.$header.find('th').each(function (i) { | 
|                     ths.push($(this).data('field')); | 
|                     formatters.push($(this).data('formatter')); | 
|                 }); | 
|   | 
|                 //Exist columns not shown | 
|                 if (ths.length < that.columns.length) { | 
|                     columnsHidden = $.grep(that.columns, function (column) { | 
|                        return !column.visible; | 
|                     }); | 
|                     for (var i = 0; i < columnsHidden.length; i++) { | 
|                         ths.push(columnsHidden[i].field); | 
|                         formatters.push(columnsHidden[i].formatter); | 
|                     } | 
|                 } | 
|   | 
|                 for (var i = 0; i < ths.length; i++ ) { | 
|                     columnIndex = $.fn.bootstrapTable.utils.getFieldIndex(that.columns, ths[i]); | 
|                     if (columnIndex !== -1) { | 
|                         columns.push(that.columns[columnIndex]); | 
|                         that.columns.splice(columnIndex, 1); | 
|                     } | 
|                 } | 
|   | 
|                 that.columns = that.columns.concat(columns); | 
|                 that.header.fields = ths; | 
|                 that.header.formatters = formatters; | 
|                 that.resetView(); | 
|                 that.trigger('reorder-column', ths); | 
|             } | 
|         }); | 
|     }; | 
| }(jQuery); |