UNPKG

@alauda-fe/common

Version:

Alauda frontend team common codes.

119 lines 16 kB
import { DialogRef, DIALOG_DATA, DialogModule, FormModule, ButtonModule, InputModule, } from '@alauda/ui'; import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { snakeCase } from 'lodash-es'; import { BehaviorSubject, finalize } from 'rxjs'; import { K8sApiService } from '../../api/k8s-api.service'; import { K8S_UTIL_PIPES_MODULE, DESCRIPTION, K8sUtilService, } from '../../core/public-api'; import { TRANSLATE_MODULE } from '../../translate/public-api'; import * as i0 from "@angular/core"; import * as i1 from "@alauda/ui"; import * as i2 from "../../api/k8s-api.service"; import * as i3 from "../../core/public-api"; import * as i4 from "@angular/forms"; import * as i5 from "../../translate/translate.pipe"; import * as i6 from "../../core/pipes/k8s-util.pipe"; export class UpdateDescriptionDialogComponent { constructor(dialogRef, k8sApi, k8sUtil, data) { this.dialogRef = dialogRef; this.k8sApi = k8sApi; this.k8sUtil = k8sUtil; this.data = data; this.description = this.k8sUtil.getDescription(this.data.resource); this.confirming$$ = new BehaviorSubject(false); } confirm() { this.confirming$$.next(true); this.k8sApi .patchResource({ ...(this.data.definition ? { definition: this.data.definition, } : { type: this.data.type || snakeCase(this.data.resource.kind).toUpperCase(), }), cluster: this.data.cluster, resource: this.data.resource, part: { metadata: { annotations: { [this.k8sUtil.normalizeType(DESCRIPTION)]: this.description, }, }, }, }) .pipe(finalize(() => this.confirming$$.next(false))) .subscribe(resource => this.dialogRef.close(resource)); } static { this.ɵfac = function UpdateDescriptionDialogComponent_Factory(t) { return new (t || UpdateDescriptionDialogComponent)(i0.ɵɵdirectiveInject(i1.DialogRef), i0.ɵɵdirectiveInject(i2.K8sApiService), i0.ɵɵdirectiveInject(i3.K8sUtilService), i0.ɵɵdirectiveInject(DIALOG_DATA)); }; } static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UpdateDescriptionDialogComponent, selectors: [["ng-component"]], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 24, vars: 25, consts: [["auiFormItemLabel", ""], [1, "last-form-item-no-margin"], ["aui-input", "", "name", "description", 3, "ngModelChange", "ngModel"], ["aui-button", "primary", 3, "click", "loading", "disabled"], ["aui-button", "", "auiDialogClose", ""]], template: function UpdateDescriptionDialogComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "aui-dialog-header"); i0.ɵɵtext(1); i0.ɵɵpipe(2, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(3, "aui-dialog-content")(4, "aui-form-item")(5, "label", 0); i0.ɵɵtext(6); i0.ɵɵpipe(7, "translate"); i0.ɵɵelementEnd(); i0.ɵɵtext(8); i0.ɵɵpipe(9, "aclName"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(10, "aui-form-item", 1)(11, "label", 0); i0.ɵɵtext(12); i0.ɵɵpipe(13, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(14, "textarea", 2); i0.ɵɵtwoWayListener("ngModelChange", function UpdateDescriptionDialogComponent_Template_textarea_ngModelChange_14_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.description, $event) || (ctx.description = $event); return $event; }); i0.ɵɵelementEnd()()(); i0.ɵɵelementStart(15, "aui-dialog-footer")(16, "button", 3); i0.ɵɵpipe(17, "async"); i0.ɵɵpipe(18, "async"); i0.ɵɵlistener("click", function UpdateDescriptionDialogComponent_Template_button_click_16_listener() { return ctx.confirm(); }); i0.ɵɵtext(19); i0.ɵɵpipe(20, "translate"); i0.ɵɵelementEnd(); i0.ɵɵelementStart(21, "button", 4); i0.ɵɵtext(22); i0.ɵɵpipe(23, "translate"); i0.ɵɵelementEnd()(); } if (rf & 2) { i0.ɵɵadvance(); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 9, "update_description"), "\n"); i0.ɵɵadvance(5); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(7, 11, "name"), " "); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(9, 13, ctx.data.resource), " "); i0.ɵɵadvance(4); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 15, "description"), " "); i0.ɵɵadvance(2); i0.ɵɵtwoWayProperty("ngModel", ctx.description); i0.ɵɵadvance(2); i0.ɵɵproperty("loading", i0.ɵɵpipeBind1(17, 17, ctx.confirming$$))("disabled", i0.ɵɵpipeBind1(18, 19, ctx.confirming$$)); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(20, 21, "update"), " "); i0.ɵɵadvance(3); i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(23, 23, "cancel"), " "); } }, dependencies: [AsyncPipe, ButtonModule, i1.ButtonComponent, DialogModule, i1.DialogHeaderComponent, i1.DialogContentComponent, i1.DialogFooterComponent, i1.DialogCloseDirective, InputModule, i1.InputComponent, FormModule, i1.FormItemComponent, i1.FormItemLabelDirective, FormsModule, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgModel, i5.TranslatePipe, i6.K8sNamePipe], encapsulation: 2, changeDetection: 0 }); } } (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UpdateDescriptionDialogComponent, [{ type: Component, args: [{ standalone: true, preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ AsyncPipe, ButtonModule, DialogModule, InputModule, FormModule, FormsModule, TRANSLATE_MODULE, K8S_UTIL_PIPES_MODULE, ], template: "<aui-dialog-header>\n {{ 'update_description' | translate }}\n</aui-dialog-header>\n<aui-dialog-content>\n <aui-form-item>\n <label auiFormItemLabel>\n {{ 'name' | translate }}\n </label>\n {{ data.resource | aclName }}\n </aui-form-item>\n <aui-form-item class=\"last-form-item-no-margin\">\n <label auiFormItemLabel>\n {{ 'description' | translate }}\n </label>\n <textarea\n aui-input\n name=\"description\"\n [(ngModel)]=\"description\"\n ></textarea>\n </aui-form-item>\n</aui-dialog-content>\n<aui-dialog-footer>\n <button\n aui-button=\"primary\"\n [loading]=\"confirming$$ | async\"\n [disabled]=\"confirming$$ | async\"\n (click)=\"confirm()\"\n >\n {{ 'update' | translate }}\n </button>\n <button\n aui-button\n auiDialogClose\n >\n {{ 'cancel' | translate }}\n </button>\n</aui-dialog-footer>\n" }] }], () => [{ type: i1.DialogRef }, { type: i2.K8sApiService }, { type: i3.K8sUtilService }, { type: undefined, decorators: [{ type: Inject, args: [DIALOG_DATA] }] }], null); })(); (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UpdateDescriptionDialogComponent, { className: "UpdateDescriptionDialogComponent" }); })(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2s4cy1zaGFyZWQvdXBkYXRlLWRlc2NyaXB0aW9uLWRpYWxvZy9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvazhzLXNoYXJlZC91cGRhdGUtZGVzY3JpcHRpb24tZGlhbG9nL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixZQUFZLEVBQ1osV0FBVyxHQUNaLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFMUQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsY0FBYyxHQUdmLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBa0I5RCxNQUFNLE9BQU8sZ0NBQWdDO0lBSzNDLFlBQ21CLFNBQW9CLEVBQ3BCLE1BQW1DLEVBQ25DLE9BQXVCLEVBRWpDLElBUU47UUFaZ0IsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNwQixXQUFNLEdBQU4sTUFBTSxDQUE2QjtRQUNuQyxZQUFPLEdBQVAsT0FB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OlsiaW1wb3J0IHtcbiAgRGlhbG9nUmVmLFxuICBESUFMT0dfREFUQSxcbiAgRGlhbG9nTW9kdWxlLFxuICBGb3JtTW9kdWxlLFxuICBCdXR0b25Nb2R1bGUsXG4gIElucHV0TW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7IEFzeW5jUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgc25ha2VDYXNlIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmluYWxpemUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlZXBQYXJ0aWFsIH0gZnJvbSAndHMtZXNzZW50aWFscy9kaXN0L2RlZXAtcGFydGlhbCc7XG5cbmltcG9ydCB7IEs4c0FwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvazhzLWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IEs4c1Jlc291cmNlRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2FwaS90eXBlcyc7XG5pbXBvcnQge1xuICBLOFNfVVRJTF9QSVBFU19NT0RVTEUsXG4gIERFU0NSSVBUSU9OLFxuICBLOHNVdGlsU2VydmljZSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBSZXNvdXJjZVR5cGUsXG59IGZyb20gJy4uLy4uL2NvcmUvcHVibGljLWFwaSc7XG5pbXBvcnQgeyBUUkFOU0xBVEVfTU9EVUxFIH0gZnJvbSAnLi4vLi4vdHJhbnNsYXRlL3B1YmxpYy1hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICd0ZW1wbGF0ZS5odG1sJyxcbiAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgRm9ybU1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBUUkFOU0xBVEVfTU9EVUxFLFxuICAgIEs4U19VVElMX1BJUEVTX01PRFVMRSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVXBkYXRlRGVzY3JpcHRpb25EaWFsb2dDb21wb25lbnQ8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4ge1xuICBkZXNjcmlwdGlvbiA9IHRoaXMuazhzVXRpbC5nZXREZXNjcmlwdGlvbih0aGlzLmRhdGEucmVzb3VyY2UpO1xuXG4gIGNvbmZpcm1pbmckJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBEaWFsb2dSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2U8UmVzb3VyY2VUeXBlPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1V0aWw6IEs4c1V0aWxTZXJ2aWNlLFxuICAgIEBJbmplY3QoRElBTE9HX0RBVEEpXG4gICAgcHVibGljIGRhdGE6IHtcbiAgICAgIGRlZmluaXRpb24/OiBLOHNSZXNvdXJjZURlZmluaXRpb247XG4gICAgICAvKipcbiAgICAgICAqIEBkZXByZWNhdGVkIHVzZSBgZGVmaW5pdGlvbmAgaW5zdGVhZFxuICAgICAgICovXG4gICAgICB0eXBlPzogUmVzb3VyY2VUeXBlO1xuICAgICAgY2x1c3Rlcj86IHN0cmluZztcbiAgICAgIHJlc291cmNlOiBUO1xuICAgIH0sXG4gICkge31cblxuICBjb25maXJtKCkge1xuICAgIHRoaXMuY29uZmlybWluZyQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5rOHNBcGlcbiAgICAgIC5wYXRjaFJlc291cmNlPFQ+KHtcbiAgICAgICAgLi4uKHRoaXMuZGF0YS5kZWZpbml0aW9uXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIGRlZmluaXRpb246IHRoaXMuZGF0YS5kZWZpbml0aW9uLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICB0eXBlOlxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS50eXBlIHx8XG4gICAgICAgICAgICAgICAgKHNuYWtlQ2FzZShcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5yZXNvdXJjZS5raW5kLFxuICAgICAgICAgICAgICAgICkudG9VcHBlckNhc2UoKSBhcyBSZXNvdXJjZVR5cGUpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgIGNsdXN0ZXI6IHRoaXMuZGF0YS5jbHVzdGVyLFxuICAgICAgICByZXNvdXJjZTogdGhpcy5kYXRhLnJlc291cmNlLFxuICAgICAgICBwYXJ0OiB7XG4gICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgIGFubm90YXRpb25zOiB7XG4gICAgICAgICAgICAgIFt0aGlzLms4c1V0aWwubm9ybWFsaXplVHlwZShERVNDUklQVElPTildOiB0aGlzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIERlZXBQYXJ0aWFsPFQ+LFxuICAgICAgfSlcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuY29uZmlybWluZyQkLm5leHQoZmFsc2UpKSlcbiAgICAgIC5zdWJzY3JpYmUocmVzb3VyY2UgPT4gdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzb3VyY2UpKTtcbiAgfVxufVxuIiwiPGF1aS1kaWFsb2ctaGVhZGVyPlxuICB7eyAndXBkYXRlX2Rlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuPC9hdWktZGlhbG9nLWhlYWRlcj5cbjxhdWktZGlhbG9nLWNvbnRlbnQ+XG4gIDxhdWktZm9ybS1pdGVtPlxuICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPlxuICAgICAge3sgJ25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9sYWJlbD5cbiAgICB7eyBkYXRhLnJlc291cmNlIHwgYWNsTmFtZSB9fVxuICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDxhdWktZm9ybS1pdGVtIGNsYXNzPVwibGFzdC1mb3JtLWl0ZW0tbm8tbWFyZ2luXCI+XG4gICAgPGxhYmVsIGF1aUZvcm1JdGVtTGFiZWw+XG4gICAgICB7eyAnZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9sYWJlbD5cbiAgICA8dGV4dGFyZWFcbiAgICAgIGF1aS1pbnB1dFxuICAgICAgbmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgIFsobmdNb2RlbCldPVwiZGVzY3JpcHRpb25cIlxuICAgID48L3RleHRhcmVhPlxuICA8L2F1aS1mb3JtLWl0ZW0+XG48L2F1aS1kaWFsb2ctY29udGVudD5cbjxhdWktZGlhbG9nLWZvb3Rlcj5cbiAgPGJ1dHRvblxuICAgIGF1aS1idXR0b249XCJwcmltYXJ5XCJcbiAgICBbbG9hZGluZ109XCJjb25maXJtaW5nJCQgfCBhc3luY1wiXG4gICAgW2Rpc2FibGVkXT1cImNvbmZpcm1pbmckJCB8IGFzeW5jXCJcbiAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgPlxuICAgIHt7ICd1cGRhdGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uXG4gICAgYXVpLWJ1dHRvblxuICAgIGF1aURpYWxvZ0Nsb3NlXG4gID5cbiAgICB7eyAnY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvYXVpLWRpYWxvZy1mb290ZXI+XG4iXX0=