diff options
Diffstat (limited to 'plugins/slick.rowmovemanager.js')
-rw-r--r-- | plugins/slick.rowmovemanager.js | 227 |
1 files changed, 113 insertions, 114 deletions
diff --git a/plugins/slick.rowmovemanager.js b/plugins/slick.rowmovemanager.js index afb3519..3b26c47 100644 --- a/plugins/slick.rowmovemanager.js +++ b/plugins/slick.rowmovemanager.js @@ -1,133 +1,132 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "RowMoveManager": RowMoveManager - } - }); +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "RowMoveManager":RowMoveManager + } + }); + + function RowMoveManager() { + var _grid; + var _canvas; + var _dragging; + var _self = this; + + function init(grid) { + _grid = grid; + _canvas = _grid.getCanvasNode(); + _grid.onDragInit.subscribe(handleDragInit); + _grid.onDragStart.subscribe(handleDragStart); + _grid.onDrag.subscribe(handleDrag); + _grid.onDragEnd.subscribe(handleDragEnd); + } - function RowMoveManager() { - var _grid; - var _canvas; - var _dragging; - var _self = this; - - function init(grid) { - _grid = grid; - _canvas = _grid.getCanvasNode(); - _grid.onDragInit.subscribe(handleDragInit); - _grid.onDragStart.subscribe(handleDragStart); - _grid.onDrag.subscribe(handleDrag); - _grid.onDragEnd.subscribe(handleDragEnd); - } + function destroy() { + _grid.onDragInit.unsubscribe(handleDragInit); + _grid.onDragStart.unsubscribe(handleDragStart); + _grid.onDrag.unsubscribe(handleDrag); + _grid.onDragEnd.unsubscribe(handleDragEnd); + } - function destroy() { - _grid.onDragInit.unsubscribe(handleDragInit); - _grid.onDragStart.unsubscribe(handleDragStart); - _grid.onDrag.unsubscribe(handleDrag); - _grid.onDragEnd.unsubscribe(handleDragEnd); - } + function handleDragInit(e, dd) { + // prevent the grid from cancelling drag'n'drop by default + e.stopImmediatePropagation(); + } - function handleDragInit(e, dd) { - // prevent the grid from cancelling drag'n'drop by default - e.stopImmediatePropagation(); - } + function handleDragStart(e, dd) { + var cell = _grid.getCellFromEvent(e); + if (_grid.getEditorLock().isActive() || !/move|selectAndMove/.test(_grid.getColumns()[cell.cell].behavior)) { + return false; + } - function handleDragStart(e,dd) { - var cell = _grid.getCellFromEvent(e); - if (_grid.getEditorLock().isActive() || !/move|selectAndMove/.test(_grid.getColumns()[cell.cell].behavior)) { - return false; - } + _dragging = true; + e.stopImmediatePropagation(); - _dragging = true; - e.stopImmediatePropagation(); + var selectedRows = _grid.getSelectedRows(); - var selectedRows = _grid.getSelectedRows(); + if (selectedRows.length == 0 || $.inArray(cell.row, selectedRows) == -1) { + selectedRows = [cell.row]; + _grid.setSelectedRows(selectedRows); + } - if (selectedRows.length == 0 || $.inArray(cell.row, selectedRows) == -1) { - selectedRows = [cell.row]; - _grid.setSelectedRows(selectedRows); - } + var rowHeight = _grid.getOptions().rowHeight; - var rowHeight = _grid.getOptions().rowHeight; + dd.selectedRows = selectedRows; - dd.selectedRows = selectedRows; + dd.selectionProxy = $("<div class='slick-reorder-proxy'/>") + .css("position", "absolute") + .css("zIndex", "99999") + .css("width", $(_canvas).innerWidth()) + .css("height", rowHeight * selectedRows.length) + .appendTo(_canvas); - dd.selectionProxy = $("<div class='slick-reorder-proxy'/>") - .css("position", "absolute") - .css("zIndex", "99999") - .css("width", $(_canvas).innerWidth()) - .css("height", rowHeight*selectedRows.length) - .appendTo(_canvas); + dd.guide = $("<div class='slick-reorder-guide'/>") + .css("position", "absolute") + .css("zIndex", "99998") + .css("width", $(_canvas).innerWidth()) + .css("top", -1000) + .appendTo(_canvas); - dd.guide = $("<div class='slick-reorder-guide'/>") - .css("position", "absolute") - .css("zIndex", "99998") - .css("width", $(_canvas).innerWidth()) - .css("top", -1000) - .appendTo(_canvas); + dd.insertBefore = -1; - dd.insertBefore = -1; + return $("<div></div>").appendTo(_canvas); + } - return $("<div></div>").appendTo(_canvas); + function handleDrag(e, dd) { + if (!_dragging) { + return; + } + + e.stopImmediatePropagation(); + + var top = e.pageY - $(_canvas).offset().top; + dd.selectionProxy.css("top", top - 5); + + var insertBefore = Math.max(0, Math.min(Math.round(top / _grid.getOptions().rowHeight), _grid.getDataLength())); + if (insertBefore !== dd.insertBefore) { + var eventData = { + "rows":dd.selectedRows, + "insertBefore":insertBefore + }; + + if (_self.onBeforeMoveRows.notify(eventData) === false) { + dd.guide.css("top", -1000); + dd.canMove = false; + } else { + dd.guide.css("top", insertBefore * _grid.getOptions().rowHeight); + dd.canMove = true; } - function handleDrag(e,dd) { - if (!_dragging) { - return; - } - - e.stopImmediatePropagation(); - - var top = e.pageY - $(_canvas).offset().top; - dd.selectionProxy.css("top",top-5); - - var insertBefore = Math.max(0,Math.min(Math.round(top/_grid.getOptions().rowHeight),_grid.getDataLength())); - if (insertBefore !== dd.insertBefore) { - var eventData = { - "rows": dd.selectedRows, - "insertBefore": insertBefore - }; - - if (_self.onBeforeMoveRows.notify(eventData) === false) { - dd.guide.css("top", -1000); - dd.canMove = false; - } - else { - dd.guide.css("top",insertBefore*_grid.getOptions().rowHeight); - dd.canMove = true; - } - - dd.insertBefore = insertBefore; - } - } + dd.insertBefore = insertBefore; + } + } - function handleDragEnd(e,dd) { - if (!_dragging) { - return; - } - _dragging = false; - e.stopImmediatePropagation(); - - dd.guide.remove(); - dd.selectionProxy.remove(); - - if (dd.canMove) { - var eventData = { - "rows": dd.selectedRows, - "insertBefore": dd.insertBefore - }; - // TODO: _grid.remapCellCssClasses ? - _self.onMoveRows.notify(eventData); - } - } + function handleDragEnd(e, dd) { + if (!_dragging) { + return; + } + _dragging = false; + e.stopImmediatePropagation(); + + dd.guide.remove(); + dd.selectionProxy.remove(); + + if (dd.canMove) { + var eventData = { + "rows":dd.selectedRows, + "insertBefore":dd.insertBefore + }; + // TODO: _grid.remapCellCssClasses ? + _self.onMoveRows.notify(eventData); + } + } - $.extend(this, { - "onBeforeMoveRows": new Slick.Event(), - "onMoveRows": new Slick.Event(), + $.extend(this, { + "onBeforeMoveRows":new Slick.Event(), + "onMoveRows":new Slick.Event(), - "init": init, - "destroy": destroy - }); - } + "init":init, + "destroy":destroy + }); + } })(jQuery);
\ No newline at end of file |