Mero
Mero

Reputation: 632

ui grid returning rows in the same order they are selected?

Hi am using UIgrid in an angularjs project and when I call the method gridApi.selection.getSelectedRows() to get the selected rows it returns an array with all the rows but in a random order. Ideally I want to get the rows in the same order they were selected (as if gridApi.selection.getSelectedRows() is backed by a queue) . Any idea how to achieve this please ?

This link to plunker shows the issue http://plnkr.co/edit/gD4hiEO2vFGXiTlyQCix?p=preview

Upvotes: 0

Views: 364

Answers (2)

Mero
Mero

Reputation: 632

I think there is a bug with that version of angular I was using there , if you upgrade the version in the plnkr to 1.6.1 it will behave as expected

Upvotes: 0

Gonzalo.-
Gonzalo.-

Reputation: 12672

You can implement the queue by yourself. Something like

 $scope.gridOnRegisterApi = function(gridApi) {
    gridApi.selection.on.rowSelectionChanged($scope, function(row) {
      var selections =gridApi.selection.getSelectedRows();
      // add sorted
      selections.forEach(function(s){
        if ($scope.mySelections.indexOf(s) === -1) {
          $scope.mySelections.push(s);
        }
      });
      // remove the ones that are not selected (use for to modify collection while iterating)
      for (var i = $scope.mySelections.length; i >0; i--) {
        if (selections.indexOf($scope.mySelections[i]) === -1) {
          $scope.mySelections.splice(i, 1);
        }
      }
      console.log($scope.mySelections);
      row.entity.firstSelection = false;
      if (row.isSelected) row.entity.firstSelection = (gridApi.selection.getSelectedCount() == 1);
    });
  };

Upvotes: 1

Related Questions