primo commit
This commit is contained in:
		
							
								
								
									
										153
									
								
								components/com_tabulizer/assets/js/slickgrid/plugins/slick.checkboxselectcolumn.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								components/com_tabulizer/assets/js/slickgrid/plugins/slick.checkboxselectcolumn.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,153 @@ | ||||
| (function ($) { | ||||
|   // register namespace | ||||
|   $.extend(true, window, { | ||||
|     "Slick": { | ||||
|       "CheckboxSelectColumn": CheckboxSelectColumn | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|  | ||||
|   function CheckboxSelectColumn(options) { | ||||
|     var _grid; | ||||
|     var _self = this; | ||||
|     var _handler = new Slick.EventHandler(); | ||||
|     var _selectedRowsLookup = {}; | ||||
|     var _defaults = { | ||||
|       columnId: "_checkbox_selector", | ||||
|       cssClass: null, | ||||
|       toolTip: "Select/Deselect All", | ||||
|       width: 30 | ||||
|     }; | ||||
|  | ||||
|     var _options = $.extend(true, {}, _defaults, options); | ||||
|  | ||||
|     function init(grid) { | ||||
|       _grid = grid; | ||||
|       _handler | ||||
|         .subscribe(_grid.onSelectedRowsChanged, handleSelectedRowsChanged) | ||||
|         .subscribe(_grid.onClick, handleClick) | ||||
|         .subscribe(_grid.onHeaderClick, handleHeaderClick) | ||||
|         .subscribe(_grid.onKeyDown, handleKeyDown); | ||||
|     } | ||||
|  | ||||
|     function destroy() { | ||||
|       _handler.unsubscribeAll(); | ||||
|     } | ||||
|  | ||||
|     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(); | ||||
|  | ||||
|       if (selectedRows.length && 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 handleKeyDown(e, args) { | ||||
|       if (e.which == 32) { | ||||
|         if (_grid.getColumns()[args.cell].id === _options.columnId) { | ||||
|           // if editing, try to commit | ||||
|           if (!_grid.getEditorLock().isActive() || _grid.getEditorLock().commitCurrentEdit()) { | ||||
|             toggleRowSelection(args.row); | ||||
|           } | ||||
|           e.preventDefault(); | ||||
|           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; | ||||
|         } | ||||
|  | ||||
|         toggleRowSelection(args.row); | ||||
|         e.stopPropagation(); | ||||
|         e.stopImmediatePropagation(); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     function toggleRowSelection(row) { | ||||
|       if (_selectedRowsLookup[row]) { | ||||
|         _grid.setSelectedRows($.grep(_grid.getSelectedRows(), function (n) { | ||||
|           return n != row | ||||
|         })); | ||||
|       } else { | ||||
|         _grid.setSelectedRows(_grid.getSelectedRows().concat(row)); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     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(); | ||||
|       } | ||||
|     } | ||||
|  | ||||
|     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 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); | ||||
		Reference in New Issue
	
	Block a user