| /** | 
|  * @author: Dennis Hernández | 
|  * @webSite: http://djhvscf.github.io/Blog | 
|  * @version: v1.0.0 | 
|  */ | 
|   | 
| !function ($) { | 
|   | 
|     'use strict'; | 
|   | 
|     var isSearch = false; | 
|   | 
|     var rowAttr = function (row, index) { | 
|         return { | 
|             id: 'customId_' + index | 
|         }; | 
|     }; | 
|   | 
|     $.extend($.fn.bootstrapTable.defaults, { | 
|         reorderableRows: false, | 
|         onDragStyle: null, | 
|         onDropStyle: null, | 
|         onDragClass: "reorder_rows_onDragClass", | 
|         dragHandle: null, | 
|         useRowAttrFunc: false, | 
|         onReorderRowsDrag: function (table, row) { | 
|             return false; | 
|         }, | 
|         onReorderRowsDrop: function (table, row) { | 
|             return false; | 
|         }, | 
|         onReorderRow: function (newData) { | 
|              return false; | 
|         } | 
|     }); | 
|   | 
|     $.extend($.fn.bootstrapTable.Constructor.EVENTS, { | 
|         'reorder-row.bs.table': 'onReorderRow' | 
|     }); | 
|   | 
|     var BootstrapTable = $.fn.bootstrapTable.Constructor, | 
|         _init = BootstrapTable.prototype.init, | 
|         _initSearch = BootstrapTable.prototype.initSearch; | 
|   | 
|     BootstrapTable.prototype.init = function () { | 
|   | 
|         if (!this.options.reorderableRows) { | 
|             _init.apply(this, Array.prototype.slice.apply(arguments)); | 
|             return; | 
|         } | 
|   | 
|         var that = this; | 
|         if (this.options.useRowAttrFunc) { | 
|             this.options.rowAttributes = rowAttr; | 
|         } | 
|   | 
|         var onPostBody = this.options.onPostBody; | 
|         this.options.onPostBody = function () { | 
|             setTimeout(function () { | 
|                 that.makeRowsReorderable(); | 
|                 onPostBody.apply(); | 
|             }, 1); | 
|         }; | 
|   | 
|         _init.apply(this, Array.prototype.slice.apply(arguments)); | 
|     }; | 
|   | 
|     BootstrapTable.prototype.initSearch = function () { | 
|         _initSearch.apply(this, Array.prototype.slice.apply(arguments)); | 
|   | 
|         if (!this.options.reorderableRows) { | 
|             return; | 
|         } | 
|   | 
|         //Known issue after search if you reorder the rows the data is not display properly | 
|         //isSearch = true; | 
|     }; | 
|   | 
|     BootstrapTable.prototype.makeRowsReorderable = function () { | 
|         if (this.options.cardView) { | 
|             return; | 
|         } | 
|   | 
|         var that = this; | 
|         this.$el.tableDnD({ | 
|             onDragStyle: that.options.onDragStyle, | 
|             onDropStyle: that.options.onDropStyle, | 
|             onDragClass: that.options.onDragClass, | 
|             onDrop: that.onDrop, | 
|             onDragStart: that.options.onReorderRowsDrag, | 
|             dragHandle: that.options.dragHandle | 
|         }); | 
|     }; | 
|   | 
|     BootstrapTable.prototype.onDrop = function (table, droppedRow) { | 
|         var tableBs = $(table), | 
|             tableBsData = tableBs.data('bootstrap.table'), | 
|             tableBsOptions = tableBs.data('bootstrap.table').options, | 
|             row = null, | 
|             newData = []; | 
|   | 
|         for (var i = 0; i < table.tBodies[0].rows.length; i++) { | 
|             row = $(table.tBodies[0].rows[i]); | 
|             newData.push(tableBsOptions.data[row.data('index')]); | 
|             row.data('index', i).attr('data-index', i); | 
|         } | 
|   | 
|         tableBsOptions.data = newData; | 
|   | 
|         //Call the user defined function | 
|         tableBsOptions.onReorderRowsDrop.apply(table, [table, droppedRow]); | 
|   | 
|         //Call the event reorder-row | 
|         tableBsData.trigger('reorder-row', newData); | 
|     }; | 
| }(jQuery); |