diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/slick.autotooltips.js | 81 | ||||
-rw-r--r-- | plugins/slick.cellcopymanager.js | 144 | ||||
-rw-r--r-- | plugins/slick.cellrangedecorator.js | 109 | ||||
-rw-r--r-- | plugins/slick.cellrangeselector.js | 196 | ||||
-rw-r--r-- | plugins/slick.cellselectionmodel.js | 154 | ||||
-rw-r--r-- | plugins/slick.checkboxselectcolumn.js | 231 | ||||
-rw-r--r-- | plugins/slick.rowmovemanager.js | 227 | ||||
-rw-r--r-- | plugins/slick.rowselectionmodel.js | 319 |
8 files changed, 729 insertions, 732 deletions
diff --git a/plugins/slick.autotooltips.js b/plugins/slick.autotooltips.js index c5c4897..4d2baea 100644 --- a/plugins/slick.autotooltips.js +++ b/plugins/slick.autotooltips.js @@ -1,49 +1,48 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "AutoTooltips": AutoTooltips - } - }); +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "AutoTooltips":AutoTooltips + } + }); - function AutoTooltips(options) { - var _grid; - var _self = this; - var _defaults = { - maxToolTipLength: null - }; + function AutoTooltips(options) { + var _grid; + var _self = this; + var _defaults = { + maxToolTipLength:null + }; - function init(grid) { - options = $.extend(true,{},_defaults,options); - _grid = grid; - _grid.onMouseEnter.subscribe(handleMouseEnter); - } + function init(grid) { + options = $.extend(true, {}, _defaults, options); + _grid = grid; + _grid.onMouseEnter.subscribe(handleMouseEnter); + } - function destroy() { - _grid.onMouseEnter.unsubscribe(handleMouseEnter); - } + function destroy() { + _grid.onMouseEnter.unsubscribe(handleMouseEnter); + } - function handleMouseEnter(e,args) { - var cell = _grid.getCellFromEvent(e); - if (cell) { - var node = _grid.getCellNode(cell.row, cell.cell); - if ($(node).innerWidth() < node.scrollWidth) { - var text = $.trim($(node).text()); - if (options.maxToolTipLength && text.length > options.maxToolTipLength) { - text = text.substr(0, options.maxToolTipLength - 3) + "..."; - } - $(node).attr("title",text); - } - else { - $(node).attr("title",""); - } - } + function handleMouseEnter(e, args) { + var cell = _grid.getCellFromEvent(e); + if (cell) { + var node = _grid.getCellNode(cell.row, cell.cell); + if ($(node).innerWidth() < node.scrollWidth) { + var text = $.trim($(node).text()); + if (options.maxToolTipLength && text.length > options.maxToolTipLength) { + text = text.substr(0, options.maxToolTipLength - 3) + "..."; + } + $(node).attr("title", text); + } else { + $(node).attr("title", ""); } - - $.extend(this, { - "init": init, - "destroy": destroy - }); + } } + + $.extend(this, { + "init":init, + "destroy":destroy + }); + } })(jQuery);
\ No newline at end of file diff --git a/plugins/slick.cellcopymanager.js b/plugins/slick.cellcopymanager.js index 2b283f0..1d9c613 100644 --- a/plugins/slick.cellcopymanager.js +++ b/plugins/slick.cellcopymanager.js @@ -1,86 +1,86 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "CellCopyManager": CellCopyManager - } - }); - - - function CellCopyManager() { - var _grid; - var _self = this; - var _copiedRanges; +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "CellCopyManager":CellCopyManager + } + }); - function init(grid) { - _grid = grid; - _grid.onKeyDown.subscribe(handleKeyDown); - } - function destroy() { - _grid.onKeyDown.unsubscribe(handleKeyDown); - } + function CellCopyManager() { + var _grid; + var _self = this; + var _copiedRanges; - function handleKeyDown(e, args) { - var ranges; - if (!_grid.getEditorLock().isActive()) { - if (e.which == $.ui.keyCode.ESCAPE) { - if (_copiedRanges) { - e.preventDefault(); - clearCopySelection(); - _self.onCopyCancelled.notify({ranges:_copiedRanges}); - _copiedRanges = null; - } - } + function init(grid) { + _grid = grid; + _grid.onKeyDown.subscribe(handleKeyDown); + } - if (e.which == 67 && (e.ctrlKey || e.metaKey)) { - ranges = _grid.getSelectionModel().getSelectedRanges(); - if (ranges.length != 0) { - e.preventDefault(); - _copiedRanges = ranges; - markCopySelection(ranges); - _self.onCopyCells.notify({ranges:ranges}); - } - } + function destroy() { + _grid.onKeyDown.unsubscribe(handleKeyDown); + } - if (e.which == 86 && (e.ctrlKey || e.metaKey)) { - if (_copiedRanges) { - e.preventDefault(); - clearCopySelection(); - ranges = _grid.getSelectionModel().getSelectedRanges(); - _self.onPasteCells.notify({from:_copiedRanges, to:ranges}); - _copiedRanges = null; - } - } - } + function handleKeyDown(e, args) { + var ranges; + if (!_grid.getEditorLock().isActive()) { + if (e.which == $.ui.keyCode.ESCAPE) { + if (_copiedRanges) { + e.preventDefault(); + clearCopySelection(); + _self.onCopyCancelled.notify({ranges:_copiedRanges}); + _copiedRanges = null; + } } - function markCopySelection(ranges) { - var columns = _grid.getColumns(); - var hash = {}; - for (var i = 0; i < ranges.length; i++) { - for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) { - hash[j] = {}; - for (var k = ranges[i].fromCell; k <= ranges[i].toCell; k++) { - hash[j][columns[k].id] = "copied"; - } - } - } - _grid.setCellCssStyles("copy-manager", hash); + if (e.which == 67 && (e.ctrlKey || e.metaKey)) { + ranges = _grid.getSelectionModel().getSelectedRanges(); + if (ranges.length != 0) { + e.preventDefault(); + _copiedRanges = ranges; + markCopySelection(ranges); + _self.onCopyCells.notify({ranges:ranges}); + } } - function clearCopySelection() { - _grid.removeCellCssStyles("copy-manager"); + if (e.which == 86 && (e.ctrlKey || e.metaKey)) { + if (_copiedRanges) { + e.preventDefault(); + clearCopySelection(); + ranges = _grid.getSelectionModel().getSelectedRanges(); + _self.onPasteCells.notify({from:_copiedRanges, to:ranges}); + _copiedRanges = null; + } } + } + } - $.extend(this, { - "init": init, - "destroy": destroy, - "clearCopySelection": clearCopySelection, + function markCopySelection(ranges) { + var columns = _grid.getColumns(); + var hash = {}; + for (var i = 0; i < ranges.length; i++) { + for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) { + hash[j] = {}; + for (var k = ranges[i].fromCell; k <= ranges[i].toCell; k++) { + hash[j][columns[k].id] = "copied"; + } + } + } + _grid.setCellCssStyles("copy-manager", hash); + } - "onCopyCells": new Slick.Event(), - "onCopyCancelled": new Slick.Event(), - "onPasteCells": new Slick.Event() - }); + function clearCopySelection() { + _grid.removeCellCssStyles("copy-manager"); } + + $.extend(this, { + "init":init, + "destroy":destroy, + "clearCopySelection":clearCopySelection, + + "onCopyCells":new Slick.Event(), + "onCopyCancelled":new Slick.Event(), + "onPasteCells":new Slick.Event() + }); + } })(jQuery);
\ No newline at end of file diff --git a/plugins/slick.cellrangedecorator.js b/plugins/slick.cellrangedecorator.js index 38df0b6..342f705 100644 --- a/plugins/slick.cellrangedecorator.js +++ b/plugins/slick.cellrangedecorator.js @@ -1,65 +1,64 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "CellRangeDecorator": CellRangeDecorator - } - }); - - /*** - * Displays an overlay on top of a given cell range. - * - * TODO: - * Currently, it blocks mouse events to DOM nodes behind it. - * Use FF and WebKit-specific "pointer-events" CSS style, or some kind of event forwarding. - * Could also construct the borders separately using 4 individual DIVs. - * - * @param {Grid} grid - * @param {Object} options - */ - function CellRangeDecorator(grid, options) { - var _elem; - var _defaults = { - selectionCss: { - "zIndex": "9999", - "border": "2px dashed red" - } - }; - - options = $.extend(true, {}, _defaults, options); +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "CellRangeDecorator":CellRangeDecorator + } + }); + /*** + * Displays an overlay on top of a given cell range. + * + * TODO: + * Currently, it blocks mouse events to DOM nodes behind it. + * Use FF and WebKit-specific "pointer-events" CSS style, or some kind of event forwarding. + * Could also construct the borders separately using 4 individual DIVs. + * + * @param {Grid} grid + * @param {Object} options + */ + function CellRangeDecorator(grid, options) { + var _elem; + var _defaults = { + selectionCss:{ + "zIndex":"9999", + "border":"2px dashed red" + } + }; - function show(range) { - if (!_elem) { - _elem = $("<div></div>", {css: options.selectionCss}) - .css("position", "absolute") - .appendTo(grid.getCanvasNode()); + options = $.extend(true, {}, _defaults, options); - } - var from = grid.getCellNodeBox(range.fromRow,range.fromCell); - var to = grid.getCellNodeBox(range.toRow,range.toCell); + function show(range) { + if (!_elem) { + _elem = $("<div></div>", {css:options.selectionCss}) + .css("position", "absolute") + .appendTo(grid.getCanvasNode()); + } - _elem.css({ - top: from.top - 1, - left: from.left - 1, - height: to.bottom - from.top - 2, - width: to.right - from.left - 2 - }); + var from = grid.getCellNodeBox(range.fromRow, range.fromCell); + var to = grid.getCellNodeBox(range.toRow, range.toCell); - return _elem; - } + _elem.css({ + top:from.top - 1, + left:from.left - 1, + height:to.bottom - from.top - 2, + width:to.right - from.left - 2 + }); - function hide() { - if (_elem) { - _elem.remove(); - _elem = null; - } - } + return _elem; + } - $.extend(this, { - "show": show, - "hide": hide - }); + function hide() { + if (_elem) { + _elem.remove(); + _elem = null; + } } + + $.extend(this, { + "show":show, + "hide":hide + }); + } })(jQuery);
\ No newline at end of file diff --git a/plugins/slick.cellrangeselector.js b/plugins/slick.cellrangeselector.js index 3928b2f..118239e 100644 --- a/plugins/slick.cellrangeselector.js +++ b/plugins/slick.cellrangeselector.js @@ -1,112 +1,112 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "CellRangeSelector": CellRangeSelector - } - }); +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "CellRangeSelector":CellRangeSelector + } + }); + + + function CellRangeSelector(options) { + var _grid; + var _canvas; + var _dragging; + var _decorator; + var _self = this; + var _defaults = { + selectionCss:{ + "border":"2px dashed blue" + } + }; + + + function init(grid) { + options = $.extend(true, {}, _defaults, options); + _decorator = new Slick.CellRangeDecorator(grid, options); + _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 CellRangeSelector(options) { - var _grid; - var _canvas; - var _dragging; - var _decorator; - var _self = this; - var _defaults = { - selectionCss: { - "border": "2px dashed blue" - } - }; - - - function init(grid) { - options = $.extend(true, {}, _defaults, options); - _decorator = new Slick.CellRangeDecorator(grid, options); - _grid = grid; - _canvas = _grid.getCanvasNode(); - _grid.onDragInit.subscribe(handleDragInit); - _grid.onDragStart.subscribe(handleDragStart); - _grid.onDrag.subscribe(handleDrag); - _grid.onDragEnd.subscribe(handleDragEnd); - } + function handleDragInit(e, dd) { + // prevent the grid from cancelling drag'n'drop by default + e.stopImmediatePropagation(); + } - function destroy() { - _grid.onDragInit.unsubscribe(handleDragInit); - _grid.onDragStart.unsubscribe(handleDragStart); - _grid.onDrag.unsubscribe(handleDrag); - _grid.onDragEnd.unsubscribe(handleDragEnd); + function handleDragStart(e, dd) { + var cell = _grid.getCellFromEvent(e); + if (_self.onBeforeCellRangeSelected.notify(cell) !== false) { + if (_grid.canCellBeSelected(cell.row, cell.cell)) { + _dragging = true; + e.stopImmediatePropagation(); } + } + if (!_dragging) { + return; + } - function handleDragInit(e, dd) { - // prevent the grid from cancelling drag'n'drop by default - e.stopImmediatePropagation(); - } + var start = _grid.getCellFromPoint( + dd.startX - $(_canvas).offset().left, + dd.startY - $(_canvas).offset().top); - function handleDragStart(e, dd) { - var cell = _grid.getCellFromEvent(e); - if (_self.onBeforeCellRangeSelected.notify(cell) !== false) { - if (_grid.canCellBeSelected(cell.row,cell.cell)) { - _dragging = true; - e.stopImmediatePropagation(); - } - } - if (!_dragging) { - return; - } - - var start = _grid.getCellFromPoint( - dd.startX - $(_canvas).offset().left, - dd.startY - $(_canvas).offset().top); - - dd.range = {start:start,end:{}}; - - return _decorator.show(new Slick.Range(start.row,start.cell)); - } + dd.range = {start:start, end:{}}; - function handleDrag(e, dd) { - if (!_dragging) { - return; - } - e.stopImmediatePropagation(); - - var end = _grid.getCellFromPoint( - e.pageX - $(_canvas).offset().left, - e.pageY - $(_canvas).offset().top); + return _decorator.show(new Slick.Range(start.row, start.cell)); + } - if (!_grid.canCellBeSelected(end.row,end.cell)) { - return; - } + function handleDrag(e, dd) { + if (!_dragging) { + return; + } + e.stopImmediatePropagation(); - dd.range.end = end; - _decorator.show(new Slick.Range(dd.range.start.row,dd.range.start.cell,end.row,end.cell)); - } + var end = _grid.getCellFromPoint( + e.pageX - $(_canvas).offset().left, + e.pageY - $(_canvas).offset().top); - function handleDragEnd(e, dd) { - if (!_dragging) { - return; - } - - _dragging = false; - e.stopImmediatePropagation(); - - _decorator.hide(); - _self.onCellRangeSelected.notify({ - range: new Slick.Range( - dd.range.start.row, - dd.range.start.cell, - dd.range.end.row, - dd.range.end.cell - ) - }); - } + if (!_grid.canCellBeSelected(end.row, end.cell)) { + return; + } - $.extend(this, { - "init": init, - "destroy": destroy, + dd.range.end = end; + _decorator.show(new Slick.Range(dd.range.start.row, dd.range.start.cell, end.row, end.cell)); + } - "onBeforeCellRangeSelected": new Slick.Event(), - "onCellRangeSelected": new Slick.Event() - }); + function handleDragEnd(e, dd) { + if (!_dragging) { + return; + } + + _dragging = false; + e.stopImmediatePropagation(); + + _decorator.hide(); + _self.onCellRangeSelected.notify({ + range:new Slick.Range( + dd.range.start.row, + dd.range.start.cell, + dd.range.end.row, + dd.range.end.cell + ) + }); } + + $.extend(this, { + "init":init, + "destroy":destroy, + + "onBeforeCellRangeSelected":new Slick.Event(), + "onCellRangeSelected":new Slick.Event() + }); + } })(jQuery);
\ No newline at end of file diff --git a/plugins/slick.cellselectionmodel.js b/plugins/slick.cellselectionmodel.js index e1dd565..c517117 100644 --- a/plugins/slick.cellselectionmodel.js +++ b/plugins/slick.cellselectionmodel.js @@ -1,92 +1,92 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "CellSelectionModel": CellSelectionModel - } +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "CellSelectionModel":CellSelectionModel + } + }); + + + function CellSelectionModel(options) { + var _grid; + var _canvas; + var _ranges = []; + var _self = this; + var _selector = new Slick.CellRangeSelector({ + "selectionCss":{ + "border":"2px solid black" + } }); + var _options; + var _defaults = { + selectActiveCell:true + }; + + + function init(grid) { + _options = $.extend(true, {}, _defaults, options); + _grid = grid; + _canvas = _grid.getCanvasNode(); + _grid.onActiveCellChanged.subscribe(handleActiveCellChange); + grid.registerPlugin(_selector); + _selector.onCellRangeSelected.subscribe(handleCellRangeSelected); + _selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected); + } + function destroy() { + _grid.onActiveCellChanged.unsubscribe(handleActiveCellChange); + _selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected); + _selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected); + _grid.unregisterPlugin(_selector); + } - function CellSelectionModel(options) { - var _grid; - var _canvas; - var _ranges = []; - var _self = this; - var _selector = new Slick.CellRangeSelector({ - "selectionCss": { - "border": "2px solid black" - } - }); - var _options; - var _defaults = { - selectActiveCell: true - }; - - - function init(grid) { - _options = $.extend(true, {}, _defaults, options); - _grid = grid; - _canvas = _grid.getCanvasNode(); - _grid.onActiveCellChanged.subscribe(handleActiveCellChange); - grid.registerPlugin(_selector); - _selector.onCellRangeSelected.subscribe(handleCellRangeSelected); - _selector.onBeforeCellRangeSelected.subscribe(handleBeforeCellRangeSelected); - } + function removeInvalidRanges(ranges) { + var result = []; - function destroy() { - _grid.onActiveCellChanged.unsubscribe(handleActiveCellChange); - _selector.onCellRangeSelected.unsubscribe(handleCellRangeSelected); - _selector.onBeforeCellRangeSelected.unsubscribe(handleBeforeCellRangeSelected); - _grid.unregisterPlugin(_selector); + for (var i = 0; i < ranges.length; i++) { + var r = ranges[i]; + if (_grid.canCellBeSelected(r.fromRow, r.fromCell) && _grid.canCellBeSelected(r.toRow, r.toCell)) { + result.push(r); } + } - function removeInvalidRanges(ranges) { - var result = []; - - for (var i = 0; i < ranges.length; i++) { - var r = ranges[i]; - if (_grid.canCellBeSelected(r.fromRow,r.fromCell) && _grid.canCellBeSelected(r.toRow,r.toCell)) { - result.push(r); - } - } - - return result; - } + return result; + } - function setSelectedRanges(ranges) { - _ranges = removeInvalidRanges(ranges); - _self.onSelectedRangesChanged.notify(_ranges); - } + function setSelectedRanges(ranges) { + _ranges = removeInvalidRanges(ranges); + _self.onSelectedRangesChanged.notify(_ranges); + } - function getSelectedRanges() { - return _ranges; - } + function getSelectedRanges() { + return _ranges; + } - function handleBeforeCellRangeSelected(e, args) { - if (_grid.getEditorLock().isActive()) { - e.stopPropagation(); - return false; - } - } + function handleBeforeCellRangeSelected(e, args) { + if (_grid.getEditorLock().isActive()) { + e.stopPropagation(); + return false; + } + } - function handleCellRangeSelected(e, args) { - setSelectedRanges([args.range]); - } + function handleCellRangeSelected(e, args) { + setSelectedRanges([args.range]); + } - function handleActiveCellChange(e, args) { - if (_options.selectActiveCell) { - setSelectedRanges([new Slick.Range(args.row,args.cell)]); - } - } + function handleActiveCellChange(e, args) { + if (_options.selectActiveCell) { + setSelectedRanges([new Slick.Range(args.row, args.cell)]); + } + } - $.extend(this, { - "getSelectedRanges": getSelectedRanges, - "setSelectedRanges": setSelectedRanges, + $.extend(this, { + "getSelectedRanges":getSelectedRanges, + "setSelectedRanges":setSelectedRanges, - "init": init, - "destroy": destroy, + "init":init, + "destroy":destroy, - "onSelectedRangesChanged": new Slick.Event() - }); - } + "onSelectedRangesChanged":new Slick.Event() + }); + } })(jQuery);
\ No newline at end of file diff --git a/plugins/slick.checkboxselectcolumn.js b/plugins/slick.checkboxselectcolumn.js index 3a95255..c7078b9 100644 --- a/plugins/slick.checkboxselectcolumn.js +++ b/plugins/slick.checkboxselectcolumn.js @@ -1,136 +1,135 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "CheckboxSelectColumn": CheckboxSelectColumn - } - }); - +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "CheckboxSelectColumn":CheckboxSelectColumn + } + }); - function CheckboxSelectColumn(options) { - var _grid; - var _self = this; - var _selectedRowsLookup = {}; - var _defaults = { - columnId: "_checkbox_selector", - cssClass: null, - toolTip: "Select/Deselect All", - width: 30 - }; - var _options = $.extend(true,{},_defaults,options); + function CheckboxSelectColumn(options) { + var _grid; + var _self = this; + var _selectedRowsLookup = {}; + var _defaults = { + columnId:"_checkbox_selector", + cssClass:null, + toolTip:"Select/Deselect All", + width:30 + }; - function init(grid) { - _grid = grid; - _grid.onSelectedRowsChanged.subscribe(handleSelectedRowsChanged); - _grid.onClick.subscribe(handleClick); - _grid.onHeaderClick.subscribe(handleHeaderClick); - } + var _options = $.extend(true, {}, _defaults, options); - function destroy() { - _grid.onSelectedRowsChanged.unsubscribe(handleSelectedRowsChanged); - _grid.onClick.unsubscribe(handleClick); - _grid.onHeaderClick.unsubscribe(handleHeaderClick); - } + function init(grid) { + _grid = grid; + _grid.onSelectedRowsChanged.subscribe(handleSelectedRowsChanged); + _grid.onClick.subscribe(handleClick); + _grid.onHeaderClick.subscribe(handleHeaderClick); + } - function handleSelectedRowsChanged(e, args) { - var selectedRows = _grid.getSelectedRows(); - var lookup = {}, row, i; - for (i = 0; i < selectedRows.length; i++) { - row = selectedRows[i]; - lookup[row] = true; - if (lookup[row] !== _selectedRowsLookup[row]) { - _grid.invalidateRow(row); - delete _selectedRowsLookup[row]; - } - } - for (i in _selectedRowsLookup) { - _grid.invalidateRow(i); - } - _selectedRowsLookup = lookup; - _grid.render(); + function destroy() { + _grid.onSelectedRowsChanged.unsubscribe(handleSelectedRowsChanged); + _grid.onClick.unsubscribe(handleClick); + _grid.onHeaderClick.unsubscribe(handleHeaderClick); + } - if (selectedRows.length == _grid.getDataLength()) { - _grid.updateColumnHeader(_options.columnId, "<input type='checkbox' checked='checked'>", _options.toolTip); - } - else { - _grid.updateColumnHeader(_options.columnId, "<input type='checkbox'>", _options.toolTip); - } + function handleSelectedRowsChanged(e, args) { + var selectedRows = _grid.getSelectedRows(); + var lookup = {}, row, i; + for (i = 0; i < selectedRows.length; i++) { + row = selectedRows[i]; + lookup[row] = true; + if (lookup[row] !== _selectedRowsLookup[row]) { + _grid.invalidateRow(row); + delete _selectedRowsLookup[row]; } + } + for (i in _selectedRowsLookup) { + _grid.invalidateRow(i); + } + _selectedRowsLookup = lookup; + _grid.render(); - function handleClick(e, args) { - // clicking on a row select checkbox - if (_grid.getColumns()[args.cell].id === _options.columnId && $(e.target).is(":checkbox")) { - // if editing, try to commit - if (_grid.getEditorLock().isActive() && !_grid.getEditorLock().commitCurrentEdit()) { - e.preventDefault(); - e.stopImmediatePropagation(); - return; - } + if (selectedRows.length == _grid.getDataLength()) { + _grid.updateColumnHeader(_options.columnId, "<input type='checkbox' checked='checked'>", _options.toolTip); + } else { + _grid.updateColumnHeader(_options.columnId, "<input type='checkbox'>", _options.toolTip); + } + } - if (_selectedRowsLookup[args.row]) { - _grid.setSelectedRows($.grep(_grid.getSelectedRows(),function(n) { return n != args.row })); - } - else { - _grid.setSelectedRows(_grid.getSelectedRows().concat(args.row)); - } - e.stopPropagation(); - e.stopImmediatePropagation(); - } + function handleClick(e, args) { + // clicking on a row select checkbox + if (_grid.getColumns()[args.cell].id === _options.columnId && $(e.target).is(":checkbox")) { + // if editing, try to commit + if (_grid.getEditorLock().isActive() && !_grid.getEditorLock().commitCurrentEdit()) { + e.preventDefault(); + e.stopImmediatePropagation(); + return; } - function handleHeaderClick(e, args) { - if (args.column.id == _options.columnId && $(e.target).is(":checkbox")) { - // if editing, try to commit - if (_grid.getEditorLock().isActive() && !_grid.getEditorLock().commitCurrentEdit()) { - e.preventDefault(); - e.stopImmediatePropagation(); - return; - } - - if ($(e.target).is(":checked")) { - var rows = []; - for (var i = 0; i < _grid.getDataLength(); i++) { - rows.push(i); - } - _grid.setSelectedRows(rows); - } - else { - _grid.setSelectedRows([]); - } - e.stopPropagation(); - e.stopImmediatePropagation(); - } + if (_selectedRowsLookup[args.row]) { + _grid.setSelectedRows($.grep(_grid.getSelectedRows(), function (n) { + return n != args.row + })); + } else { + _grid.setSelectedRows(_grid.getSelectedRows().concat(args.row)); } + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } - function getColumnDefinition() { - return { - id: _options.columnId, - name: "<input type='checkbox'>", - toolTip: _options.toolTip, - field: "sel", - width: _options.width, - resizable: false, - sortable: false, - cssClass: _options.cssClass, - formatter: checkboxSelectionFormatter - }; + function handleHeaderClick(e, args) { + if (args.column.id == _options.columnId && $(e.target).is(":checkbox")) { + // if editing, try to commit + if (_grid.getEditorLock().isActive() && !_grid.getEditorLock().commitCurrentEdit()) { + e.preventDefault(); + e.stopImmediatePropagation(); + return; } - function checkboxSelectionFormatter(row, cell, value, columnDef, dataContext) { - if (dataContext) { - return _selectedRowsLookup[row] - ? "<input type='checkbox' checked='checked'>" - : "<input type='checkbox'>"; - } - return null; + if ($(e.target).is(":checked")) { + var rows = []; + for (var i = 0; i < _grid.getDataLength(); i++) { + rows.push(i); + } + _grid.setSelectedRows(rows); + } else { + _grid.setSelectedRows([]); } + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } - $.extend(this, { - "init": init, - "destroy": destroy, + function getColumnDefinition() { + return { + id:_options.columnId, + name:"<input type='checkbox'>", + toolTip:_options.toolTip, + field:"sel", + width:_options.width, + resizable:false, + sortable:false, + cssClass:_options.cssClass, + formatter:checkboxSelectionFormatter + }; + } - "getColumnDefinition": getColumnDefinition - }); + function checkboxSelectionFormatter(row, cell, value, columnDef, dataContext) { + if (dataContext) { + return _selectedRowsLookup[row] + ? "<input type='checkbox' checked='checked'>" + : "<input type='checkbox'>"; + } + return null; } + + $.extend(this, { + "init":init, + "destroy":destroy, + + "getColumnDefinition":getColumnDefinition + }); + } })(jQuery);
\ No newline at end of file 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 diff --git a/plugins/slick.rowselectionmodel.js b/plugins/slick.rowselectionmodel.js index a539939..e675c83 100644 --- a/plugins/slick.rowselectionmodel.js +++ b/plugins/slick.rowselectionmodel.js @@ -1,186 +1,187 @@ -(function($) { - // register namespace - $.extend(true, window, { - "Slick": { - "RowSelectionModel": RowSelectionModel - } - }); +(function ($) { + // register namespace + $.extend(true, window, { + "Slick":{ + "RowSelectionModel":RowSelectionModel + } + }); + + function RowSelectionModel(options) { + var _grid; + var _ranges = []; + var _self = this; + var _handler = new Slick.EventHandler(); + var _inHandler; + var _options; + var _defaults = { + selectActiveRow:true + }; + + function init(grid) { + _options = $.extend(true, {}, _defaults, options); + _grid = grid; + _handler.subscribe(_grid.onActiveCellChanged, + wrapHandler(handleActiveCellChange)); + _handler.subscribe(_grid.onKeyDown, + wrapHandler(handleKeyDown)); + _handler.subscribe(_grid.onClick, + wrapHandler(handleClick)); + } - function RowSelectionModel(options) { - var _grid; - var _ranges = []; - var _self = this; - var _handler = new Slick.EventHandler(); - var _inHandler; - var _options; - var _defaults = { - selectActiveRow: true - }; - - function init(grid) { - _options = $.extend(true, {}, _defaults, options); - _grid = grid; - _handler.subscribe(_grid.onActiveCellChanged, - wrapHandler(handleActiveCellChange)); - _handler.subscribe(_grid.onKeyDown, - wrapHandler(handleKeyDown)); - _handler.subscribe(_grid.onClick, - wrapHandler(handleClick)); - } + function destroy() { + _handler.unsubscribeAll(); + } - function destroy() { - _handler.unsubscribeAll(); + function wrapHandler(handler) { + return function () { + if (!_inHandler) { + _inHandler = true; + handler.apply(this, arguments); + _inHandler = false; } + }; + } - function wrapHandler(handler) { - return function() { - if (!_inHandler) { - _inHandler = true; - handler.apply(this, arguments); - _inHandler = false; - } - }; + function rangesToRows(ranges) { + var rows = []; + for (var i = 0; i < ranges.length; i++) { + for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) { + rows.push(j); } + } + return rows; + } - function rangesToRows(ranges) { - var rows = []; - for (var i = 0; i < ranges.length; i++) { - for (var j = ranges[i].fromRow; j <= ranges[i].toRow; j++) { - rows.push(j); - } - } - return rows; - } + function rowsToRanges(rows) { + var ranges = []; + var lastCell = _grid.getColumns().length - 1; + for (var i = 0; i < rows.length; i++) { + ranges.push(new Slick.Range(rows[i], 0, rows[i], lastCell)); + } + return ranges; + } - function rowsToRanges(rows) { - var ranges = []; - var lastCell = _grid.getColumns().length - 1; - for (var i = 0; i < rows.length; i++) { - ranges.push(new Slick.Range(rows[i], 0, rows[i], lastCell)); - } - return ranges; - } + function getRowsRange(from, to) { + var i, rows = []; + for (i = from; i <= to; i++) { + rows.push(i); + } + for (i = to; i < from; i++) { + rows.push(i); + } + return rows; + } - function getRowsRange(from,to) { - var i, rows = []; - for (i = from; i <= to; i++) { - rows.push(i); - } - for (i = to; i < from; i++) { - rows.push(i); - } - return rows; - } + function getSelectedRows() { + return rangesToRows(_ranges); + } - function getSelectedRows() { - return rangesToRows(_ranges); - } + function setSelectedRows(rows) { + setSelectedRanges(rowsToRanges(rows)); + } - function setSelectedRows(rows) { - setSelectedRanges(rowsToRanges(rows)); - } + function setSelectedRanges(ranges) { + _ranges = ranges; + _self.onSelectedRangesChanged.notify(_ranges); + } - function setSelectedRanges(ranges) { - _ranges = ranges; - _self.onSelectedRangesChanged.notify(_ranges); - } + function getSelectedRanges() { + return _ranges; + } - function getSelectedRanges() { - return _ranges; - } + function handleActiveCellChange(e, data) { + if (_options.selectActiveRow) { + setSelectedRanges([new Slick.Range(data.row, 0, data.row, _grid.getColumns().length - 1)]); + } + } - function handleActiveCellChange(e, data) { - if (_options.selectActiveRow) { - setSelectedRanges([new Slick.Range(data.row, 0, data.row, _grid.getColumns().length - 1)]); - } + function handleKeyDown(e) { + var activeRow = _grid.getActiveCell(); + if (activeRow && e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey && (e.which == 38 || e.which == 40)) { + var selectedRows = getSelectedRows(); + selectedRows.sort(function (x, y) { + return x - y + }); + + if (!selectedRows.length) { + selectedRows = [activeRow.row]; } - function handleKeyDown(e) { - var activeRow = _grid.getActiveCell(); - if (activeRow && e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey && (e.which == 38 || e.which == 40)) { - var selectedRows = getSelectedRows(); - selectedRows.sort(function(x,y) { return x-y }); - - if (!selectedRows.length) { - selectedRows = [activeRow.row]; - } - - var top = selectedRows[0]; - var bottom = selectedRows[selectedRows.length - 1]; - var active; - - if (e.which == 40) { - active = activeRow.row < bottom || top == bottom ? ++bottom : ++top; - } - else { - active = activeRow.row < bottom ? --bottom : --top; - } - - if (active >= 0 && active < _grid.getDataLength()) { - _grid.scrollRowIntoView(active); - _ranges = rowsToRanges(getRowsRange(top,bottom)); - setSelectedRanges(_ranges); - } - - e.preventDefault(); - e.stopPropagation(); - } + var top = selectedRows[0]; + var bottom = selectedRows[selectedRows.length - 1]; + var active; + + if (e.which == 40) { + active = activeRow.row < bottom || top == bottom ? ++bottom : ++top; + } else { + active = activeRow.row < bottom ? --bottom : --top; } - function handleClick(e) { - var cell = _grid.getCellFromEvent(e); - if (!cell || !_grid.canCellBeActive(cell.row, cell.cell)) { - return false; - } + if (active >= 0 && active < _grid.getDataLength()) { + _grid.scrollRowIntoView(active); + _ranges = rowsToRanges(getRowsRange(top, bottom)); + setSelectedRanges(_ranges); + } - var selection = rangesToRows(_ranges); - var idx = $.inArray(cell.row, selection); + e.preventDefault(); + e.stopPropagation(); + } + } - if (!e.ctrlKey && !e.shiftKey && !e.metaKey) { - return false; - } - else if (_grid.getOptions().multiSelect) { - if (idx === -1 && (e.ctrlKey || e.metaKey)) { - selection.push(cell.row); - _grid.setActiveCell(cell.row, cell.cell); - } - else if (idx !== -1 && (e.ctrlKey || e.metaKey)) { - selection = $.grep(selection, function(o, i) { return (o !== cell.row); }); - _grid.setActiveCell(cell.row, cell.cell); - } - else if (selection.length && e.shiftKey) { - var last = selection.pop(); - var from = Math.min(cell.row, last); - var to = Math.max(cell.row, last); - selection = []; - for (var i = from; i <= to; i++) { - if (i !== last) { - selection.push(i); - } - } - selection.push(last); - _grid.setActiveCell(cell.row, cell.cell); - } + function handleClick(e) { + var cell = _grid.getCellFromEvent(e); + if (!cell || !_grid.canCellBeActive(cell.row, cell.cell)) { + return false; + } + + var selection = rangesToRows(_ranges); + var idx = $.inArray(cell.row, selection); + + if (!e.ctrlKey && !e.shiftKey && !e.metaKey) { + return false; + } + else if (_grid.getOptions().multiSelect) { + if (idx === -1 && (e.ctrlKey || e.metaKey)) { + selection.push(cell.row); + _grid.setActiveCell(cell.row, cell.cell); + } else if (idx !== -1 && (e.ctrlKey || e.metaKey)) { + selection = $.grep(selection, function (o, i) { + return (o !== cell.row); + }); + _grid.setActiveCell(cell.row, cell.cell); + } else if (selection.length && e.shiftKey) { + var last = selection.pop(); + var from = Math.min(cell.row, last); + var to = Math.max(cell.row, last); + selection = []; + for (var i = from; i <= to; i++) { + if (i !== last) { + selection.push(i); } + } + selection.push(last); + _grid.setActiveCell(cell.row, cell.cell); + } + } - _ranges = rowsToRanges(selection); - setSelectedRanges(_ranges); - e.stopImmediatePropagation(); + _ranges = rowsToRanges(selection); + setSelectedRanges(_ranges); + e.stopImmediatePropagation(); - return true; - } + return true; + } - $.extend(this, { - "getSelectedRows": getSelectedRows, - "setSelectedRows": setSelectedRows, + $.extend(this, { + "getSelectedRows":getSelectedRows, + "setSelectedRows":setSelectedRows, - "getSelectedRanges": getSelectedRanges, - "setSelectedRanges": setSelectedRanges, + "getSelectedRanges":getSelectedRanges, + "setSelectedRanges":setSelectedRanges, - "init": init, - "destroy": destroy, + "init":init, + "destroy":destroy, - "onSelectedRangesChanged": new Slick.Event() - }); - } + "onSelectedRangesChanged":new Slick.Event() + }); + } })(jQuery);
\ No newline at end of file |