You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.7 KiB
47 lines
1.7 KiB
(function($) {
|
|
$.fn.resizableColumns = function() {
|
|
var isColResizing = false;
|
|
var resizingPosX = 0;
|
|
var _table = $(this);
|
|
var _thead = $(this).find('thead');
|
|
|
|
_thead.find('th').each(function() {
|
|
$(this).css('position', 'relative');
|
|
if ($(this).is(':not(:last-child)')) $(this).append("<div class='resizer' style='position:absolute;top:0px;right:-3px;bottom:0px;width:6px;z-index:999;background:transparent;cursor:col-resize'></div>");
|
|
})
|
|
|
|
$(document).mouseup(function(e) {
|
|
_thead.find('th').removeClass('resizing');
|
|
isColResizing = false;
|
|
e.stopPropagation();
|
|
})
|
|
|
|
_table.find('.resizer').mousedown(function(e) {
|
|
_thead.find('th').removeClass('resizing');
|
|
$(_thead).find('tr:first-child th:nth-child(' + ($(this).closest('th').index() + 1) + ') .resizer').closest('th').addClass('resizing');
|
|
resizingPosX = e.pageX;
|
|
isColResizing = true;
|
|
e.stopPropagation();
|
|
})
|
|
|
|
_table.mousemove(function(e) {
|
|
if (isColResizing) {
|
|
|
|
var _resizing = _thead.find('th.resizing .resizer');
|
|
if (_resizing.length == 1) {
|
|
var _nextRow = _thead.find('th.resizing + th');
|
|
var _pageX = e.pageX || 0;
|
|
var _widthDiff = _pageX - resizingPosX;
|
|
var _setWidth = _resizing.closest('th').innerWidth() + _widthDiff;
|
|
var _nextRowWidth = _nextRow.innerWidth() - _widthDiff;
|
|
if (resizingPosX != 0 && _widthDiff != 0 && _setWidth > 50 && _nextRowWidth > 50) {
|
|
_resizing.closest('th').innerWidth(_setWidth);
|
|
resizingPosX = e.pageX;
|
|
_nextRow.innerWidth(_nextRowWidth);
|
|
}
|
|
}
|
|
}
|
|
})
|
|
};
|
|
}
|
|
(jQuery));
|