/pack-rat/003_pack_rat/pack-rat/node_modules/bootstrap-table/docs/dist/extensions/multiple-selection-row/bootstrap-table-multiple-selection-row.js |
@@ -0,0 +1,127 @@ |
/** |
* @author: Dennis Hernández |
* @webSite: http://djhvscf.github.io/Blog |
* @version: v1.0.0 |
*/ |
|
!function ($) { |
|
'use strict'; |
|
document.onselectstart = function() { |
return false; |
}; |
|
var getTableObjectFromCurrentTarget = function (currentTarget) { |
currentTarget = $(currentTarget); |
return currentTarget.is("table") ? currentTarget : currentTarget.parents().find(".table"); |
}; |
|
var getRow = function (target) { |
target = $(target); |
return target.parent().parent(); |
}; |
|
var onRowClick = function (e) { |
var that = getTableObjectFromCurrentTarget(e.currentTarget); |
|
if (window.event.ctrlKey) { |
toggleRow(e.currentTarget, that, false, false); |
} |
|
if (window.event.button === 0) { |
if (!window.event.ctrlKey && !window.event.shiftKey) { |
clearAll(that); |
toggleRow(e.currentTarget, that, false, false); |
} |
|
if (window.event.shiftKey) { |
selectRowsBetweenIndexes([that.bootstrapTable("getOptions").multipleSelectRowLastSelectedRow.rowIndex, e.currentTarget.rowIndex], that) |
} |
} |
}; |
|
var onCheckboxChange = function (e) { |
var that = getTableObjectFromCurrentTarget(e.currentTarget); |
clearAll(that); |
toggleRow(getRow(e.currentTarget), that, false, false); |
}; |
|
var toggleRow = function (row, that, clearAll, useShift) { |
if (clearAll) { |
row = $(row); |
that.bootstrapTable("getOptions").multipleSelectRowLastSelectedRow = undefined; |
row.removeClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass); |
that.bootstrapTable("uncheck", row.data("index")); |
} else { |
that.bootstrapTable("getOptions").multipleSelectRowLastSelectedRow = row; |
row = $(row); |
if (useShift) { |
row.addClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass); |
that.bootstrapTable("check", row.data("index")); |
} else { |
if(row.hasClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass)) { |
row.removeClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass) |
that.bootstrapTable("uncheck", row.data("index")); |
} else { |
row.addClass(that.bootstrapTable("getOptions").multipleSelectRowCssClass); |
that.bootstrapTable("check", row.data("index")); |
} |
} |
} |
}; |
|
var selectRowsBetweenIndexes = function (indexes, that) { |
indexes.sort(function(a, b) { |
return a - b; |
}); |
|
for (var i = indexes[0]; i <= indexes[1]; i++) { |
toggleRow(that.bootstrapTable("getOptions").multipleSelectRowRows[i-1], that, false, true); |
} |
}; |
|
var clearAll = function (that) { |
for (var i = 0; i < that.bootstrapTable("getOptions").multipleSelectRowRows.length; i++) { |
toggleRow(that.bootstrapTable("getOptions").multipleSelectRowRows[i], that, true, false); |
} |
}; |
|
$.extend($.fn.bootstrapTable.defaults, { |
multipleSelectRow: false, |
multipleSelectRowCssClass: 'multiple-select-row-selected', |
//internal variables used by the extension |
multipleSelectRowLastSelectedRow: undefined, |
multipleSelectRowRows: [] |
}); |
|
var BootstrapTable = $.fn.bootstrapTable.Constructor, |
_init = BootstrapTable.prototype.init, |
_initBody = BootstrapTable.prototype.initBody; |
|
BootstrapTable.prototype.init = function () { |
if (this.options.multipleSelectRow) { |
var that = this; |
|
//Make sure that the internal variables have the correct value |
this.options.multipleSelectRowLastSelectedRow = undefined; |
this.options.multipleSelectRowRows = []; |
|
this.$el.on("post-body.bs.table", function (e) { |
setTimeout(function () { |
that.options.multipleSelectRowRows = that.$body.children(); |
that.options.multipleSelectRowRows.click(onRowClick); |
that.options.multipleSelectRowRows.find("input[type=checkbox]").change(onCheckboxChange); |
}, 1); |
}); |
} |
|
_init.apply(this, Array.prototype.slice.apply(arguments)); |
}; |
|
BootstrapTable.prototype.clearAllMultipleSelectionRow = function () { |
clearAll(this); |
}; |
|
$.fn.bootstrapTable.methods.push('clearAllMultipleSelectionRow'); |
}(jQuery); |