UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

81 lines 12.5 kB
import { Inject, Injectable } from '@angular/core'; import { get } from 'lodash-es'; import { CREATED_AT } from '../core/constants/constants'; import { CREATION_TIMESTAMP, CREATOR, K8sUtilService, NAME, } from '../core/public-api'; import { isK8sResource } from '../core/utils/public-api'; import { defaultFilter, defaultSorter } from './helper'; import * as i0 from "@angular/core"; export const KNOWN_COLUMNS = new Set([NAME, CREATOR, CREATED_AT]); export class TableUtilService { constructor(k8sUtil) { this.k8sUtil = k8sUtil; this.getValueFromPath = this.getValueFromPath.bind(this); this.defaultFilterFn = this.defaultFilterFn.bind(this); } getValueFromPath(item, name, path, context) { if (typeof path === 'function') { return path.call(context ?? this, item); } if (path != null) { return get(item, path); } if (!name) { return String(item); } const isK8s = isK8sResource(item); /** * ! remember to sync with `KNOWN_COLUMNS` */ switch (name) { case NAME: { return isK8s ? this.k8sUtil.getName(item) : get(item, NAME); } case CREATOR: { return isK8s ? this.k8sUtil.getCreator(item) : get(item, CREATOR); } case CREATED_AT: { return isK8s ? this.k8sUtil.getCreationTimestamp(item) : get(item, CREATION_TIMESTAMP); } } } // eslint-disable-next-line sonarjs/cognitive-complexity defaultFilterFn(items, columnDefs, activeSort, filterParams, context) { context = context ?? this; if (items && filterParams) { for (const [name, filterValue] of Object.entries(filterParams)) { const columnDef = columnDefs.find(def => def.name === name); if (columnDef) { const { path, filter = defaultFilter } = columnDef; items = items.filter(item => filter.call(context, this.getValueFromPath(item, name, path, context), filterValue, item, name, filterParams)); } } } if (activeSort && items) { const { active, direction } = activeSort; const columnDef = columnDefs.find(def => def.name === active); if (columnDef && typeof columnDef.sort === 'object') { const { name, path, sort: { handler: sorter = defaultSorter }, } = columnDef; items = [...items].sort((a, b) => sorter.call(context, this.getValueFromPath(a, name, path, context), this.getValueFromPath(b, name, path, context)) * (direction === 'asc' ? 1 : -1)); } } return items; } static { this.ɵfac = function TableUtilService_Factory(t) { return new (t || TableUtilService)(i0.ɵɵinject(K8sUtilService)); }; } static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TableUtilService, factory: TableUtilService.ɵfac, providedIn: 'root' }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TableUtilService, [{ type: Injectable, args: [{ providedIn: 'root', }] }], () => [{ type: undefined, decorators: [{ type: Inject, args: [K8sUtilService] }] }], null); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3RhYmxlL3V0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRWhDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLE9BQU8sRUFDUCxjQUFjLEVBQ2QsSUFBSSxHQUNMLE1BQU0sb0JBQW9CLENBQUM7QUFDNUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUd4RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFLbEUsTUFBTSxPQUFPLGdCQUFnQjtJQUkzQixZQUVrQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRWhDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELGdCQUFnQixDQUNkLElBQVUsRUFDVixJQUFhLEVBQ2IsSUFBd0MsRUFDeEMsT0FBaUI7UUFFakIsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJ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LEdBQUcsU0FBUyxDQUFDO2dCQUNkLEtBQUssR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUNyQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUNQLE1BQU0sQ0FBQyxJQUFJLENBQ1QsT0FBTyxFQUNQLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsRUFDN0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUM5QyxHQUFHLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyQyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7aUZBeEdVLGdCQUFnQixjQUtqQixjQUFjO3VFQUxiLGdCQUFnQixXQUFoQixnQkFBZ0IsbUJBRmYsTUFBTTs7aUZBRVAsZ0JBQWdCO2NBSDVCLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBTUksTUFBTTt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU29ydCB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBDUkVBVEVEX0FUIH0gZnJvbSAnLi4vY29yZS9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIENSRUFUSU9OX1RJTUVTVEFNUCxcbiAgQ1JFQVRPUixcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIE5BTUUsXG59IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBpc0s4c1Jlc291cmNlIH0gZnJvbSAnLi4vY29yZS91dGlscy9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHsgZGVmYXVsdEZpbHRlciwgZGVmYXVsdFNvcnRlciB9IGZyb20gJy4vaGVscGVyJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uRGVmLCBUYWJsZUNvbHVtbkRlZlBhdGggfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IEtOT1dOX0NPTFVNTlMgPSBuZXcgU2V0KFtOQU1FLCBDUkVBVE9SLCBDUkVBVEVEX0FUXSk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVV0aWxTZXJ2aWNlPFxuICBJdGVtIGV4dGVuZHMgb2JqZWN0LFxuICBLOHNVdGlsIGV4dGVuZHMgSzhzVXRpbFNlcnZpY2UgPSBLOHNVdGlsU2VydmljZSxcbj4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KEs4c1V0aWxTZXJ2aWNlKVxuICAgIHB1YmxpYyByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsLFxuICApIHtcbiAgICB0aGlzLmdldFZhbHVlRnJvbVBhdGggPSB0aGlzLmdldFZhbHVlRnJvbVBhdGguYmluZCh0aGlzKTtcbiAgICB0aGlzLmRlZmF1bHRGaWx0ZXJGbiA9IHRoaXMuZGVmYXVsdEZpbHRlckZuLmJpbmQodGhpcyk7XG4gIH1cblxuICBnZXRWYWx1ZUZyb21QYXRoKFxuICAgIGl0ZW06IEl0ZW0sXG4gICAgbmFtZT86IHN0cmluZyxcbiAgICBwYXRoPzogVGFibGVDb2x1bW5EZWZQYXRoPEl0ZW0sIHVua25vd24+LFxuICAgIGNvbnRleHQ/OiB1bmtub3duLFxuICApOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGlmICh0eXBlb2YgcGF0aCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuIHBhdGguY2FsbChjb250ZXh0ID8/IHRoaXMsIGl0ZW0pO1xuICAgIH1cblxuICAgIGlmIChwYXRoICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBnZXQoaXRlbSwgcGF0aCk7XG4gICAgfVxuXG4gICAgaWYgKCFuYW1lKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlzSzhzID0gaXNLOHNSZXNvdXJjZShpdGVtKTtcblxuICAgIC8qKlxuICAgICAqICEgcmVtZW1iZXIgdG8gc3luYyB3aXRoIGBLTk9XTl9DT0xVTU5TYFxuICAgICAqL1xuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSBOQU1FOiB7XG4gICAgICAgIHJldHVybiBpc0s4c1xuICAgICAgICAgID8gdGhpcy5rOHNVdGlsLmdldE5hbWUoaXRlbSlcbiAgICAgICAgICA6IChnZXQoaXRlbSwgTkFNRSkgYXMgc3RyaW5nIHwgbnVtYmVyKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgQ1JFQVRPUjoge1xuICAgICAgICByZXR1cm4gaXNLOHNcbiAgICAgICAgICA/IHRoaXMuazhzVXRpbC5nZXRDcmVhdG9yKGl0ZW0pXG4gICAgICAgICAgOiAoZ2V0KGl0ZW0sIENSRUFUT1IpIGFzIHN0cmluZyB8IG51bWJlcik7XG4gICAgICB9XG4gICAgICBjYXNlIENSRUFURURfQVQ6IHtcbiAgICAgICAgcmV0dXJuIGlzSzhzXG4gICAgICAgICAgPyB0aGlzLms4c1V0aWwuZ2V0Q3JlYXRpb25UaW1lc3RhbXAoaXRlbSlcbiAgICAgICAgICA6IChnZXQoaXRlbSwgQ1JFQVRJT05fVElNRVNUQU1QKSBhcyBzdHJpbmcgfCBudW1iZXIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzb25hcmpzL2NvZ25pdGl2ZS1jb21wbGV4aXR5XG4gIGRlZmF1bHRGaWx0ZXJGbihcbiAgICBpdGVtczogSXRlbVtdLFxuICAgIGNvbHVtbkRlZnM6IEFycmF5PFRhYmxlQ29sdW1uRGVmPEl0ZW0sIHVua25vd24+PixcbiAgICBhY3RpdmVTb3J0PzogU29ydCxcbiAgICBmaWx0ZXJQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICBjb250ZXh0PzogdW5rbm93bixcbiAgKTogSXRlbVtdIHtcbiAgICBjb250ZXh0ID0gY29udGV4dCA/PyB0aGlzO1xuXG4gICAgaWYgKGl0ZW1zICYmIGZpbHRlclBhcmFtcykge1xuICAgICAgZm9yIChjb25zdCBbbmFtZSwgZmlsdGVyVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGZpbHRlclBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgY29sdW1uRGVmID0gY29sdW1uRGVmcy5maW5kKGRlZiA9PiBkZWYubmFtZSA9PT0gbmFtZSk7XG4gICAgICAgIGlmIChjb2x1bW5EZWYpIHtcbiAgICAgICAgICBjb25zdCB7IHBhdGgsIGZpbHRlciA9IGRlZmF1bHRGaWx0ZXIgfSA9IGNvbHVtbkRlZjtcbiAgICAgICAgICBpdGVtcyA9IGl0ZW1zLmZpbHRlcihpdGVtID0+XG4gICAgICAgICAgICBmaWx0ZXIuY2FsbChcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZUZyb21QYXRoKGl0ZW0sIG5hbWUsIHBhdGgsIGNvbnRleHQpLFxuICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSxcbiAgICAgICAgICAgICAgaXRlbSxcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFjdGl2ZVNvcnQgJiYgaXRlbXMpIHtcbiAgICAgIGNvbnN0IHsgYWN0aXZlLCBkaXJlY3Rpb24gfSA9IGFjdGl2ZVNvcnQ7XG4gICAgICBjb25zdCBjb2x1bW5EZWYgPSBjb2x1bW5EZWZzLmZpbmQoZGVmID0+IGRlZi5uYW1lID09PSBhY3RpdmUpO1xuICAgICAgaWYgKGNvbHVtbkRlZiAmJiB0eXBlb2YgY29sdW1uRGVmLnNvcnQgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBuYW1lLFxuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc29ydDogeyBoYW5kbGVyOiBzb3J0ZXIgPSBkZWZhdWx0U29ydGVyIH0sXG4gICAgICAgIH0gPSBjb2x1bW5EZWY7XG4gICAgICAgIGl0ZW1zID0gWy4uLml0ZW1zXS5zb3J0KFxuICAgICAgICAgIChhLCBiKSA9PlxuICAgICAgICAgICAgc29ydGVyLmNhbGwoXG4gICAgICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgICAgIHRoaXMuZ2V0VmFsdWVGcm9tUGF0aChhLCBuYW1lLCBwYXRoLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgdGhpcy5nZXRWYWx1ZUZyb21QYXRoKGIsIG5hbWUsIHBhdGgsIGNvbnRleHQpLFxuICAgICAgICAgICAgKSAqIChkaXJlY3Rpb24gPT09ICdhc2MnID8gMSA6IC0xKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXM7XG4gIH1cbn1cbiJdfQ==