|
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