UNPKG

@paddls/ngx-easy-table

Version:
64 lines 8.81 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: "16.1.7", ngImport: i0, type: SortPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); } static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SortPipe, name: "sort" }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SortPipe, decorators: [{ type: Pipe, args: [{ name: 'sort', }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWVhc3ktdGFibGUvc3JjL2xpYi9waXBlcy9zb3J0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQU03RCxNQUFNLE9BQU8sUUFBUTtJQUhyQjtRQUtVLGlCQUFZLEdBQVUsRUFBRSxDQUFDO0tBc0RsQztJQXBEUyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQU8sRUFBRSxFQUFPO1FBQ25DLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0lBRU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFRLEVBQUUsQ0FBUSxFQUFFLEdBQVc7UUFDcEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUNELElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6QyxPQUFPLENBQUMsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFZLEVBQUUsTUFBc0MsRUFBRSxNQUFlO1FBQ3BGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDcEMsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUNELElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxNQUFNLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRTtZQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxPQUFPLENBQUMsS0FBWSxFQUFFLE1BQXNDLEVBQUUsTUFBZTtRQUNuRixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQzlCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25GO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBWSxFQUFFLE1BQXNDLEVBQUUsTUFBZTtRQUNwRixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQzlCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25GO1FBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OEdBdkRVLFFBQVE7NEdBQVIsUUFBUTs7MkZBQVIsUUFBUTtrQkFIcEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsTUFBTTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZpbHRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZmlsdGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uJztcblxuQFBpcGUoe1xuICBuYW1lOiAnc29ydCcsXG59KVxuZXhwb3J0IGNsYXNzIFNvcnRQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0QXJyYXk6IGFueVtdID0gW107XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNOYU4oYVY6IGFueSwgYlY6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc05hTihwYXJzZUZsb2F0KGFWKSkgfHwgIWlzRmluaXRlKGFWKSB8fCBpc05hTihwYXJzZUZsb2F0KGJWKSkgfHwgIWlzRmluaXRlKGJWKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbXBhcmUoYTogYW55W10sIGI6IGFueVtdLCBrZXk6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3Qgc3BsaXQgPSBrZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBhUGF0aCA9IEZpbHRlcnNTZXJ2aWNlLmdldFBhdGgoc3BsaXQsIGEpO1xuICAgIGNvbnN0IGJQYXRoID0gRmlsdGVyc1NlcnZpY2UuZ2V0UGF0aChzcGxpdCwgYik7XG4gICAgY29uc3QgYVZhbHVlID0gKGFQYXRoICsgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgYlZhbHVlID0gKGJQYXRoICsgJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKFNvcnRQaXBlLmlzTmFOKGFQYXRoLCBiUGF0aCkpIHtcbiAgICAgIHJldHVybiBhVmFsdWUubG9jYWxlQ29tcGFyZShiVmFsdWUpO1xuICAgIH1cbiAgICBpZiAocGFyc2VGbG9hdChhUGF0aCkgPCBwYXJzZUZsb2F0KGJQYXRoKSkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgICBpZiAocGFyc2VGbG9hdChhUGF0aCkgPiBwYXJzZUZsb2F0KGJQYXRoKSkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBwdWJsaWMgdHJhbnNmb3JtKGFycmF5OiBhbnlbXSwgZmlsdGVyOiB7IG9yZGVyOiBzdHJpbmc7IGtleTogc3RyaW5nIH0sIGNvbmZpZz86IENvbmZpZyk6IGFueVtdIHtcbiAgICBpZiAodGhpcy5kZWZhdWx0QXJyYXkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmRlZmF1bHRBcnJheSA9IGFycmF5O1xuICAgIH1cbiAgICBpZiAoIWZpbHRlci5rZXkgfHwgZmlsdGVyLmtleSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBhcnJheTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5vcmRlciA9PT0gJycpIHtcbiAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRBcnJheTtcbiAgICB9XG4gICAgaWYgKGZpbHRlci5vcmRlciA9PT0gJ2FzYycpIHtcbiAgICAgIHJldHVybiB0aGlzLnNvcnRBc2MoYXJyYXksIGZpbHRlciwgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc29ydERlc2MoYXJyYXksIGZpbHRlciwgY29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydEFzYyhhcnJheTogYW55W10sIGZpbHRlcjogeyBvcmRlcjogc3RyaW5nOyBrZXk6IHN0cmluZyB9LCBjb25maWc/OiBDb25maWcpOiBhbnlbXSB7XG4gICAgaWYgKGNvbmZpZyAmJiBjb25maWcuZ3JvdXBSb3dzKSB7XG4gICAgICByZXR1cm4gYXJyYXkubWFwKChhcnIpID0+IGFyci5zb3J0KChhLCBiKSA9PiBTb3J0UGlwZS5jb21wYXJlKGEsIGIsIGZpbHRlci5rZXkpKSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJheS5zb3J0KChhLCBiKSA9PiBTb3J0UGlwZS5jb21wYXJlKGEsIGIsIGZpbHRlci5rZXkpKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydERlc2MoYXJyYXk6IGFueVtdLCBmaWx0ZXI6IHsgb3JkZXI6IHN0cmluZzsga2V5OiBzdHJpbmcgfSwgY29uZmlnPzogQ29uZmlnKTogYW55W10ge1xuICAgIGlmIChjb25maWcgJiYgY29uZmlnLmdyb3VwUm93cykge1xuICAgICAgcmV0dXJuIGFycmF5Lm1hcCgoYXJyKSA9PiBhcnIuc29ydCgoYSwgYikgPT4gU29ydFBpcGUuY29tcGFyZShiLCBhLCBmaWx0ZXIua2V5KSkpO1xuICAgIH1cbiAgICByZXR1cm4gYXJyYXkuc29ydCgoYSwgYikgPT4gU29ydFBpcGUuY29tcGFyZShiLCBhLCBmaWx0ZXIua2V5KSk7XG4gIH1cbn1cbiJdfQ==