У меня есть требование фильтровать таблицу на основе
- один столбец и
- сравнение столбцов.
Я использую ng-grid для заполнения таблицы. Это дает возможность фильтровать на основе одного столбца.
Для сравнения столбцов я использую функцию grid.refresh()
. эта функция вызывает grid.registerRowsProcessor( $scope.columnComparionFilter, 200 )
function. Я подготовил функцию columnComparionFilter
, которая возвращает renderableRows
на основе фильтра. Ниже приведен пример кода:
// function to filter two column based on condition
$scope.columnComparionFilter= function(renderableRows){
// if filter option selection changed
if($scope.change){
if($scope.column1 == undefined)
return renderableRows;
if($scope.column2 == undefined)
return renderableRows;
if($scope.column1 == $scope.column2){
console.log('columns for comparision should be different.')
return renderableRows;
}
if($scope.selectedFilter.name == 'compare'){
renderableRows.forEach( function( row ) {
if(row.entity[$scope.column1.field] == row.entity[$scope.column2.field])
row.visible = true;
else
row.visible = false;
});
}else if($scope.selectedFilter.name == 'distinct'){
renderableRows.forEach( function( row ) {
if(row.entity[$scope.column1.field] != row.entity[$scope.column2.field])
row.visible = true;
else
row.visible = false;
});
}
}
return renderableRows;
};
Оба фильтра работают нормально по отдельности. Но когда я пытаюсь работать вместе. Он фильтрует только на основе одного фильтра по умолчанию. Это устраняет фильтр через колонку.
Может ли кто-нибудь помочь мне решить эту проблему?