title: big data with angular ui-grid (feature grouping selection)
body: <p>here's my demo plunker: <a href="http://plnkr.co/edit/Oqd1WHow01ssu43e" rel="nofollow noreferrer">http://plnkr.co/edit/Oqd1WHow01ssu43e</a>
  I'm trying to improve the performance of grid for custom aggregation fuction
  <a href="https://i.stack.imgur.com/TPAqf.png" rel="nofollow noreferrer">custom aggregation function</a>,
  In my codes, I had registered <code>rowSelectionChanged</code> for notifying grid to update data</p>
  <pre><code>onRegisterApi: function( gridApi ) {
        $scope.gridApi = gridApi;
        function updateGrid(option) {
          switch (option) {
            case 'column':
              $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.COLUMN);
              break;
            case 'row':
              $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ROW);
              break;
            case 'edit':
              $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.EDIT);
              break;
            case 'options':
              $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
              break;
            default:
              $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.ALL);
          }
        }
        $scope.debounceUpdateGrid =_.debounce(()=&gt;updateGrid('column'),100);
        gridApi.selection.on.rowSelectionChanged($scope, function (row) {
          $scope.debounceUpdateGrid();
        });
        gridApi.selection.on.rowSelectionChangedBatch($scope, function (row) {
          updateGrid('column'); 
        });
      }
  </code></pre>
  <p>when I checked the selectAll header, the grid only run one time</p>
  <pre><code>gridApi.selection.on.rowSelectionChangedBatch($scope, function (row) {
          updateGrid('column'); 
        });
  </code></pre>
  <p>If I check a group header to select all children rows, the grid will run around children rows's length times</p>
  <pre><code>gridApi.selection.on.rowSelectionChanged($scope, function (row) {
          $scope.debounceUpdateGrid();
          // here debouceUpdate will prevent $scope.gridApi.core.notifyDataChange from being called many tiems which will be more costy or if there's other way for notify grid to update data (custom aggregation result/ selected rows's sum)
        });
  
  </code></pre>
  <p>Is there a way to improve grid performance when I check a parent group header to select hundreds children rows?</p>
  <p>Thank in advance:)</p>