mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-27 22:49:41 -08:00
122 lines
3.7 KiB
JavaScript
Executable file
122 lines
3.7 KiB
JavaScript
Executable file
/**
|
|
* @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);
|