@alauda-fe/common
Version:
Alauda frontend team common codes.
81 lines • 12.5 kB
JavaScript
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==