|
127 | 127 | * @name rowSelectionChanged
|
128 | 128 | * @eventOf ui.grid.selection.api:PublicApi
|
129 | 129 | * @description is raised after the row.isSelected state is changed
|
| 130 | + * @param {object} scope the scope associated with the grid |
130 | 131 | * @param {GridRow} row the row that was selected/deselected
|
131 |
| - * @param {Event} event object if raised from an event |
| 132 | + * @param {Event} evt object if raised from an event |
132 | 133 | */
|
133 | 134 | rowSelectionChanged: function (scope, row, evt) {
|
134 | 135 | },
|
|
140 | 141 | * in bulk, if the `enableSelectionBatchEvent` option is set to true
|
141 | 142 | * (which it is by default). This allows more efficient processing
|
142 | 143 | * of bulk events.
|
| 144 | + * @param {object} scope the scope associated with the grid |
143 | 145 | * @param {array} rows the rows that were selected/deselected
|
144 |
| - * @param {Event} event object if raised from an event |
| 146 | + * @param {Event} evt object if raised from an event |
145 | 147 | */
|
146 | 148 | rowSelectionChangedBatch: function (scope, rows, evt) {
|
147 | 149 | }
|
|
155 | 157 | * @methodOf ui.grid.selection.api:PublicApi
|
156 | 158 | * @description Toggles data row as selected or unselected
|
157 | 159 | * @param {object} rowEntity gridOptions.data[] array instance
|
158 |
| - * @param {Event} event object if raised from an event |
| 160 | + * @param {Event} evt object if raised from an event |
159 | 161 | */
|
160 | 162 | toggleRowSelection: function (rowEntity, evt) {
|
161 | 163 | var row = grid.getRow(rowEntity);
|
|
169 | 171 | * @methodOf ui.grid.selection.api:PublicApi
|
170 | 172 | * @description Select the data row
|
171 | 173 | * @param {object} rowEntity gridOptions.data[] array instance
|
172 |
| - * @param {Event} event object if raised from an event |
| 174 | + * @param {Event} evt object if raised from an event |
173 | 175 | */
|
174 | 176 | selectRow: function (rowEntity, evt) {
|
175 | 177 | var row = grid.getRow(rowEntity);
|
|
185 | 187 | * specify row 0 you'll get the first visible row selected). In this context
|
186 | 188 | * visible means of those rows that are theoretically visible (i.e. not filtered),
|
187 | 189 | * rather than rows currently rendered on the screen.
|
188 |
| - * @param {number} index index within the rowsVisible array |
189 |
| - * @param {Event} event object if raised from an event |
| 190 | + * @param {number} rowNum index within the rowsVisible array |
| 191 | + * @param {Event} evt object if raised from an event |
190 | 192 | */
|
191 | 193 | selectRowByVisibleIndex: function (rowNum, evt) {
|
192 | 194 | var row = grid.renderContainers.body.visibleRowCache[rowNum];
|
|
200 | 202 | * @methodOf ui.grid.selection.api:PublicApi
|
201 | 203 | * @description UnSelect the data row
|
202 | 204 | * @param {object} rowEntity gridOptions.data[] array instance
|
203 |
| - * @param {Event} event object if raised from an event |
| 205 | + * @param {Event} evt object if raised from an event |
204 | 206 | */
|
205 | 207 | unSelectRow: function (rowEntity, evt) {
|
206 | 208 | var row = grid.getRow(rowEntity);
|
|
216 | 218 | * specify row 0 you'll get the first visible row unselected). In this context
|
217 | 219 | * visible means of those rows that are theoretically visible (i.e. not filtered),
|
218 | 220 | * rather than rows currently rendered on the screen.
|
219 |
| - * @param {number} index index within the rowsVisible array |
220 |
| - * @param {Event} event object if raised from an event |
| 221 | + * @param {number} rowNum index within the rowsVisible array |
| 222 | + * @param {Event} evt object if raised from an event |
221 | 223 | */
|
222 | 224 | unSelectRowByVisibleIndex: function (rowNum, evt) {
|
223 | 225 | var row = grid.renderContainers.body.visibleRowCache[rowNum];
|
|
230 | 232 | * @name selectAllRows
|
231 | 233 | * @methodOf ui.grid.selection.api:PublicApi
|
232 | 234 | * @description Selects all rows. Does nothing if multiSelect = false
|
233 |
| - * @param {Event} event object if raised from an event |
| 235 | + * @param {Event} evt object if raised from an event |
234 | 236 | */
|
235 | 237 | selectAllRows: function (evt) {
|
236 | 238 | if (grid.options.multiSelect === false) {
|
|
252 | 254 | * @name selectAllVisibleRows
|
253 | 255 | * @methodOf ui.grid.selection.api:PublicApi
|
254 | 256 | * @description Selects all visible rows. Does nothing if multiSelect = false
|
255 |
| - * @param {Event} event object if raised from an event |
| 257 | + * @param {Event} evt object if raised from an event |
256 | 258 | */
|
257 |
| - selectAllVisibleRows: function (event) { |
| 259 | + selectAllVisibleRows: function (evt) { |
258 | 260 | if (grid.options.multiSelect !== false) {
|
259 | 261 | var changedRows = [];
|
260 |
| - var rowCache = []; |
261 |
| - if (grid.treeBase && grid.treeBase.tree) { |
262 |
| - rowCache = getAllTreeRows(grid.treeBase.tree); |
263 |
| - } else { |
264 |
| - rowCache = grid.rows; |
265 |
| - } |
266 |
| - |
267 |
| - for (var i = 0; i<rowCache.length; i++) { |
268 |
| - var row = rowCache[i]; |
| 262 | + grid.rows.forEach(function(row) { |
269 | 263 | if (row.visible) {
|
270 | 264 | if (!row.isSelected && row.enableSelection !== false) {
|
271 | 265 | row.setSelected(true);
|
272 |
| - service.decideRaiseSelectionEvent(grid, row, changedRows, event); |
273 |
| - } |
274 |
| - } else { |
275 |
| - if (row.isSelected) { |
276 |
| - row.setSelected(false); |
277 |
| - service.decideRaiseSelectionEvent(grid, row, changedRows, event); |
| 266 | + service.decideRaiseSelectionEvent(grid, row, changedRows, evt); |
278 | 267 | }
|
| 268 | + } else if (row.isSelected) { |
| 269 | + row.setSelected(false); |
| 270 | + service.decideRaiseSelectionEvent(grid, row, changedRows, evt); |
279 | 271 | }
|
280 |
| - } |
281 |
| - service.decideRaiseSelectionBatchEvent(grid, changedRows, event); |
| 272 | + }); |
| 273 | + service.decideRaiseSelectionBatchEvent(grid, changedRows, evt); |
282 | 274 | grid.selection.selectAll = true;
|
283 | 275 | }
|
284 | 276 | },
|
|
287 | 279 | * @name clearSelectedRows
|
288 | 280 | * @methodOf ui.grid.selection.api:PublicApi
|
289 | 281 | * @description Unselects all rows
|
290 |
| - * @param {Event} event object if raised from an event |
| 282 | + * @param {Event} evt object if raised from an event |
291 | 283 | */
|
292 | 284 | clearSelectedRows: function (evt) {
|
293 | 285 | service.clearSelectedRows(grid, evt);
|
|
518 | 510 | grid.selection.selectAll = grid.rows.length === selectedRows.length;
|
519 | 511 |
|
520 | 512 | grid.api.selection.raise.rowSelectionChanged(row, evt);
|
521 |
| - |
522 |
| - toggleParentHeaders(grid, row, evt, multiSelect, noUnselect); |
523 | 513 | }
|
524 | 514 | },
|
525 | 515 | /**
|
|
567 | 557 | * @param {Grid} grid grid object
|
568 | 558 | */
|
569 | 559 | getSelectedRows: function (grid) {
|
570 |
| - var rows; |
571 |
| - if (grid.treeBase && grid.treeBase.tree) { |
572 |
| - rows = getAllTreeRows(grid.treeBase.tree); |
573 |
| - } else { |
574 |
| - rows = grid.rows; |
575 |
| - } |
576 |
| - |
577 |
| - var selectedRows = []; |
578 |
| - for (var i = 0; i<rows.length; i++) { |
579 |
| - if (rows[i].isSelected) { |
580 |
| - selectedRows.push(rows[i]); |
581 |
| - } |
582 |
| - } |
583 |
| - return selectedRows; |
| 560 | + return grid.rows.filter(function (row) { |
| 561 | + return row.isSelected; |
| 562 | + }); |
584 | 563 | },
|
585 | 564 |
|
586 | 565 | /**
|
|
589 | 568 | * @methodOf ui.grid.selection.service:uiGridSelectionService
|
590 | 569 | * @description Clears all selected rows
|
591 | 570 | * @param {Grid} grid grid object
|
592 |
| - * @param {Event} event object if raised from an event |
| 571 | + * @param {Event} evt object if raised from an event |
593 | 572 | */
|
594 | 573 | clearSelectedRows: function (grid, evt) {
|
595 | 574 | var changedRows = [];
|
|
612 | 591 | * @param {Grid} grid grid object
|
613 | 592 | * @param {GridRow} row row that has changed
|
614 | 593 | * @param {array} changedRows an array to which we can append the changed
|
615 |
| - * @param {Event} event object if raised from an event |
| 594 | + * @param {Event} evt object if raised from an event |
616 | 595 | * row if we're doing batch events
|
617 | 596 | */
|
618 | 597 | decideRaiseSelectionEvent: function (grid, row, changedRows, evt) {
|
|
631 | 610 | * raises it if we do.
|
632 | 611 | * @param {Grid} grid grid object
|
633 | 612 | * @param {array} changedRows an array of changed rows, only populated
|
634 |
| - * @param {Event} event object if raised from an event |
| 613 | + * @param {Event} evt object if raised from an event |
635 | 614 | * if we're doing batch events
|
636 | 615 | */
|
637 | 616 | decideRaiseSelectionBatchEvent: function (grid, changedRows, evt) {
|
|
643 | 622 |
|
644 | 623 | return service;
|
645 | 624 |
|
646 |
| - function toggleParentHeaders(grid, row, event, multiSelect, noUnselect){ |
647 |
| - if (row.treeNode &&row.treeNode.parentRow) { |
648 |
| - var parentRow = row.treeNode.parentRow; |
649 |
| - var siblingSelectedStatus = []; |
650 |
| - for (var i = 0; i < parentRow.treeNode.children.length; i++) { |
651 |
| - siblingSelectedStatus.push(parentRow.treeNode.children[i].row.isSelected); |
652 |
| - } |
653 |
| - var allSiblingsSelected = siblingSelectedStatus.indexOf(false) === -1; |
654 |
| - |
655 |
| - if (parentRow.isSelected !== allSiblingsSelected) { |
656 |
| - service.toggleRowSelection(grid, parentRow, event, multiSelect, noUnselect); |
657 |
| - } |
658 |
| - } |
659 |
| - } |
660 |
| - |
661 |
| - function getAllTreeRows(rowTree){ |
662 |
| - var selectedRows = []; |
663 |
| - for (var i = 0; i<rowTree.length; i++) { |
664 |
| - var node = rowTree[i]; |
665 |
| - selectedRows.push(node.row); |
666 |
| - selectedRows = selectedRows.concat(getAllTreeRows(node.children)); |
667 |
| - } |
668 |
| - return selectedRows; |
669 |
| - } |
670 | 625 | }]);
|
671 | 626 |
|
672 | 627 | /**
|
|
788 | 743 | function selectButtonClick(row, evt) {
|
789 | 744 | evt.stopPropagation();
|
790 | 745 |
|
791 |
| - if (row.groupHeader) { |
792 |
| - selectByKeyState(row, evt); |
793 |
| - var selectionState = row.isSelected; |
794 |
| - for (var i = 0; i < row.treeNode.children.length; i++) { |
795 |
| - if (row.treeNode.children[i].row.isSelected !== selectionState) { |
796 |
| - selectButtonClick(row.treeNode.children[i].row, evt); |
797 |
| - } |
798 |
| - } |
799 |
| - }else { |
800 |
| - selectByKeyState(row, evt); |
801 |
| - } |
802 |
| - } |
803 |
| - |
804 |
| - function selectByKeyState(row, evt){ |
805 | 746 | if (evt.shiftKey) {
|
806 | 747 | uiGridSelectionService.shiftSelect(self, row, evt, self.options.multiSelect);
|
807 |
| - } else if (evt.ctrlKey || evt.metaKey) { |
| 748 | + } |
| 749 | + else if (evt.ctrlKey || evt.metaKey) { |
808 | 750 | uiGridSelectionService.toggleRowSelection(self, row, evt, self.options.multiSelect, self.options.noUnselect);
|
809 |
| - } else { |
| 751 | + } |
| 752 | + else if (row.groupHeader) { |
| 753 | + for (var i = 0; i < row.treeNode.children.length; i++) { |
| 754 | + uiGridSelectionService.toggleRowSelection(self, row.treeNode.children[i].row, evt, self.options.multiSelect, self.options.noUnselect); |
| 755 | + } |
| 756 | + } |
| 757 | + else { |
810 | 758 | uiGridSelectionService.toggleRowSelection(self, row, evt, (self.options.multiSelect && !self.options.modifierKeysToMultiSelect), self.options.noUnselect);
|
811 | 759 | }
|
812 | 760 | }
|
|
0 commit comments