summaryrefslogtreecommitdiffstats
path: root/plugins/slick.rowmovemanager.js
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/slick.rowmovemanager.js')
-rw-r--r--plugins/slick.rowmovemanager.js227
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