J'ai créé un tableau qui affiche des valeurs à partir d'un tableau, auquel j'ai ajouté un filtre. Le tableau est paginé avec un maximum de 5 enregistrements par page.
Le problème survient lorsque j'applique le filtre. Par exemple, si vous effectuez une recherche pour le terme "ora", vous aurez trois enregistrements, un sur chaque page.
Comment afficher ensemble ces résultats (sur une seule page, ou sur autant de pages que nécessaire, mais pas dispersé) et lorsque je retire le filtre pour l'afficher normalement (dans toutes les pages)?
Le code en direct est disponible ici : https://plnkr.co/edit/QIcmQUqABDJcV3H6vqRo?p=preview
HTML:
Nr. crt.
Anul
Denumirea institutiei/companiei
{{rows.id}}
{{rows.an}}
{{rows.den}}
JS:
var app = angular.module("salariesApp", ['ui.bootstrap']);
app.constant("appConst", {
pagesLimit: 5,
crrYear: 2016
});
app.controller('mainCtrl', ['$scope', 'appConst', function($scope, appConst) {
$scope.crrYear = appConst.crrYear;
$scope.pageNum = {
linkBtnClass: 'linkBtnClass cursor-pointer'
};
$scope.showSal = [
{ id: '1', an: '2016', den: 'Oracle Romania' },
{ id: '2', an: '2016', den: 'Microsoft' },
{ id: '3', an: '2016', den: 'Computer Generated Solutions - CGS Europe' },
{ id: '4', an: '2016', den: 'IBM' },
{ id: '5', an: '2016', den: 'Luxoft' },
{ id: '6', an: '2016', den: 'Oracle Romania' },
{ id: '7', an: '2016', den: 'Luxoft' },
{ id: '8', an: '2016', den: 'Computer Generated Solutions - CGS Europe' },
{ id: '9', an: '2016', den: 'IBM' },
{ id: '10', an: '2016', den: 'Luxoft' },
{ id: '11', an: '2016', den: 'Oracle Romania' },
{ id: '12', an: '2016', den: 'Microsoft' },
{ id: '13', an: '2016', den: 'IBM' },
{ id: '14', an: '2016', den: 'Luxoft' }
];
$scope.searchSal = '';
$scope.sortProperty = $scope.showSal.id;
$scope.reverse = true;
$scope.sortBy = function (sortProperty) {
$scope.reverse = ($scope.sortProperty === sortProperty) ? !$scope.reverse : false;
$scope.sortProperty = sortProperty;
};
// PAGINATION:
$scope.totalItems = $scope.showSal.length;
$scope.currentPage = 1;
$scope.numPerPage = 5;
$scope.paginate = function(value) {
var begin, end, index;
begin = ($scope.currentPage - 1) * $scope.numPerPage;
end = begin + $scope.numPerPage;
index = $scope.showSal.indexOf(value);
return (begin <= index && index < end);
};
$scope.getOptionsClass = function (index) {
if (index > 0) {
return 'thumbnail nav-option-r';
} else {
return 'thumbnail nav-option-l';
}
};
}]);