@alauda-fe/common
Version:
Alauda frontend team common codes.
155 lines • 17.6 kB
JavaScript
import { ConfirmType, DialogService } from '@alauda/ui';
import { AsyncPipe } from '@angular/common';
import { ChangeDetectionStrategy, Component, EventEmitter, Output, TemplateRef, ViewChild, isDevMode, } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { BehaviorSubject, combineLatest } from 'rxjs';
import { K8sApiService } from '../../../api/k8s-api.service';
import { AuthorizationStateService } from '../../../authorization/state.service';
import { K8sResourceAction, PLATFORM_OPS_MODE, RESOURCE_TYPES, skipError, } from '../../../core/public-api';
import { EFFECT_DIRECTIVE_MODULE } from '../../../effect-directive/module';
import { K8sPermissionService } from '../../../permission/public-api';
import { TranslateModule, TranslateService, } from '../../../translate/public-api';
import * as i0 from "@angular/core";
import * as i1 from "../../../api/k8s-api.service";
import * as i2 from "../../../permission/public-api";
import * as i3 from "../../../translate/public-api";
import * as i4 from "../../../authorization/state.service";
import * as i5 from "@alauda/ui";
import * as i6 from "../../../translate/translate.pipe";
import * as i7 from "../../../effect-directive/e2e-attribute-binding.directive";
const _c0 = ["maintenance"];
const _c1 = ["announcement"];
function MaintenanceComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "a", 2);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "translate");
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵproperty("href", (ctx_r0.isDevMode ? "" : "/console-platform") + "/manage-platform/platform-setting/online-ops", i0.ɵɵsanitizeUrl);
i0.ɵɵadvance();
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, "maintenance_mode"));
} }
function MaintenanceComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 3);
i0.ɵɵtext(1);
i0.ɵɵpipe(2, "async");
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵadvance();
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, ctx_r0.announcement$));
} }
export class MaintenanceComponent {
constructor(k8sApi, k8sPermission, translate, auth, dialog) {
this.k8sApi = k8sApi;
this.k8sPermission = k8sPermission;
this.translate = translate;
this.auth = auth;
this.dialog = dialog;
this.noticeOpen = new EventEmitter();
this.noticeClose = new EventEmitter();
this.isDevMode = isDevMode();
this.noticeId = 'maintenanceModeNotice';
this.announcement$ = new BehaviorSubject('');
combineLatest([
this.k8sPermission.isAllowed({
type: RESOURCE_TYPES.PRODUCT_BASE,
action: K8sResourceAction.UPDATE,
}),
this.k8sApi
.watchGlobalResource({
type: RESOURCE_TYPES.CONFIG_MAP,
name: PLATFORM_OPS_MODE,
namespaced: true,
})
.pipe(skipError({ data: {} })),
this.translate.locale$,
])
.pipe(takeUntilDestroyed())
.subscribe(([isPlatformRule, config]) => {
const enable = config?.data?.enabled === 'true';
if (enable) {
if (isPlatformRule) {
this.noticeOpen.emit({
id: this.noticeId,
content: this.translate.get('maintenance_mode_top_notice_msg'),
suffix: this.maintenance,
});
}
else {
this.announcement$.next(config?.data?.announcement);
if (this.hasConfirm) {
return;
}
this.dialog
.confirm({
confirmType: ConfirmType.Warning,
title: this.translate.get('platform_maintenance_announcement'),
content: this.announcement,
confirmText: this.translate.get('logout'),
cancelButton: false,
})
.then(() => {
this.auth.logoutWithAudit();
})
.finally(() => {
this.hasConfirm = false;
});
this.hasConfirm = true;
}
}
else {
this.noticeClose.emit(this.noticeId);
this.dialog.closeAll();
}
});
}
static { this.ɵfac = function MaintenanceComponent_Factory(t) { return new (t || MaintenanceComponent)(i0.ɵɵdirectiveInject(i1.K8sApiService), i0.ɵɵdirectiveInject(i2.K8sPermissionService), i0.ɵɵdirectiveInject(i3.TranslateService), i0.ɵɵdirectiveInject(i4.AuthorizationStateService), i0.ɵɵdirectiveInject(i5.DialogService)); }; }
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MaintenanceComponent, selectors: [["acl-page-header-notice-maintenance"]], viewQuery: function MaintenanceComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, 5);
i0.ɵɵviewQuery(_c1, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.maintenance = _t.first);
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.announcement = _t.first);
} }, outputs: { noticeOpen: "noticeOpen", noticeClose: "noticeClose" }, standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 4, vars: 0, consts: [["maintenance", ""], ["announcement", ""], ["target", "_blank", 3, "href"], [1, "tw-break-words"]], template: function MaintenanceComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtemplate(0, MaintenanceComponent_ng_template_0_Template, 3, 4, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor)(2, MaintenanceComponent_ng_template_2_Template, 3, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
} }, dependencies: [TranslateModule, i6.TranslatePipe, AsyncPipe, i7.E2eAttributeBindingDirective], encapsulation: 2, changeDetection: 0 }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MaintenanceComponent, [{
type: Component,
args: [{
selector: 'acl-page-header-notice-maintenance',
template: `
<ng-template #maintenance>
<a
target="_blank"
[href]="
(isDevMode ? '' : '/console-platform') +
'/manage-platform/platform-setting/online-ops'
"
>{{ 'maintenance_mode' | translate }}</a
>
</ng-template>
<ng-template #announcement>
<div class="tw-break-words">{{ announcement$ | async }}</div>
</ng-template>
`,
standalone: true,
imports: [TranslateModule, AsyncPipe, ...EFFECT_DIRECTIVE_MODULE],
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], () => [{ type: i1.K8sApiService }, { type: i2.K8sPermissionService }, { type: i3.TranslateService }, { type: i4.AuthorizationStateService }, { type: i5.DialogService }], { maintenance: [{
type: ViewChild,
args: ['maintenance']
}], announcement: [{
type: ViewChild,
args: ['announcement']
}], noticeOpen: [{
type: Output
}], noticeClose: [{
type: Output
}] }); })();
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MaintenanceComponent, { className: "MaintenanceComponent" }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL3BhZ2Utc2NhZmZvbGQvcGFnZS9ub3RpY2VzL21haW50ZW5hbmNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixXQUFXLEVBQ1gsU0FBUyxFQUNULFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDakYsT0FBTyxFQUVMLGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFNBQVMsR0FDVixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZ0JBQWdCLEdBQ2pCLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7OztJQU1qQyw0QkFNRztJQUFBLFlBQW9DOztJQUFBLGlCQUN0Qzs7O0lBTEMsdUlBR0M7SUFDQSxjQUFvQztJQUFwQyw4REFBb0M7OztJQUl2Qyw4QkFBNEI7SUFBQSxZ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QUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3FGQS9FVSxvQkFBb0I7b0VBQXBCLG9CQUFvQjs7Ozs7Ozs7WUFSN0IsQUFWQSxzSEFBMEIseUdBVUM7NEJBS25CLGVBQWUsb0JBQUUsU0FBUzs7aUZBR3pCLG9CQUFvQjtjQXJCaEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxvQ0FBb0M7Z0JBQzlDLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7R0FjVDtnQkFDRCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxHQUFHLHVCQUF1QixDQUFDO2dCQUNqRSxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDtvTEFHQyxXQUFXO2tCQURWLFNBQVM7bUJBQUMsYUFBYTtZQUl4QixZQUFZO2tCQURYLFNBQVM7bUJBQUMsY0FBYztZQUl6QixVQUFVO2tCQURULE1BQU07WUFRUCxXQUFXO2tCQURWLE1BQU07O2tGQWRJLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpcm1UeXBlLCBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnQGFsYXVkYS91aSc7XG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIGlzRGV2TW9kZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgSzhzQXBpU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9rOHMtYXBpLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2F1dGhvcml6YXRpb24vc3RhdGUuc2VydmljZSc7XG5pbXBvcnQge1xuICBDb25maWdNYXAsXG4gIEs4c1Jlc291cmNlQWN0aW9uLFxuICBQTEFURk9STV9PUFNfTU9ERSxcbiAgUkVTT1VSQ0VfVFlQRVMsXG4gIHNraXBFcnJvcixcbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9wdWJsaWMtYXBpJztcbmltcG9ydCB7IEVGRkVDVF9ESVJFQ1RJVkVfTU9EVUxFIH0gZnJvbSAnLi4vLi4vLi4vZWZmZWN0LWRpcmVjdGl2ZS9tb2R1bGUnO1xuaW1wb3J0IHsgSzhzUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wZXJtaXNzaW9uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlTW9kdWxlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi90cmFuc2xhdGUvcHVibGljLWFwaSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjbC1wYWdlLWhlYWRlci1ub3RpY2UtbWFpbnRlbmFuY2UnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy10ZW1wbGF0ZSAjbWFpbnRlbmFuY2U+XG4gICAgICA8YVxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICBbaHJlZl09XCJcbiAgICAgICAgICAoaXNEZXZNb2RlID8gJycgOiAnL2NvbnNvbGUtcGxhdGZvcm0nKSArXG4gICAgICAgICAgJy9tYW5hZ2UtcGxhdGZvcm0vcGxhdGZvcm0tc2V0dGluZy9vbmxpbmUtb3BzJ1xuICAgICAgICBcIlxuICAgICAgICA+e3sgJ21haW50ZW5hbmNlX21vZGUnIHwgdHJhbnNsYXRlIH19PC9hXG4gICAgICA+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI2Fubm91bmNlbWVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0dy1icmVhay13b3Jkc1wiPnt7IGFubm91bmNlbWVudCQgfCBhc3luYyB9fTwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIEFzeW5jUGlwZSwgLi4uRUZGRUNUX0RJUkVDVElWRV9NT0RVTEVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWFpbnRlbmFuY2VDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCdtYWludGVuYW5jZScpXG4gIG1haW50ZW5hbmNlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2Fubm91bmNlbWVudCcpXG4gIGFubm91bmNlbWVudDogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAT3V0cHV0KClcbiAgbm90aWNlT3BlbiA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29udGVudDogc3RyaW5nO1xuICAgIHN1ZmZpeD86IFRlbXBsYXRlUmVmPGFueT47XG4gIH0+KCk7XG5cbiAgQE91dHB1dCgpXG4gIG5vdGljZUNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgaXNEZXZNb2RlID0gaXNEZXZNb2RlKCk7XG4gIG5vdGljZUlkID0gJ21haW50ZW5hbmNlTW9kZU5vdGljZSc7XG4gIGFubm91bmNlbWVudCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KCcnKTtcbiAgaGFzQ29uZmlybTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c0FwaTogSzhzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c1Blcm1pc3Npb246IEs4c1Blcm1pc3Npb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXV0aDogQXV0aG9yaXphdGlvblN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogRGlhbG9nU2VydmljZSxcbiAgKSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLms4c1Blcm1pc3Npb24uaXNBbGxvd2VkKHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuUFJPRFVDVF9CQVNFLFxuICAgICAgICBhY3Rpb246IEs4c1Jlc291cmNlQWN0aW9uLlVQREFURSxcbiAgICAgIH0pLFxuICAgICAgdGhpcy5rOHNBcGlcbiAgICAgICAgLndhdGNoR2xvYmFsUmVzb3VyY2U8Q29uZmlnTWFwPih7XG4gICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgICBuYW1lOiBQTEFURk9STV9PUFNfTU9ERSxcbiAgICAgICAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAucGlwZShza2lwRXJyb3IoeyBkYXRhOiB7fSB9IGFzIENvbmZpZ01hcCkpLFxuICAgICAgdGhpcy50cmFuc2xhdGUubG9jYWxlJCxcbiAgICBdKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAuc3Vic2NyaWJlKChbaXNQbGF0Zm9ybVJ1bGUsIGNvbmZpZ10pID0+IHtcbiAgICAgICAgY29uc3QgZW5hYmxlID0gY29uZmlnPy5kYXRhPy5lbmFibGVkID09PSAndHJ1ZSc7XG4gICAgICAgIGlmIChlbmFibGUpIHtcbiAgICAgICAgICBpZiAoaXNQbGF0Zm9ybVJ1bGUpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWNlT3Blbi5lbWl0KHtcbiAgICAgICAgICAgICAgaWQ6IHRoaXMubm90aWNlSWQsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlLmdldCgnbWFpbnRlbmFuY2VfbW9kZV90b3Bfbm90aWNlX21zZycpLFxuICAgICAgICAgICAgICBzdWZmaXg6IHRoaXMubWFpbnRlbmFuY2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hbm5vdW5jZW1lbnQkLm5leHQoY29uZmlnPy5kYXRhPy5hbm5vdW5jZW1lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzQ29uZmlybSkge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1xuICAgICAgICAgICAgICAuY29uZmlybSh7XG4gICAgICAgICAgICAgICAgY29uZmlybVR5cGU6IENvbmZpcm1UeXBlLldhcm5pbmcsXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMudHJhbnNsYXRlLmdldCgncGxhdGZvcm1fbWFpbnRlbmFuY2VfYW5ub3VuY2VtZW50JyksXG4gICAgICAgICAgICAgICAgY29udGVudDogdGhpcy5hbm5vdW5jZW1lbnQsXG4gICAgICAgICAgICAgICAgY29uZmlybVRleHQ6IHRoaXMudHJhbnNsYXRlLmdldCgnbG9nb3V0JyksXG4gICAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuYXV0aC5sb2dvdXRXaXRoQXVkaXQoKTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ29uZmlybSA9IGZhbHNlO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuaGFzQ29uZmlybSA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubm90aWNlQ2xvc2UuZW1pdCh0aGlzLm5vdGljZUlkKTtcbiAgICAgICAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxufVxuIl19