UNPKG

@angular-customised/ngx-table-custom-sort

Version:

Angular easy table

64 lines 9.09 kB
import { Pipe } from '@angular/core'; import { FiltersService } from '../services/filters.service'; import * as i0 from "@angular/core"; export class SortPipe { constructor() { this.defaultArray = []; } static isNaN(aV, bV) { return isNaN(parseFloat(aV)) || !isFinite(aV) || isNaN(parseFloat(bV)) || !isFinite(bV); } static compare(a, b, key) { const split = key.split('.'); const aPath = FiltersService.getPath(split, a); const bPath = FiltersService.getPath(split, b); const aValue = (aPath + '').toLowerCase(); const bValue = (bPath + '').toLowerCase(); if (SortPipe.isNaN(aPath, bPath)) { return aValue.localeCompare(bValue); } if (parseFloat(aPath) < parseFloat(bPath)) { return -1; } if (parseFloat(aPath) > parseFloat(bPath)) { return 1; } return 0; } transform(array, filter, config) { if (this.defaultArray.length === 0) { this.defaultArray = array; } if (!filter.key || filter.key === '') { return array; } if (filter.order === '') { return this.defaultArray; } if (filter.order === 'asc') { return this.sortAsc(array, filter, config); } return this.sortDesc(array, filter, config); } sortAsc(array, filter, config) { if (config && config.groupRows) { return array.map((arr) => arr.sort((a, b) => SortPipe.compare(a, b, filter.key))); } return array.sort((a, b) => SortPipe.compare(a, b, filter.key)); } sortDesc(array, filter, config) { if (config && config.groupRows) { return array.map((arr) => arr.sort((a, b) => SortPipe.compare(b, a, filter.key))); } return array.sort((a, b) => SortPipe.compare(b, a, filter.key)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); } static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.0", ngImport: i0, type: SortPipe, name: "sort" }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SortPipe, decorators: [{ type: Pipe, args: [{ name: 'sort', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVhc3ktdGFibGUvc3JjL2xpYi9waXBlcy9zb3J0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU03RCxNQUFNLE9BQU8sUUFBUTtJQUhyQjtRQUlVLGlCQUFZLEdBQVUsRUFBRSxDQUFDO0tBc0RsQztJQXBEUyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQU8sRUFBRSxFQUFPO1FBQ25DLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFRLEVBQUUsQ0FBUSxFQUFFLEdBQVc7UUFDcEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENB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ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdGVyc1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9maWx0ZXJzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWcgfSBmcm9tICcuLic7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3NvcnQnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU29ydFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICBwcml2YXRlIGRlZmF1bHRBcnJheTogYW55W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgaXNOYU4oYVY6IGFueSwgYlY6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIGlzTmFOKHBhcnNlRmxvYXQoYVYpKSB8fCAhaXNGaW5pdGUoYVYpIHx8IGlzTmFOKHBhcnNlRmxvYXQoYlYpKSB8fCAhaXNGaW5pdGUoYlYpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY29tcGFyZShhOiBhbnlbXSwgYjogYW55W10sIGtleTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHNwbGl0ID0ga2V5LnNwbGl0KCcuJyk7XHJcbiAgICBjb25zdCBhUGF0aCA9IEZpbHRlcnNTZXJ2aWNlLmdldFBhdGgoc3BsaXQsIGEpO1xyXG4gICAgY29uc3QgYlBhdGggPSBGaWx0ZXJzU2VydmljZS5nZXRQYXRoKHNwbGl0LCBiKTtcclxuICAgIGNvbnN0IGFWYWx1ZSA9IChhUGF0aCArICcnKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgYlZhbHVlID0gKGJQYXRoICsgJycpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBpZiAoU29ydFBpcGUuaXNOYU4oYVBhdGgsIGJQYXRoKSkge1xyXG4gICAgICByZXR1cm4gYVZhbHVlLmxvY2FsZUNvbXBhcmUoYlZhbHVlKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJzZUZsb2F0KGFQYXRoKSA8IHBhcnNlRmxvYXQoYlBhdGgpKSB7XHJcbiAgICAgIHJldHVybiAtMTtcclxuICAgIH1cclxuICAgIGlmIChwYXJzZUZsb2F0KGFQYXRoKSA+IHBhcnNlRmxvYXQoYlBhdGgpKSB7XHJcbiAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAwO1xyXG4gIH1cclxuXHJcbiAgdHJhbnNmb3JtKGFycmF5OiBhbnlbXSwgZmlsdGVyOiB7IG9yZGVyOiBzdHJpbmc7IGtleTogc3RyaW5nIH0sIGNvbmZpZz86IENvbmZpZyk6IGFueVtdIHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRBcnJheS5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5kZWZhdWx0QXJyYXkgPSBhcnJheTtcclxuICAgIH1cclxuICAgIGlmICghZmlsdGVyLmtleSB8fCBmaWx0ZXIua2V5ID09PSAnJykge1xyXG4gICAgICByZXR1cm4gYXJyYXk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVyLm9yZGVyID09PSAnJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5kZWZhdWx0QXJyYXk7XHJcbiAgICB9XHJcbiAgICBpZiAoZmlsdGVyLm9yZGVyID09PSAnYXNjJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zb3J0QXNjKGFycmF5LCBmaWx0ZXIsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5zb3J0RGVzYyhhcnJheSwgZmlsdGVyLCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzb3J0QXNjKGFycmF5OiBhbnlbXSwgZmlsdGVyOiB7IG9yZGVyOiBzdHJpbmc7IGtleTogc3RyaW5nIH0sIGNvbmZpZz86IENvbmZpZyk6IGFueVtdIHtcclxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmdyb3VwUm93cykge1xyXG4gICAgICByZXR1cm4gYXJyYXkubWFwKChhcnIpID0+IGFyci5zb3J0KChhLCBiKSA9PiBTb3J0UGlwZS5jb21wYXJlKGEsIGIsIGZpbHRlci5rZXkpKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXkuc29ydCgoYSwgYikgPT4gU29ydFBpcGUuY29tcGFyZShhLCBiLCBmaWx0ZXIua2V5KSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnREZXNjKGFycmF5OiBhbnlbXSwgZmlsdGVyOiB7IG9yZGVyOiBzdHJpbmc7IGtleTogc3RyaW5nIH0sIGNvbmZpZz86IENvbmZpZyk6IGFueVtdIHtcclxuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmdyb3VwUm93cykge1xyXG4gICAgICByZXR1cm4gYXJyYXkubWFwKChhcnIpID0+IGFyci5zb3J0KChhLCBiKSA9PiBTb3J0UGlwZS5jb21wYXJlKGIsIGEsIGZpbHRlci5rZXkpKSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJyYXkuc29ydCgoYSwgYikgPT4gU29ydFBpcGUuY29tcGFyZShiLCBhLCBmaWx0ZXIua2V5KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==