UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

77 lines 15.2 kB
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core'; import { uniq } from 'lodash-es'; import { startWith, switchMap, takeUntil } from 'rxjs'; import { K8sUtilService, publishRef, } from '../../../../core/public-api'; import { CommonLayoutContextService } from '../../../../page-scaffold/public-api'; import { ResourceListBase } from '../../base-list'; import { ResourceSelectContextService } from '../../context.service'; import * as i0 from "@angular/core"; import * as i1 from "../../../../page-scaffold/public-api"; import * as i2 from "../../context.service"; import * as i3 from "../../../../core/public-api"; import * as i4 from "../../internals/data-grid/component"; export class ProjectListComponent extends ResourceListBase { constructor(commonLayoutService, contextService, cdr, k8sUtil) { super(cdr, k8sUtil, contextService); this.commonLayoutService = commonLayoutService; this.type = 'project'; this.projects = []; this.projects$ = this.reload$$.pipe(startWith(null), switchMap(() => this.commonLayoutService.getProjects()), takeUntil(this.destroy$$), publishRef()); this.mapResource = (list) => list.map(item => { const cachedItem = this.projects.find(project => project.name === this.k8sUtil.getName(item)); return { name: this.k8sUtil.getName(item), displayName: this.k8sUtil.getDisplayName(item), status: item.status?.phase === 'Active' ? 'normal' : 'abnormal', admin: cachedItem?.admin || '', timestamp: item.metadata.creationTimestamp, __origin: item, }; }); } ngOnInit() { this.projects = this.contextService.cachedProjects; this.setSelected(); this.projects$.subscribe({ next: projects => { this.load.emit({ project: projects.length, cluster: uniq(projects.reduce((acc, cur) => [ ...acc, ...(cur.spec.clusters || []).map(c => c.name), ], [])).length, }); this.projects = this.mapResource(projects); this.contextService.cachedProjects = this.projects; this.setSelected(); this.loading = false; this.forceLoading = false; this.cdr.markForCheck(); }, error: () => { this.loading = false; this.forceLoading = false; this.cdr.markForCheck(); }, }); } setSelected() { this.selectedProject = this.projects.find(p => p.name === this.value); } static { this.ɵfac = function ProjectListComponent_Factory(t) { return new (t || ProjectListComponent)(i0.ɵɵdirectiveInject(i1.CommonLayoutContextService), i0.ɵɵdirectiveInject(i2.ResourceSelectContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i3.K8sUtilService)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ProjectListComponent, selectors: [["acl-project-list"]], inputs: { value: "value" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 7, consts: [[3, "selectItem", "reload", "data", "fields", "context", "popupLite", "type", "selectedUid", "loading"]], template: function ProjectListComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "acl-resource-data-grid", 0); i0.ɵɵlistener("selectItem", function ProjectListComponent_Template_acl_resource_data_grid_selectItem_0_listener($event) { return ctx.onSelect($event); })("reload", function ProjectListComponent_Template_acl_resource_data_grid_reload_0_listener() { return ctx.reload(); }); i0.ɵɵelementEnd(); } if (rf & 2) { i0.ɵɵproperty("data", ctx.projects)("fields", ctx.fields)("context", ctx.context)("popupLite", ctx.popupLite)("type", ctx.type)("selectedUid", ctx.selectedProject == null ? null : ctx.selectedProject.__origin.metadata.uid)("loading", ctx.forceLoading || !ctx.projects.length && ctx.loading); } }, dependencies: [i4.ResourceDataGridComponent], styles: ["[_nghost-%COMP%]{display:flex;flex-direction:column}.filter[_ngcontent-%COMP%]{display:flex;border-bottom:1px solid rgb(var(--aui-color-n-8));padding-bottom:8px}.filter[_ngcontent-%COMP%] aui-form-item[_ngcontent-%COMP%] .aui-form-item{margin-bottom:0}.filter__project[_ngcontent-%COMP%]{margin-right:50px;padding-bottom:8px}.filter__project[_ngcontent-%COMP%] aui-select[_ngcontent-%COMP%]{width:240px}.filter__cluster[_ngcontent-%COMP%]{flex:1}.cluster-tags[_ngcontent-%COMP%] aui-check-tag[_ngcontent-%COMP%]{margin-bottom:8px;display:inline-flex}.cluster-tags[_ngcontent-%COMP%] aui-check-tag[_ngcontent-%COMP%] .aui-tag{border:none}.cluster-tags[_ngcontent-%COMP%] aui-check-tag[_ngcontent-%COMP%] .aui-tag--info{background-color:rgb(var(--aui-color-n-8))}"], changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ProjectListComponent, [{ type: Component, args: [{ selector: 'acl-project-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<acl-resource-data-grid\n [data]=\"projects\"\n [fields]=\"fields\"\n [context]=\"context\"\n [popupLite]=\"popupLite\"\n (selectItem)=\"onSelect($event)\"\n [type]=\"type\"\n [selectedUid]=\"selectedProject?.__origin.metadata.uid\"\n [loading]=\"forceLoading || (!projects.length && loading)\"\n (reload)=\"reload()\"\n></acl-resource-data-grid>\n", styles: [":host{display:flex;flex-direction:column}.filter{display:flex;border-bottom:1px solid rgb(var(--aui-color-n-8));padding-bottom:8px}.filter aui-form-item ::ng-deep .aui-form-item{margin-bottom:0}.filter__project{margin-right:50px;padding-bottom:8px}.filter__project aui-select{width:240px}.filter__cluster{flex:1}.cluster-tags aui-check-tag{margin-bottom:8px;display:inline-flex}.cluster-tags aui-check-tag::ng-deep .aui-tag{border:none}.cluster-tags aui-check-tag::ng-deep .aui-tag--info{background-color:rgb(var(--aui-color-n-8))}\n"] }] }], () => [{ type: i1.CommonLayoutContextService }, { type: i2.ResourceSelectContextService }, { type: i0.ChangeDetectorRef }, { type: i3.K8sUtilService }], { value: [{ type: Input }] }); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ProjectListComponent, { className: "ProjectListComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2J1c2luZXNzL3Jlc291cmNlLXNlbGVjdC9leHBvcnRzL3Byb2plY3QtbGlzdC9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvYnVzaW5lc3MvcmVzb3VyY2Utc2VsZWN0L2V4cG9ydHMvcHJvamVjdC1saXN0L3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV2RCxPQUFPLEVBQ0wsY0FBYyxFQUVkLFVBQVUsR0FDWCxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFVckUsTUFBTSxPQUFPLG9CQUNYLFNBQVEsZ0JBQWdCO0lBcUJ4QixZQUNtQixtQkFBK0MsRUFDaEUsY0FBNEMsRUFDNUMsR0FBc0IsRUFDdEIsT0FBdUI7UUFFdkIsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFMbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUE0QjtRQWRsRSxTQUFJLEdBQUcsU0FBa0IsQ0FBQztRQUkxQixhQUFRLEdBQXNCLEVBQUUsQ0FBQztRQUVqQyxjQUFTLEdB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QUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RSxDQUFDO3FGQWpFVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjtZQzVCakMsaURBVUM7WUFEQyxBQUpBLGlJQUFjLG9CQUFnQixJQUFDLHNHQUlyQixZQUFRLElBQUM7WUFDcEIsaUJBQXlCOztZQUZ4QixBQURBLEFBREEsQUFGQSxBQURBLEFBREEsQUFEQSxtQ0FBaUIsc0JBQ0Esd0JBQ0UsNEJBQ0ksa0JBRVYsK0ZBQ3lDLG9FQUNHOzs7aUZEb0I5QyxvQkFBb0I7Y0FOaEMsU0FBUzsyQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTttS0FPL0MsS0FBSztrQkFESixLQUFLOztrRkFKSyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHVuaXEgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBLOHNVdGlsU2VydmljZSxcbiAgUHJvamVjdCxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IENvbW1vbkxheW91dENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcGFnZS1zY2FmZm9sZC9wdWJsaWMtYXBpJztcbmltcG9ydCB7IFJlc291cmNlTGlzdEJhc2UgfSBmcm9tICcuLi8uLi9iYXNlLWxpc3QnO1xuaW1wb3J0IHsgUmVzb3VyY2VTZWxlY3RDb250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvbnRleHQuc2VydmljZSc7XG5cbmltcG9ydCB7IFByb2plY3REYXRhSXRlbSB9IGZyb20gJy4vLi4vLi4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtcHJvamVjdC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9qZWN0TGlzdENvbXBvbmVudFxuICBleHRlbmRzIFJlc291cmNlTGlzdEJhc2VcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKVxuICB2YWx1ZTogc3RyaW5nO1xuXG4gIHNlbGVjdGVkUHJvamVjdDogUHJvamVjdERhdGFJdGVtO1xuXG4gIHR5cGUgPSAncHJvamVjdCcgYXMgY29uc3Q7XG5cbiAgc2VsZWN0ZWRVaWQ6IHN0cmluZztcblxuICBwcm9qZWN0czogUHJvamVjdERhdGFJdGVtW10gPSBbXTtcblxuICBwcm9qZWN0cyQgPSB0aGlzLnJlbG9hZCQkLnBpcGUoXG4gICAgc3RhcnRXaXRoKG51bGwgYXMgdm9pZCksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuY29tbW9uTGF5b3V0U2VydmljZS5nZXRQcm9qZWN0cygpKSxcbiAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCQpLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbkxheW91dFNlcnZpY2U6IENvbW1vbkxheW91dENvbnRleHRTZXJ2aWNlLFxuICAgIGNvbnRleHRTZXJ2aWNlOiBSZXNvdXJjZVNlbGVjdENvbnRleHRTZXJ2aWNlLFxuICAgIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgazhzVXRpbDogSzhzVXRpbFNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGNkciwgazhzVXRpbCwgY29udGV4dFNlcnZpY2UpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wcm9qZWN0cyA9IHRoaXMuY29udGV4dFNlcnZpY2UuY2FjaGVkUHJvamVjdHM7XG4gICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICAgIHRoaXMucHJvamVjdHMkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBwcm9qZWN0cyA9PiB7XG4gICAgICAgIHRoaXMubG9hZC5lbWl0KHtcbiAgICAgICAgICBwcm9qZWN0OiBwcm9qZWN0cy5sZW5ndGgsXG4gICAgICAgICAgY2x1c3RlcjogdW5pcShcbiAgICAgICAgICAgIHByb2plY3RzLnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgY3VyKSA9PiBbXG4gICAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICAgIC4uLihjdXIuc3BlYy5jbHVzdGVycyB8fCBbXSkubWFwKGMgPT4gYy5uYW1lKSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICkubGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcm9qZWN0cyA9IHRoaXMubWFwUmVzb3VyY2UocHJvamVjdHMpO1xuICAgICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmNhY2hlZFByb2plY3RzID0gdGhpcy5wcm9qZWN0cztcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZCgpO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mb3JjZUxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9yY2VMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHNldFNlbGVjdGVkKCkge1xuICAgIHRoaXMuc2VsZWN0ZWRQcm9qZWN0ID0gdGhpcy5wcm9qZWN0cy5maW5kKHAgPT4gcC5uYW1lID09PSB0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG1hcFJlc291cmNlID0gKGxpc3Q6IFByb2plY3RbXSk6IFByb2plY3REYXRhSXRlbVtdID0+XG4gICAgbGlzdC5tYXAoaXRlbSA9PiB7XG4gICAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5wcm9qZWN0cy5maW5kKFxuICAgICAgICBwcm9qZWN0ID0+IHByb2plY3QubmFtZSA9PT0gdGhpcy5rOHNVdGlsLmdldE5hbWUoaXRlbSksXG4gICAgICApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogdGhpcy5rOHNVdGlsLmdldE5hbWUoaXRlbSksXG4gICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLms4c1V0aWwuZ2V0RGlzcGxheU5hbWUoaXRlbSksXG4gICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXM/LnBoYXNlID09PSAnQWN0aXZlJyA/ICdub3JtYWwnIDogJ2Fibm9ybWFsJyxcbiAgICAgICAgYWRtaW46IGNhY2hlZEl0ZW0/LmFkbWluIHx8ICcnLFxuICAgICAgICB0aW1lc3RhbXA6IGl0ZW0ubWV0YWRhdGEuY3JlYXRpb25UaW1lc3RhbXAsXG4gICAgICAgIF9fb3JpZ2luOiBpdGVtLFxuICAgICAgfTtcbiAgICB9KTtcbn1cbiIsIjxhY2wtcmVzb3VyY2UtZGF0YS1ncmlkXG4gIFtkYXRhXT1cInByb2plY3RzXCJcbiAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICBbY29udGV4dF09XCJjb250ZXh0XCJcbiAgW3BvcHVwTGl0ZV09XCJwb3B1cExpdGVcIlxuICAoc2VsZWN0SXRlbSk9XCJvblNlbGVjdCgkZXZlbnQpXCJcbiAgW3R5cGVdPVwidHlwZVwiXG4gIFtzZWxlY3RlZFVpZF09XCJzZWxlY3RlZFByb2plY3Q/Ll9fb3JpZ2luLm1ldGFkYXRhLnVpZFwiXG4gIFtsb2FkaW5nXT1cImZvcmNlTG9hZGluZyB8fCAoIXByb2plY3RzLmxlbmd0aCAmJiBsb2FkaW5nKVwiXG4gIChyZWxvYWQpPVwicmVsb2FkKClcIlxuPjwvYWNsLXJlc291cmNlLWRhdGEtZ3JpZD5cbiJdfQ==