@alauda-fe/storage 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/alauda-fe-storage.mjs +5 -0
- package/esm2022/index.mjs +23 -0
- package/esm2022/lib/components/pvc-delete-dialog/component.mjs +292 -0
- package/esm2022/lib/components/pvc-expand-capacity-dialog/component.mjs +193 -0
- package/esm2022/lib/components/pvc-form/component.mjs +674 -0
- package/esm2022/lib/components/rebuild-volume-dialog/component.mjs +251 -0
- package/esm2022/lib/components/source-link/component.mjs +81 -0
- package/esm2022/lib/components/spec-form/component.mjs +464 -0
- package/esm2022/lib/components/storage-feature-tags/component.mjs +146 -0
- package/esm2022/lib/components/storageclass-select/component.mjs +179 -0
- package/esm2022/lib/pipes/actual-capacity.pipe.mjs +17 -0
- package/esm2022/lib/services/common-util.service.mjs +163 -0
- package/esm2022/lib/services/pvc-util.service.mjs +416 -0
- package/esm2022/lib/types/commons.mjs +75 -0
- package/esm2022/lib/types/internal.mjs +7 -0
- package/esm2022/lib/types/k8s.mjs +2 -0
- package/esm2022/lib/types/resource-definition.mjs +13 -0
- package/esm2022/lib/types/resource-exports.mjs +8 -0
- package/esm2022/lib/types/resource-internals.mjs +2 -0
- package/esm2022/lib/utils/constants.mjs +202 -0
- package/esm2022/lib/utils/resource-exports.mjs +65 -0
- package/esm2022/lib/utils/util.mjs +132 -0
- package/index.d.ts +17 -0
- package/lib/components/pvc-delete-dialog/component.d.ts +33 -0
- package/lib/components/pvc-expand-capacity-dialog/component.d.ts +36 -0
- package/lib/components/pvc-form/component.d.ts +106 -0
- package/lib/components/rebuild-volume-dialog/component.d.ts +28 -0
- package/lib/components/source-link/component.d.ts +17 -0
- package/lib/components/spec-form/component.d.ts +71 -0
- package/lib/components/storage-feature-tags/component.d.ts +25 -0
- package/lib/components/storageclass-select/component.d.ts +26 -0
- package/lib/pipes/actual-capacity.pipe.d.ts +8 -0
- package/lib/services/common-util.service.d.ts +48 -0
- package/lib/services/pvc-util.service.d.ts +130 -0
- package/lib/types/commons.d.ts +85 -0
- package/lib/types/internal.d.ts +4 -0
- package/lib/types/k8s.d.ts +105 -0
- package/lib/types/resource-definition.d.ts +18 -0
- package/lib/types/resource-exports.d.ts +16 -0
- package/lib/types/resource-internals.d.ts +20 -0
- package/lib/utils/constants.d.ts +37 -0
- package/lib/utils/resource-exports.d.ts +12 -0
- package/lib/utils/util.d.ts +19 -0
- package/package.json +38 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhdWRhLWZlLXN0b3JhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2FsYXVkYS1mZS1zdG9yYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// components
|
|
2
|
+
export { DeletePvcDialogComponent } from './lib/components/pvc-delete-dialog/component';
|
|
3
|
+
export { PvcExpandCapacityDialogComponent } from './lib/components/pvc-expand-capacity-dialog/component';
|
|
4
|
+
export { PersistentVolumeClaimFormComponent } from './lib/components/pvc-form/component';
|
|
5
|
+
export { RebuildVolumeDialogComponent } from './lib/components/rebuild-volume-dialog/component';
|
|
6
|
+
export { ResourceSpecFormComponent } from './lib/components/spec-form/component';
|
|
7
|
+
export { StorageFeatureTagsComponent } from './lib/components/storage-feature-tags/component';
|
|
8
|
+
export { StorageClassSelectComponent } from './lib/components/storageclass-select/component';
|
|
9
|
+
// utils
|
|
10
|
+
export * from './lib/utils/constants';
|
|
11
|
+
export * from './lib/utils/resource-exports';
|
|
12
|
+
export * from './lib/utils/util';
|
|
13
|
+
// types
|
|
14
|
+
export * from './lib/types/commons';
|
|
15
|
+
export * from './lib/types/k8s';
|
|
16
|
+
export * from './lib/types/resource-definition';
|
|
17
|
+
export * from './lib/types/resource-exports';
|
|
18
|
+
// pipes
|
|
19
|
+
export * from './lib/pipes/actual-capacity.pipe';
|
|
20
|
+
// services
|
|
21
|
+
export { StorageCommonUtilService, } from './lib/services/common-util.service';
|
|
22
|
+
export * from './lib/services/pvc-util.service';
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7QUFDYixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNoRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNqRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUM3RixRQUFRO0FBQ1IsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsUUFBUTtBQUNSLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsOEJBQThCLENBQUM7QUFFN0MsUUFBUTtBQUNSLGNBQWMsa0NBQWtDLENBQUM7QUFFakQsV0FBVztBQUNYLE9BQU8sRUFDTCx3QkFBd0IsR0FFekIsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1QyxjQUFjLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50c1xuZXhwb3J0IHsgRGVsZXRlUHZjRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wdmMtZGVsZXRlLWRpYWxvZy9jb21wb25lbnQnO1xuZXhwb3J0IHsgUHZjRXhwYW5kQ2FwYWNpdHlEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3B2Yy1leHBhbmQtY2FwYWNpdHktZGlhbG9nL2NvbXBvbmVudCc7XG5leHBvcnQgeyBQZXJzaXN0ZW50Vm9sdW1lQ2xhaW1Gb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9wdmMtZm9ybS9jb21wb25lbnQnO1xuZXhwb3J0IHsgUmVidWlsZFZvbHVtZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmVidWlsZC12b2x1bWUtZGlhbG9nL2NvbXBvbmVudCc7XG5leHBvcnQgeyBSZXNvdXJjZVNwZWNGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi9saWIvY29tcG9uZW50cy9zcGVjLWZvcm0vY29tcG9uZW50JztcbmV4cG9ydCB7IFN0b3JhZ2VGZWF0dXJlVGFnc0NvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3RvcmFnZS1mZWF0dXJlLXRhZ3MvY29tcG9uZW50JztcbmV4cG9ydCB7IFN0b3JhZ2VDbGFzc1NlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3RvcmFnZWNsYXNzLXNlbGVjdC9jb21wb25lbnQnO1xuLy8gdXRpbHNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91dGlscy9yZXNvdXJjZS1leHBvcnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzL3V0aWwnO1xuLy8gdHlwZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL2NvbW1vbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvazhzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzL3Jlc291cmNlLWRlZmluaXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHlwZXMvcmVzb3VyY2UtZXhwb3J0cyc7XG5cbi8vIHBpcGVzXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waXBlcy9hY3R1YWwtY2FwYWNpdHkucGlwZSc7XG5cbi8vIHNlcnZpY2VzXG5leHBvcnQge1xuICBTdG9yYWdlQ29tbW9uVXRpbFNlcnZpY2UsXG4gIFN0b3JhZ2VTZWxlY3RPcHRpb24sXG59IGZyb20gJy4vbGliL3NlcnZpY2VzL2NvbW1vbi11dGlsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcHZjLXV0aWwuc2VydmljZSc7XG4iXX0=
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { ButtonModule, DIALOG_DATA, DialogModule, DialogRef, IconModule, InputModule, MessageService, TableModule, TooltipModule, } from '@alauda/ui';
|
|
2
|
+
import { E2eAttributeBindingDirective, EffectDirectiveModule, FieldNotAvailablePipe, K8S_UTIL_PIPES_MODULE, K8sApiService, K8sUtilService, PurePipe, RESOURCE_TYPES, TRANSLATE_MODULE, TranslateService, matchLabelsToString, publishRef, skipError, } from '@alauda-fe/common';
|
|
3
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
4
|
+
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
|
|
5
|
+
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { BehaviorSubject, finalize, forkJoin, map, of, switchMap } from 'rxjs';
|
|
7
|
+
import { PVCUtilService } from '../../services/pvc-util.service';
|
|
8
|
+
import { STORAGE_RESOURCE_TYPES } from '../../types/resource-definition';
|
|
9
|
+
import { SourceLinkComponent } from '../source-link/component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@alauda-fe/common";
|
|
12
|
+
import * as i2 from "../../services/pvc-util.service";
|
|
13
|
+
import * as i3 from "@alauda/ui";
|
|
14
|
+
import * as i4 from "@angular/forms";
|
|
15
|
+
const _c0 = a0 => ({ name: a0 });
|
|
16
|
+
const _c1 = (a0, a1) => ({ name: a0, length: a1 });
|
|
17
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_cell_8_Template(rf, ctx) { if (rf & 1) {
|
|
18
|
+
i0.ɵɵelementStart(0, "aui-table-header-cell", 18);
|
|
19
|
+
i0.ɵɵtext(1);
|
|
20
|
+
i0.ɵɵpipe(2, "translate");
|
|
21
|
+
i0.ɵɵelementEnd();
|
|
22
|
+
} if (rf & 2) {
|
|
23
|
+
i0.ɵɵadvance();
|
|
24
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "resource_name"), " ");
|
|
25
|
+
} }
|
|
26
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_9_Template(rf, ctx) { if (rf & 1) {
|
|
27
|
+
i0.ɵɵelementStart(0, "aui-table-cell")(1, "span", 19);
|
|
28
|
+
i0.ɵɵpipe(2, "aclName");
|
|
29
|
+
i0.ɵɵtext(3);
|
|
30
|
+
i0.ɵɵpipe(4, "aclName");
|
|
31
|
+
i0.ɵɵelementEnd()();
|
|
32
|
+
} if (rf & 2) {
|
|
33
|
+
const item_r1 = ctx.$implicit;
|
|
34
|
+
i0.ɵɵadvance();
|
|
35
|
+
i0.ɵɵproperty("auiTooltip", i0.ɵɵpipeBind1(2, 2, item_r1));
|
|
36
|
+
i0.ɵɵadvance(2);
|
|
37
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 4, item_r1), " ");
|
|
38
|
+
} }
|
|
39
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_cell_11_Template(rf, ctx) { if (rf & 1) {
|
|
40
|
+
i0.ɵɵelementStart(0, "aui-table-header-cell");
|
|
41
|
+
i0.ɵɵtext(1);
|
|
42
|
+
i0.ɵɵpipe(2, "translate");
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
} if (rf & 2) {
|
|
45
|
+
i0.ɵɵadvance();
|
|
46
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "type"), " ");
|
|
47
|
+
} }
|
|
48
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_12_Template(rf, ctx) { if (rf & 1) {
|
|
49
|
+
i0.ɵɵelementStart(0, "aui-table-cell");
|
|
50
|
+
i0.ɵɵtext(1);
|
|
51
|
+
i0.ɵɵpipe(2, "translate");
|
|
52
|
+
i0.ɵɵelementEnd();
|
|
53
|
+
} if (rf & 2) {
|
|
54
|
+
const item_r2 = ctx.$implicit;
|
|
55
|
+
i0.ɵɵadvance();
|
|
56
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, item_r2.kind === "VolumeSnapshot" ? "storage.snapshot" : "pod"), " ");
|
|
57
|
+
} }
|
|
58
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_cell_14_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
i0.ɵɵelementStart(0, "aui-table-header-cell");
|
|
60
|
+
i0.ɵɵtext(1);
|
|
61
|
+
i0.ɵɵpipe(2, "translate");
|
|
62
|
+
i0.ɵɵelementEnd();
|
|
63
|
+
} if (rf & 2) {
|
|
64
|
+
i0.ɵɵadvance();
|
|
65
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "source"), " ");
|
|
66
|
+
} }
|
|
67
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_15_acl_source_link_1_Template(rf, ctx) { if (rf & 1) {
|
|
68
|
+
i0.ɵɵelement(0, "acl-source-link", 21);
|
|
69
|
+
i0.ɵɵpipe(1, "pure");
|
|
70
|
+
i0.ɵɵpipe(2, "async");
|
|
71
|
+
} if (rf & 2) {
|
|
72
|
+
const item_r3 = i0.ɵɵnextContext().$implicit;
|
|
73
|
+
const ctx_r3 = i0.ɵɵnextContext(3);
|
|
74
|
+
i0.ɵɵproperty("sourceLink", i0.ɵɵpipeBind1(2, 6, i0.ɵɵpipeBind4(1, 1, item_r3, ctx_r3.pvcUtil.getSource$, ctx_r3.modalData.cluster, ctx_r3.modalData.namespace)));
|
|
75
|
+
} }
|
|
76
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_15_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
+
i0.ɵɵtext(0);
|
|
78
|
+
i0.ɵɵpipe(1, "aclFieldNotAvailable");
|
|
79
|
+
} if (rf & 2) {
|
|
80
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, null), " ");
|
|
81
|
+
} }
|
|
82
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_15_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
i0.ɵɵelementStart(0, "aui-table-cell");
|
|
84
|
+
i0.ɵɵtemplate(1, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_15_acl_source_link_1_Template, 3, 8, "acl-source-link", 20)(2, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_15_ng_template_2_Template, 2, 3, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const item_r3 = ctx.$implicit;
|
|
88
|
+
const empty_r5 = i0.ɵɵreference(3);
|
|
89
|
+
i0.ɵɵadvance();
|
|
90
|
+
i0.ɵɵproperty("ngIf", item_r3.kind !== "VolumeSnapshot")("ngIfElse", empty_r5);
|
|
91
|
+
} }
|
|
92
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_row_16_Template(rf, ctx) { if (rf & 1) {
|
|
93
|
+
i0.ɵɵelement(0, "aui-table-header-row");
|
|
94
|
+
} }
|
|
95
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_row_17_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
i0.ɵɵelement(0, "aui-table-row");
|
|
97
|
+
} }
|
|
98
|
+
function DeletePvcDialogComponent_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementContainerStart(0);
|
|
100
|
+
i0.ɵɵelementStart(1, "p", 7);
|
|
101
|
+
i0.ɵɵtext(2);
|
|
102
|
+
i0.ɵɵpipe(3, "aclName");
|
|
103
|
+
i0.ɵɵpipe(4, "translate");
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵelementStart(5, "div", 8)(6, "aui-table", 9);
|
|
106
|
+
i0.ɵɵelementContainerStart(7, 10);
|
|
107
|
+
i0.ɵɵtemplate(8, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_cell_8_Template, 3, 3, "aui-table-header-cell", 11)(9, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_9_Template, 5, 6, "aui-table-cell", 12);
|
|
108
|
+
i0.ɵɵelementContainerEnd();
|
|
109
|
+
i0.ɵɵelementContainerStart(10, 13);
|
|
110
|
+
i0.ɵɵtemplate(11, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_cell_11_Template, 3, 3, "aui-table-header-cell", 14)(12, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_12_Template, 3, 3, "aui-table-cell", 12);
|
|
111
|
+
i0.ɵɵelementContainerEnd();
|
|
112
|
+
i0.ɵɵelementContainerStart(13, 15);
|
|
113
|
+
i0.ɵɵtemplate(14, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_cell_14_Template, 3, 3, "aui-table-header-cell", 14)(15, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_cell_15_Template, 4, 2, "aui-table-cell", 12);
|
|
114
|
+
i0.ɵɵelementContainerEnd();
|
|
115
|
+
i0.ɵɵtemplate(16, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_header_row_16_Template, 1, 0, "aui-table-header-row", 16)(17, DeletePvcDialogComponent_ng_container_6_ng_container_1_aui_table_row_17_Template, 1, 0, "aui-table-row", 17);
|
|
116
|
+
i0.ɵɵelementEnd()();
|
|
117
|
+
i0.ɵɵelementContainerEnd();
|
|
118
|
+
} if (rf & 2) {
|
|
119
|
+
const list_r6 = i0.ɵɵnextContext().declare;
|
|
120
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
121
|
+
i0.ɵɵadvance(2);
|
|
122
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 7, "storage.pvc_can_delete_content", i0.ɵɵpureFunction2(10, _c1, i0.ɵɵpipeBind1(3, 5, ctx_r3.modalData.pvc), list_r6.length)), " ");
|
|
123
|
+
i0.ɵɵadvance(4);
|
|
124
|
+
i0.ɵɵproperty("dataSource", list_r6);
|
|
125
|
+
i0.ɵɵadvance(10);
|
|
126
|
+
i0.ɵɵproperty("auiTableHeaderRowDef", ctx_r3.COLUMNS)("auiTableHeaderRowDefSticky", true);
|
|
127
|
+
i0.ɵɵadvance();
|
|
128
|
+
i0.ɵɵproperty("auiTableRowDefColumns", ctx_r3.COLUMNS);
|
|
129
|
+
} }
|
|
130
|
+
function DeletePvcDialogComponent_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
131
|
+
i0.ɵɵelementContainerStart(0);
|
|
132
|
+
i0.ɵɵtemplate(1, DeletePvcDialogComponent_ng_container_6_ng_container_1_Template, 18, 13, "ng-container", 6);
|
|
133
|
+
i0.ɵɵelementContainerEnd();
|
|
134
|
+
} if (rf & 2) {
|
|
135
|
+
const list_r6 = ctx.declare;
|
|
136
|
+
i0.ɵɵnextContext();
|
|
137
|
+
const deleteTemplate_r7 = i0.ɵɵreference(9);
|
|
138
|
+
i0.ɵɵadvance();
|
|
139
|
+
i0.ɵɵproperty("ngIf", list_r6 == null ? null : list_r6.length)("ngIfElse", deleteTemplate_r7);
|
|
140
|
+
} }
|
|
141
|
+
function DeletePvcDialogComponent_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
142
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
143
|
+
i0.ɵɵelementStart(0, "p", 22);
|
|
144
|
+
i0.ɵɵtext(1);
|
|
145
|
+
i0.ɵɵpipe(2, "aclName");
|
|
146
|
+
i0.ɵɵpipe(3, "translate");
|
|
147
|
+
i0.ɵɵelementEnd();
|
|
148
|
+
i0.ɵɵelementStart(4, "div", 23);
|
|
149
|
+
i0.ɵɵtext(5);
|
|
150
|
+
i0.ɵɵpipe(6, "translate");
|
|
151
|
+
i0.ɵɵelementStart(7, "span", 24);
|
|
152
|
+
i0.ɵɵtext(8);
|
|
153
|
+
i0.ɵɵpipe(9, "aclName");
|
|
154
|
+
i0.ɵɵelementEnd();
|
|
155
|
+
i0.ɵɵtext(10);
|
|
156
|
+
i0.ɵɵpipe(11, "translate");
|
|
157
|
+
i0.ɵɵelementEnd();
|
|
158
|
+
i0.ɵɵelementStart(12, "input", 25);
|
|
159
|
+
i0.ɵɵtwoWayListener("ngModelChange", function DeletePvcDialogComponent_ng_template_8_Template_input_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r3 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r3.inputValue, $event) || (ctx_r3.inputValue = $event); return i0.ɵɵresetView($event); });
|
|
160
|
+
i0.ɵɵelementEnd();
|
|
161
|
+
} if (rf & 2) {
|
|
162
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
163
|
+
i0.ɵɵadvance();
|
|
164
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(3, 7, "storage.delete_pvc_content", i0.ɵɵpureFunction1(16, _c0, i0.ɵɵpipeBind1(2, 5, ctx_r3.modalData.pvc))), " ");
|
|
165
|
+
i0.ɵɵadvance(4);
|
|
166
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 10, "please_enter_extra"), " ");
|
|
167
|
+
i0.ɵɵadvance(3);
|
|
168
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(9, 12, ctx_r3.modalData.pvc), " ");
|
|
169
|
+
i0.ɵɵadvance(2);
|
|
170
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 14, "extra_determine_delete"), " ");
|
|
171
|
+
i0.ɵɵadvance(2);
|
|
172
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r3.inputValue);
|
|
173
|
+
} }
|
|
174
|
+
function DeletePvcDialogComponent_button_12_Template(rf, ctx) { if (rf & 1) {
|
|
175
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
176
|
+
i0.ɵɵelementStart(0, "button", 26);
|
|
177
|
+
i0.ɵɵpipe(1, "async");
|
|
178
|
+
i0.ɵɵpipe(2, "aclName");
|
|
179
|
+
i0.ɵɵlistener("click", function DeletePvcDialogComponent_button_12_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.confirm()); });
|
|
180
|
+
i0.ɵɵtext(3);
|
|
181
|
+
i0.ɵɵpipe(4, "translate");
|
|
182
|
+
i0.ɵɵelementEnd();
|
|
183
|
+
} if (rf & 2) {
|
|
184
|
+
const ctx_r3 = i0.ɵɵnextContext();
|
|
185
|
+
i0.ɵɵproperty("loading", i0.ɵɵpipeBind1(1, 3, ctx_r3.submitting$$))("disabled", ctx_r3.inputValue !== i0.ɵɵpipeBind1(2, 5, ctx_r3.modalData.pvc));
|
|
186
|
+
i0.ɵɵadvance(3);
|
|
187
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 7, "delete"), " ");
|
|
188
|
+
} }
|
|
189
|
+
const COLUMNS = ['name', 'type', 'source'];
|
|
190
|
+
export class DeletePvcDialogComponent {
|
|
191
|
+
constructor(modalData, k8sApi, k8sUtil, pvcUtil, dialogRef, message, translate) {
|
|
192
|
+
this.modalData = modalData;
|
|
193
|
+
this.k8sApi = k8sApi;
|
|
194
|
+
this.k8sUtil = k8sUtil;
|
|
195
|
+
this.pvcUtil = pvcUtil;
|
|
196
|
+
this.dialogRef = dialogRef;
|
|
197
|
+
this.message = message;
|
|
198
|
+
this.translate = translate;
|
|
199
|
+
this.COLUMNS = COLUMNS;
|
|
200
|
+
this.inputValue = '';
|
|
201
|
+
this.submitting$$ = new BehaviorSubject(false);
|
|
202
|
+
this.pods$ = of(this.modalData).pipe(switchMap(({ cluster, namespace, pvc }) => this.pvcUtil.getRelatedPods(cluster, namespace, pvc.metadata.name)), publishRef());
|
|
203
|
+
this.snapshots$ = of(this.modalData).pipe(switchMap(({ cluster, namespace, pvc }) => this.k8sApi.getResourceList({
|
|
204
|
+
type: STORAGE_RESOURCE_TYPES.VOLUME_SNAPSHOT,
|
|
205
|
+
cluster,
|
|
206
|
+
namespace,
|
|
207
|
+
queryParams: {
|
|
208
|
+
limit: '0',
|
|
209
|
+
labelSelector: matchLabelsToString({
|
|
210
|
+
[this.k8sUtil.normalizeType('sourcepvc', 'snapshot')]: this.k8sUtil.getName(pvc),
|
|
211
|
+
}),
|
|
212
|
+
},
|
|
213
|
+
})), map(res => res.items), skipError([]), publishRef());
|
|
214
|
+
this.list$ = forkJoin([this.pods$, this.snapshots$]).pipe(map(([pods, snapshots]) => [...(pods ?? []), ...snapshots]));
|
|
215
|
+
}
|
|
216
|
+
confirm() {
|
|
217
|
+
this.submitting$$.next(true);
|
|
218
|
+
this.k8sApi
|
|
219
|
+
.deleteResource({
|
|
220
|
+
type: RESOURCE_TYPES.PERSISTENT_VOLUME_CLAIM,
|
|
221
|
+
cluster: this.modalData.cluster,
|
|
222
|
+
resource: this.modalData.pvc,
|
|
223
|
+
})
|
|
224
|
+
.pipe(finalize(() => this.submitting$$.next(false)))
|
|
225
|
+
.subscribe(() => {
|
|
226
|
+
this.message.success(this.translate.get('pvc_delete_success'));
|
|
227
|
+
this.dialogRef.close(true);
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
static { this.ɵfac = function DeletePvcDialogComponent_Factory(t) { return new (t || DeletePvcDialogComponent)(i0.ɵɵdirectiveInject(DIALOG_DATA), i0.ɵɵdirectiveInject(i1.K8sApiService), i0.ɵɵdirectiveInject(i1.K8sUtilService), i0.ɵɵdirectiveInject(i2.PVCUtilService), i0.ɵɵdirectiveInject(i3.DialogRef), i0.ɵɵdirectiveInject(i3.MessageService), i0.ɵɵdirectiveInject(i1.TranslateService)); }; }
|
|
231
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DeletePvcDialogComponent, selectors: [["ng-component"]], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 17, vars: 17, consts: [["deleteTemplate", ""], ["empty", ""], ["icon", "exclamation_triangle_s", "background", "triangle", "size", "22", 1, "header-icon"], [4, "declare"], ["aui-button", "danger", 3, "loading", "disabled", "click", 4, "ngIf"], ["aui-button", "", "auiDialogClose", ""], [4, "ngIf", "ngIfElse"], [1, "tw-mb-16"], ["auiTableScrollWrapper", "400px"], ["auiTableScrollable", "", 3, "dataSource"], ["auiTableColumnDef", "name"], ["sticky", "", 4, "auiTableHeaderCellDef"], [4, "auiTableCellDef"], ["auiTableColumnDef", "type"], [4, "auiTableHeaderCellDef"], ["auiTableColumnDef", "source"], [4, "auiTableHeaderRowDef", "auiTableHeaderRowDefSticky"], [4, "auiTableRowDef", "auiTableRowDefColumns"], ["sticky", ""], [3, "auiTooltip"], [3, "sourceLink", 4, "ngIf", "ngIfElse"], [3, "sourceLink"], [1, "tw-mt-0", "tw-mb-12", "tw-text-main-text"], [1, "tw-mb-4", "tw-text-main-text"], [1, "tw-text-red"], ["aui-input", "", "trim", "", 3, "ngModelChange", "ngModel"], ["aui-button", "danger", 3, "click", "loading", "disabled"]], template: function DeletePvcDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
232
|
+
i0.ɵɵelementStart(0, "aui-dialog-header");
|
|
233
|
+
i0.ɵɵelement(1, "aui-icon", 2);
|
|
234
|
+
i0.ɵɵtext(2);
|
|
235
|
+
i0.ɵɵpipe(3, "aclName");
|
|
236
|
+
i0.ɵɵpipe(4, "translate");
|
|
237
|
+
i0.ɵɵelementEnd();
|
|
238
|
+
i0.ɵɵelementStart(5, "aui-dialog-content");
|
|
239
|
+
i0.ɵɵtemplate(6, DeletePvcDialogComponent_ng_container_6_Template, 2, 2, "ng-container", 3);
|
|
240
|
+
i0.ɵɵpipe(7, "async");
|
|
241
|
+
i0.ɵɵtemplate(8, DeletePvcDialogComponent_ng_template_8_Template, 13, 18, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
|
|
242
|
+
i0.ɵɵelementEnd();
|
|
243
|
+
i0.ɵɵelementStart(10, "aui-dialog-footer")(11, "div");
|
|
244
|
+
i0.ɵɵtemplate(12, DeletePvcDialogComponent_button_12_Template, 5, 9, "button", 4);
|
|
245
|
+
i0.ɵɵpipe(13, "async");
|
|
246
|
+
i0.ɵɵelementStart(14, "button", 5);
|
|
247
|
+
i0.ɵɵtext(15);
|
|
248
|
+
i0.ɵɵpipe(16, "translate");
|
|
249
|
+
i0.ɵɵelementEnd()()();
|
|
250
|
+
} if (rf & 2) {
|
|
251
|
+
let tmp_3_0;
|
|
252
|
+
i0.ɵɵadvance(2);
|
|
253
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(4, 6, "storage.delete_pvc_title", i0.ɵɵpureFunction1(15, _c0, i0.ɵɵpipeBind1(3, 4, ctx.modalData.pvc))), "\n");
|
|
254
|
+
i0.ɵɵadvance(4);
|
|
255
|
+
i0.ɵɵproperty("declare", i0.ɵɵpipeBind1(7, 9, ctx.list$));
|
|
256
|
+
i0.ɵɵadvance(6);
|
|
257
|
+
i0.ɵɵproperty("ngIf", !((tmp_3_0 = i0.ɵɵpipeBind1(13, 11, ctx.list$)) == null ? null : tmp_3_0.length));
|
|
258
|
+
i0.ɵɵadvance(3);
|
|
259
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(16, 13, "cancel"), " ");
|
|
260
|
+
} }, dependencies: [AsyncPipe,
|
|
261
|
+
TableModule, i3.TableComponent, i3.TableRowComponent, i3.TableHeaderRowComponent, i3.TableCellDirective, i3.TableCellDefDirective, i3.TableHeaderCellDirective, i3.TableRowDefDirective, i3.TableHeaderRowDefDirective, i3.TableHeaderCellDefDirective, i3.TableColumnDefDirective, i3.TableScrollWrapperDirective, i3.TableScrollableDirective, NgIf,
|
|
262
|
+
PurePipe,
|
|
263
|
+
DialogModule, i3.DialogHeaderComponent, i3.DialogContentComponent, i3.DialogFooterComponent, i3.DialogCloseDirective, IconModule, i3.IconComponent, TooltipModule, i3.TooltipDirective, InputModule, i3.InputComponent, FieldNotAvailablePipe, i1.K8sNamePipe, i1.TranslatePipe, SourceLinkComponent,
|
|
264
|
+
FormsModule, i4.DefaultValueAccessor, i4.NgControlStatus, i4.NgModel, ButtonModule, i3.ButtonComponent, E2eAttributeBindingDirective,
|
|
265
|
+
EffectDirectiveModule, i1.TrimDirective], encapsulation: 2, changeDetection: 0 }); }
|
|
266
|
+
}
|
|
267
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DeletePvcDialogComponent, [{
|
|
268
|
+
type: Component,
|
|
269
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
270
|
+
AsyncPipe,
|
|
271
|
+
TableModule,
|
|
272
|
+
NgIf,
|
|
273
|
+
PurePipe,
|
|
274
|
+
DialogModule,
|
|
275
|
+
IconModule,
|
|
276
|
+
TooltipModule,
|
|
277
|
+
InputModule,
|
|
278
|
+
FieldNotAvailablePipe,
|
|
279
|
+
K8S_UTIL_PIPES_MODULE,
|
|
280
|
+
TRANSLATE_MODULE,
|
|
281
|
+
SourceLinkComponent,
|
|
282
|
+
FormsModule,
|
|
283
|
+
ButtonModule,
|
|
284
|
+
E2eAttributeBindingDirective,
|
|
285
|
+
EffectDirectiveModule,
|
|
286
|
+
], template: "<aui-dialog-header>\n <aui-icon\n class=\"header-icon\"\n icon=\"exclamation_triangle_s\"\n background=\"triangle\"\n size=\"22\"\n ></aui-icon>\n {{\n 'storage.delete_pvc_title' | translate: { name: modalData.pvc | aclName }\n }}\n</aui-dialog-header>\n\n<aui-dialog-content>\n <ng-container *declare=\"list$ | async as list\">\n <ng-container *ngIf=\"list?.length; else deleteTemplate\">\n <p class=\"tw-mb-16\">\n {{\n 'storage.pvc_can_delete_content'\n | translate: { name: modalData.pvc | aclName, length: list.length }\n }}\n </p>\n <div auiTableScrollWrapper=\"400px\">\n <aui-table\n auiTableScrollable\n [dataSource]=\"list\"\n >\n <ng-container auiTableColumnDef=\"name\">\n <aui-table-header-cell\n sticky\n *auiTableHeaderCellDef\n >\n {{ 'resource_name' | translate }}\n </aui-table-header-cell>\n <aui-table-cell *auiTableCellDef=\"let item\">\n <span [auiTooltip]=\"item | aclName\">\n {{ item | aclName }}\n </span>\n </aui-table-cell>\n </ng-container>\n <ng-container auiTableColumnDef=\"type\">\n <aui-table-header-cell *auiTableHeaderCellDef>\n {{ 'type' | translate }}\n </aui-table-header-cell>\n <aui-table-cell *auiTableCellDef=\"let item\">\n {{\n (item.kind === 'VolumeSnapshot' ? 'storage.snapshot' : 'pod')\n | translate\n }}\n </aui-table-cell>\n </ng-container>\n <ng-container auiTableColumnDef=\"source\">\n <aui-table-header-cell *auiTableHeaderCellDef>\n {{ 'source' | translate }}\n </aui-table-header-cell>\n <aui-table-cell *auiTableCellDef=\"let item\">\n <acl-source-link\n *ngIf=\"item.kind !== 'VolumeSnapshot'; else empty\"\n [sourceLink]=\"\n item\n | pure\n : pvcUtil.getSource$\n : modalData.cluster\n : modalData.namespace\n | async\n \"\n ></acl-source-link>\n <ng-template #empty>\n {{ null | aclFieldNotAvailable }}\n </ng-template>\n </aui-table-cell>\n </ng-container>\n <aui-table-header-row\n *auiTableHeaderRowDef=\"COLUMNS; sticky: true\"\n ></aui-table-header-row>\n <aui-table-row\n *auiTableRowDef=\"let row; columns: COLUMNS\"\n ></aui-table-row>\n </aui-table>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #deleteTemplate>\n <p class=\"tw-mt-0 tw-mb-12 tw-text-main-text\">\n {{\n 'storage.delete_pvc_content'\n | translate: { name: modalData.pvc | aclName }\n }}\n </p>\n <div class=\"tw-mb-4 tw-text-main-text\">\n {{ 'please_enter_extra' | translate }}\n <span class=\"tw-text-red\">\n {{ modalData.pvc | aclName }}\n </span>\n {{ 'extra_determine_delete' | translate }}\n </div>\n <input\n aui-input\n [(ngModel)]=\"inputValue\"\n trim\n />\n </ng-template>\n</aui-dialog-content>\n\n<aui-dialog-footer>\n <div>\n <button\n *ngIf=\"!(list$ | async)?.length\"\n aui-button=\"danger\"\n [loading]=\"submitting$$ | async\"\n [disabled]=\"inputValue !== (modalData.pvc | aclName)\"\n (click)=\"confirm()\"\n >\n {{ 'delete' | translate }}\n </button>\n <button\n aui-button\n auiDialogClose\n >\n {{ 'cancel' | translate }}\n </button>\n </div>\n</aui-dialog-footer>\n" }]
|
|
287
|
+
}], () => [{ type: undefined, decorators: [{
|
|
288
|
+
type: Inject,
|
|
289
|
+
args: [DIALOG_DATA]
|
|
290
|
+
}] }, { type: i1.K8sApiService }, { type: i1.K8sUtilService }, { type: i2.PVCUtilService }, { type: i3.DialogRef }, { type: i3.MessageService }, { type: i1.TranslateService }], null); })();
|
|
291
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DeletePvcDialogComponent, { className: "DeletePvcDialogComponent", filePath: "lib/components/pvc-delete-dialog/component.ts", lineNumber: 64 }); })();
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvY29tcG9uZW50cy9wdmMtZGVsZXRlLWRpYWxvZy9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi9jb21wb25lbnRzL3B2Yy1kZWxldGUtZGlhbG9nL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLGNBQWMsRUFDZCxXQUFXLEVBQ1gsYUFBYSxHQUNkLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFDTCw0QkFBNEIsRUFDNUIscUJBQXFCLEVBQ3JCLHFCQUFxQixFQUNyQixxQkFBcUIsRUFDckIsYUFBYSxFQUNiLGNBQWMsRUFHZCxRQUFRLEVBQ1IsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixTQUFTLEdBQ1YsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFp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d0pBR0Y7WUFHaUIsZUFBdUI7WUFBdkIseURBQXVCO1lBNkZqQyxlQUE4QjtZQUE5Qix1R0FBOEI7WUFZL0IsZUFDRjtZQURFLGlFQUNGOzRCRDFFQSxTQUFTO1lBQ1QsV0FBVyxzVUFDWCxJQUFJO1lBQ0osUUFBUTtZQUNSLFlBQVksMEdBQ1osVUFBVSxvQkFDVixhQUFhLHVCQUNiLFdBQVcscUJBQ1gscUJBQXFCLG9DQUdyQixtQkFBbUI7WUFDbkIsV0FBVywyREFDWCxZQUFZLHNCQUNaLDRCQUE0QjtZQUM1QixxQkFBcUI7O2lGQUdaLHdCQUF3QjtjQXZCcEMsU0FBUzs2QkFDSSxJQUFJLG1CQUVDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEM7b0JBQ1AsU0FBUztvQkFDVCxXQUFXO29CQUNYLElBQUk7b0JBQ0osUUFBUTtvQkFDUixZQUFZO29CQUNaLFVBQVU7b0JBQ1YsYUFBYTtvQkFDYixXQUFXO29CQUNYLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQixnQkFBZ0I7b0JBQ2hCLG1CQUFtQjtvQkFDbkIsV0FBVztvQkFDWCxZQUFZO29CQUNaLDRCQUE0QjtvQkFDNUIscUJBQXFCO2lCQUN0Qjs7c0JBMkNFLE1BQU07dUJBQUMsV0FBVzs7a0ZBekNWLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRElBTE9HX0RBVEEsXG4gIERpYWxvZ01vZHVsZSxcbiAgRGlhbG9nUmVmLFxuICBJY29uTW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgTWVzc2FnZVNlcnZpY2UsXG4gIFRhYmxlTW9kdWxlLFxuICBUb29sdGlwTW9kdWxlLFxufSBmcm9tICdAYWxhdWRhL3VpJztcbmltcG9ydCB7XG4gIEUyZUF0dHJpYnV0ZUJpbmRpbmdEaXJlY3RpdmUsXG4gIEVmZmVjdERpcmVjdGl2ZU1vZHVsZSxcbiAgRmllbGROb3RBdmFpbGFibGVQaXBlLFxuICBLOFNfVVRJTF9QSVBFU19NT0RVTEUsXG4gIEs4c0FwaVNlcnZpY2UsXG4gIEs4c1V0aWxTZXJ2aWNlLFxuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIFBlcnNpc3RlbnRWb2x1bWVDbGFpbSxcbiAgUHVyZVBpcGUsXG4gIFJFU09VUkNFX1RZUEVTLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBtYXRjaExhYmVsc1RvU3RyaW5nLFxuICBwdWJsaXNoUmVmLFxuICBza2lwRXJyb3IsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaW5hbGl6ZSwgZm9ya0pvaW4sIG1hcCwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBQVkNVdGlsU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3B2Yy11dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgVm9sdW1lU25hcHNob3QgfSBmcm9tICcuLi8uLi90eXBlcy9rOHMnO1xuaW1wb3J0IHsgU1RPUkFHRV9SRVNPVVJDRV9UWVBFUyB9IGZyb20gJy4uLy4uL3R5cGVzL3Jlc291cmNlLWRlZmluaXRpb24nO1xuaW1wb3J0IHsgU291cmNlTGlua0NvbXBvbmVudCB9IGZyb20gJy4uL3NvdXJjZS1saW5rL2NvbXBvbmVudCc7XG5cbmNvbnN0IENPTFVNTlMgPSBbJ25hbWUnLCAndHlwZScsICdzb3VyY2UnXTtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAndGVtcGxhdGUuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQXN5bmNQaXBlLFxuICAgIFRhYmxlTW9kdWxlLFxuICAgIE5nSWYsXG4gICAgUHVyZVBpcGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVG9vbHRpcE1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBGaWVsZE5vdEF2YWlsYWJsZVBpcGUsXG4gICAgSzhTX1VUSUxfUElQRVNfTU9EVUxFLFxuICAgIFRSQU5TTEFURV9NT0RVTEUsXG4gICAgU291cmNlTGlua0NvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgRTJlQXR0cmlidXRlQmluZGluZ0RpcmVjdGl2ZSxcbiAgICBFZmZlY3REaXJlY3RpdmVNb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERlbGV0ZVB2Y0RpYWxvZ0NvbXBvbmVudCB7XG4gIENPTFVNTlMgPSBDT0xVTU5TO1xuICBpbnB1dFZhbHVlID0gJyc7XG5cbiAgc3VibWl0dGluZyQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcG9kcyQgPSBvZih0aGlzLm1vZGFsRGF0YSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKHsgY2x1c3RlciwgbmFtZXNwYWNlLCBwdmMgfSkgPT5cbiAgICAgIHRoaXMucHZjVXRpbC5nZXRSZWxhdGVkUG9kcyhjbHVzdGVyLCBuYW1lc3BhY2UsIHB2Yy5tZXRhZGF0YS5uYW1lKSxcbiAgICApLFxuICAgIHB1Ymxpc2hSZWYoKSxcbiAgKTtcblxuICBzbmFwc2hvdHMkID0gb2YodGhpcy5tb2RhbERhdGEpLnBpcGUoXG4gICAgc3dpdGNoTWFwKCh7IGNsdXN0ZXIsIG5hbWVzcGFjZSwgcHZjIH0pID0+XG4gICAgICB0aGlzLms4c0FwaS5nZXRSZXNvdXJjZUxpc3Q8Vm9sdW1lU25hcHNob3Q+KHtcbiAgICAgICAgdHlwZTogU1RPUkFHRV9SRVNPVVJDRV9UWVBFUy5WT0xVTUVfU05BUFNIT1QsXG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICBsaW1pdDogJzAnLFxuICAgICAgICAgIGxhYmVsU2VsZWN0b3I6IG1hdGNoTGFiZWxzVG9TdHJpbmcoe1xuICAgICAgICAgICAgW3RoaXMuazhzVXRpbC5ub3JtYWxpemVUeXBlKCdzb3VyY2VwdmMnLCAnc25hcHNob3QnKV06XG4gICAgICAgICAgICAgIHRoaXMuazhzVXRpbC5nZXROYW1lKHB2YyksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICApLFxuICAgIG1hcChyZXMgPT4gcmVzLml0ZW1zKSxcbiAgICBza2lwRXJyb3IoW10gYXMgVm9sdW1lU25hcHNob3RbXSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGxpc3QkID0gZm9ya0pvaW4oW3RoaXMucG9kcyQsIHRoaXMuc25hcHNob3RzJF0pLnBpcGUoXG4gICAgbWFwKFxuICAgICAgKFtwb2RzLCBzbmFwc2hvdHNdKSA9PlxuICAgICAgICBbLi4uKHBvZHMgPz8gW10pLCAuLi5zbmFwc2hvdHNdIGFzIEt1YmVybmV0ZXNSZXNvdXJjZVtdLFxuICAgICksXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChESUFMT0dfREFUQSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kYWxEYXRhOiB7XG4gICAgICBjbHVzdGVyOiBzdHJpbmc7XG4gICAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICAgIHB2YzogUGVyc2lzdGVudFZvbHVtZUNsYWltO1xuICAgIH0sXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHZjVXRpbDogUFZDVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dSZWY6IERpYWxvZ1JlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgY29uZmlybSgpIHtcbiAgICB0aGlzLnN1Ym1pdHRpbmckJC5uZXh0KHRydWUpO1xuXG4gICAgdGhpcy5rOHNBcGlcbiAgICAgIC5kZWxldGVSZXNvdXJjZTxQZXJzaXN0ZW50Vm9sdW1lQ2xhaW0+KHtcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuUEVSU0lTVEVOVF9WT0xVTUVfQ0xBSU0sXG4gICAgICAgIGNsdXN0ZXI6IHRoaXMubW9kYWxEYXRhLmNsdXN0ZXIsXG4gICAgICAgIHJlc291cmNlOiB0aGlzLm1vZGFsRGF0YS5wdmMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5zdWJtaXR0aW5nJCQubmV4dChmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmdldCgncHZjX2RlbGV0ZV9zdWNjZXNzJykpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG59XG4iLCI8YXVpLWRpYWxvZy1oZWFkZXI+XG4gIDxhdWktaWNvblxuICAgIGNsYXNzPVwiaGVhZGVyLWljb25cIlxuICAgIGljb249XCJleGNsYW1hdGlvbl90cmlhbmdsZV9zXCJcbiAgICBiYWNrZ3JvdW5kPVwidHJpYW5nbGVcIlxuICAgIHNpemU9XCIyMlwiXG4gID48L2F1aS1pY29uPlxuICB7e1xuICAgICdzdG9yYWdlLmRlbGV0ZV9wdmNfdGl0bGUnIHwgdHJhbnNsYXRlOiB7IG5hbWU6IG1vZGFsRGF0YS5wdmMgfCBhY2xOYW1lIH1cbiAgfX1cbjwvYXVpLWRpYWxvZy1oZWFkZXI+XG5cbjxhdWktZGlhbG9nLWNvbnRlbnQ+XG4gIDxuZy1jb250YWluZXIgKmRlY2xhcmU9XCJsaXN0JCB8IGFzeW5jIGFzIGxpc3RcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibGlzdD8ubGVuZ3RoOyBlbHNlIGRlbGV0ZVRlbXBsYXRlXCI+XG4gICAgICA8cCBjbGFzcz1cInR3LW1iLTE2XCI+XG4gICAgICAgIHt7XG4gICAgICAgICAgJ3N0b3JhZ2UucHZjX2Nhbl9kZWxldGVfY29udGVudCdcbiAgICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG5hbWU6IG1vZGFsRGF0YS5wdmMgfCBhY2xOYW1lLCBsZW5ndGg6IGxpc3QubGVuZ3RoIH1cbiAgICAgICAgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgYXVpVGFibGVTY3JvbGxXcmFwcGVyPVwiNDAwcHhcIj5cbiAgICAgICAgPGF1aS10YWJsZVxuICAgICAgICAgIGF1aVRhYmxlU2Nyb2xsYWJsZVxuICAgICAgICAgIFtkYXRhU291cmNlXT1cImxpc3RcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBhdWlUYWJsZUNvbHVtbkRlZj1cIm5hbWVcIj5cbiAgICAgICAgICAgIDxhdWktdGFibGUtaGVhZGVyLWNlbGxcbiAgICAgICAgICAgICAgc3RpY2t5XG4gICAgICAgICAgICAgICphdWlUYWJsZUhlYWRlckNlbGxEZWZcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3Jlc291cmNlX25hbWUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2F1aS10YWJsZS1oZWFkZXItY2VsbD5cbiAgICAgICAgICAgIDxhdWktdGFibGUtY2VsbCAqYXVpVGFibGVDZWxsRGVmPVwibGV0IGl0ZW1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gW2F1aVRvb2x0aXBdPVwiaXRlbSB8IGFjbE5hbWVcIj5cbiAgICAgICAgICAgICAgICB7eyBpdGVtIHwgYWNsTmFtZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2F1aS10YWJsZS1jZWxsPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgYXVpVGFibGVDb2x1bW5EZWY9XCJ0eXBlXCI+XG4gICAgICAgICAgICA8YXVpLXRhYmxlLWhlYWRlci1jZWxsICphdWlUYWJsZUhlYWRlckNlbGxEZWY+XG4gICAgICAgICAgICAgIHt7ICd0eXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9hdWktdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICA8YXVpLXRhYmxlLWNlbGwgKmF1aVRhYmxlQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgKGl0ZW0ua2luZCA9PT0gJ1ZvbHVtZVNuYXBzaG90JyA/ICdzdG9yYWdlLnNuYXBzaG90JyA6ICdwb2QnKVxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvYXVpLXRhYmxlLWNlbGw+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBhdWlUYWJsZUNvbHVtbkRlZj1cInNvdXJjZVwiPlxuICAgICAgICAgICAgPGF1aS10YWJsZS1oZWFkZXItY2VsbCAqYXVpVGFibGVIZWFkZXJDZWxsRGVmPlxuICAgICAgICAgICAgICB7eyAnc291cmNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9hdWktdGFibGUtaGVhZGVyLWNlbGw+XG4gICAgICAgICAgICA8YXVpLXRhYmxlLWNlbGwgKmF1aVRhYmxlQ2VsbERlZj1cImxldCBpdGVtXCI+XG4gICAgICAgICAgICAgIDxhY2wtc291cmNlLWxpbmtcbiAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0ua2luZCAhPT0gJ1ZvbHVtZVNuYXBzaG90JzsgZWxzZSBlbXB0eVwiXG4gICAgICAgICAgICAgICAgW3NvdXJjZUxpbmtdPVwiXG4gICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgICAgICAgICAgIDogcHZjVXRpbC5nZXRTb3VyY2UkXG4gICAgICAgICAgICAgICAgICAgICAgOiBtb2RhbERhdGEuY2x1c3RlclxuICAgICAgICAgICAgICAgICAgICAgIDogbW9kYWxEYXRhLm5hbWVzcGFjZVxuICAgICAgICAgICAgICAgICAgICB8IGFzeW5jXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvYWNsLXNvdXJjZS1saW5rPlxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2VtcHR5PlxuICAgICAgICAgICAgICAgIHt7IG51bGwgfCBhY2xGaWVsZE5vdEF2YWlsYWJsZSB9fVxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPC9hdWktdGFibGUtY2VsbD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8YXVpLXRhYmxlLWhlYWRlci1yb3dcbiAgICAgICAgICAgICphdWlUYWJsZUhlYWRlclJvd0RlZj1cIkNPTFVNTlM7IHN0aWNreTogdHJ1ZVwiXG4gICAgICAgICAgPjwvYXVpLXRhYmxlLWhlYWRlci1yb3c+XG4gICAgICAgICAgPGF1aS10YWJsZS1yb3dcbiAgICAgICAgICAgICphdWlUYWJsZVJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IENPTFVNTlNcIlxuICAgICAgICAgID48L2F1aS10YWJsZS1yb3c+XG4gICAgICAgIDwvYXVpLXRhYmxlPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlbGV0ZVRlbXBsYXRlPlxuICAgIDxwIGNsYXNzPVwidHctbXQtMCB0dy1tYi0xMiB0dy10ZXh0LW1haW4tdGV4dFwiPlxuICAgICAge3tcbiAgICAgICAgJ3N0b3JhZ2UuZGVsZXRlX3B2Y19jb250ZW50J1xuICAgICAgICAgIHwgdHJhbnNsYXRlOiB7IG5hbWU6IG1vZGFsRGF0YS5wdmMgfCBhY2xOYW1lIH1cbiAgICAgIH19XG4gICAgPC9wPlxuICAgIDxkaXYgY2xhc3M9XCJ0dy1tYi00IHR3LXRleHQtbWFpbi10ZXh0XCI+XG4gICAgICB7eyAncGxlYXNlX2VudGVyX2V4dHJhJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPHNwYW4gY2xhc3M9XCJ0dy10ZXh0LXJlZFwiPlxuICAgICAgICB7eyBtb2RhbERhdGEucHZjIHwgYWNsTmFtZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAge3sgJ2V4dHJhX2RldGVybWluZV9kZWxldGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gICAgPGlucHV0XG4gICAgICBhdWktaW5wdXRcbiAgICAgIFsobmdNb2RlbCldPVwiaW5wdXRWYWx1ZVwiXG4gICAgICB0cmltXG4gICAgLz5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvYXVpLWRpYWxvZy1jb250ZW50PlxuXG48YXVpLWRpYWxvZy1mb290ZXI+XG4gIDxkaXY+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCIhKGxpc3QkIHwgYXN5bmMpPy5sZW5ndGhcIlxuICAgICAgYXVpLWJ1dHRvbj1cImRhbmdlclwiXG4gICAgICBbbG9hZGluZ109XCJzdWJtaXR0aW5nJCQgfCBhc3luY1wiXG4gICAgICBbZGlzYWJsZWRdPVwiaW5wdXRWYWx1ZSAhPT0gKG1vZGFsRGF0YS5wdmMgfCBhY2xOYW1lKVwiXG4gICAgICAoY2xpY2spPVwiY29uZmlybSgpXCJcbiAgICA+XG4gICAgICB7eyAnZGVsZXRlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIGF1aS1idXR0b25cbiAgICAgIGF1aURpYWxvZ0Nsb3NlXG4gICAgPlxuICAgICAge3sgJ2NhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2F1aS1kaWFsb2ctZm9vdGVyPlxuIl19
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { ButtonModule, DIALOG_DATA, DialogModule, DialogRef, FormModule, InlineAlertModule, InputModule, MessageService, } from '@alauda/ui';
|
|
2
|
+
import { K8sApiService, publishRef, TranslateService, toUnitGi, POSITIVE_INT_PATTERN, RESOURCE_TYPES, TRANSLATE_MODULE, PurePipe, K8S_UTIL_PIPES_MODULE, ERRORS_MAPPER_MODULE, } from '@alauda-fe/common';
|
|
3
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
|
4
|
+
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
|
|
5
|
+
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import { Subject, finalize, startWith } from 'rxjs';
|
|
7
|
+
import { ActualCapacityPipe } from '../../pipes/actual-capacity.pipe';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@alauda-fe/common";
|
|
10
|
+
import * as i2 from "@alauda/ui";
|
|
11
|
+
import * as i3 from "@angular/forms";
|
|
12
|
+
const _c0 = a0 => ({ capacity: a0 });
|
|
13
|
+
const _c1 = (a0, a1) => ({ pattern: a0, min: a1 });
|
|
14
|
+
function PvcExpandCapacityDialogComponent_aui_inline_alert_4_Template(rf, ctx) { if (rf & 1) {
|
|
15
|
+
i0.ɵɵelementStart(0, "aui-inline-alert", 12);
|
|
16
|
+
i0.ɵɵtext(1);
|
|
17
|
+
i0.ɵɵpipe(2, "translate");
|
|
18
|
+
i0.ɵɵelementEnd();
|
|
19
|
+
} if (rf & 2) {
|
|
20
|
+
i0.ɵɵadvance();
|
|
21
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 1, "storage.pvc_expand_capacity_help"));
|
|
22
|
+
} }
|
|
23
|
+
export class PvcExpandCapacityDialogComponent {
|
|
24
|
+
constructor(dialogData = {
|
|
25
|
+
resource: null,
|
|
26
|
+
cluster: '',
|
|
27
|
+
namespace: '',
|
|
28
|
+
isVM: false,
|
|
29
|
+
}, k8sApi, dialogRef, message, translate) {
|
|
30
|
+
this.dialogData = dialogData;
|
|
31
|
+
this.k8sApi = k8sApi;
|
|
32
|
+
this.dialogRef = dialogRef;
|
|
33
|
+
this.message = message;
|
|
34
|
+
this.translate = translate;
|
|
35
|
+
this.POSITIVE_INT_PATTERN = POSITIVE_INT_PATTERN;
|
|
36
|
+
this.submitting$$ = new Subject();
|
|
37
|
+
this.submitting$ = this.submitting$$.pipe(startWith(false), publishRef());
|
|
38
|
+
this.toUnitGi = toUnitGi;
|
|
39
|
+
}
|
|
40
|
+
submit(ngForm) {
|
|
41
|
+
ngForm.onSubmit(null);
|
|
42
|
+
if (ngForm.invalid) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.submitting$$.next(true);
|
|
46
|
+
this.k8sApi
|
|
47
|
+
.patchResource({
|
|
48
|
+
type: RESOURCE_TYPES.PERSISTENT_VOLUME_CLAIM,
|
|
49
|
+
resource: this.dialogData.resource,
|
|
50
|
+
cluster: this.dialogData.cluster,
|
|
51
|
+
namespace: this.dialogData.namespace,
|
|
52
|
+
part: {
|
|
53
|
+
spec: {
|
|
54
|
+
resources: {
|
|
55
|
+
requests: {
|
|
56
|
+
storage: this.newCapacity + 'Gi',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
})
|
|
62
|
+
.pipe(finalize(() => {
|
|
63
|
+
this.submitting$$.next(false);
|
|
64
|
+
}))
|
|
65
|
+
.subscribe({
|
|
66
|
+
next: () => {
|
|
67
|
+
this.dialogRef.close(true);
|
|
68
|
+
this.message.success(this.translate.get('expand_capacity_succeeded'));
|
|
69
|
+
},
|
|
70
|
+
error: () => {
|
|
71
|
+
this.message.error(this.translate.get('expand_capacity_failed'));
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
getNumber(capacity) {
|
|
76
|
+
return +capacity.replace('Gi', '') + 1;
|
|
77
|
+
}
|
|
78
|
+
getVolumeTypeTranslateKey(isVM) {
|
|
79
|
+
return isVM ? 'storage.virtual_disk_name' : 'storage.pvc_short';
|
|
80
|
+
}
|
|
81
|
+
static { this.ɵfac = function PvcExpandCapacityDialogComponent_Factory(t) { return new (t || PvcExpandCapacityDialogComponent)(i0.ɵɵdirectiveInject(DIALOG_DATA), i0.ɵɵdirectiveInject(i1.K8sApiService), i0.ɵɵdirectiveInject(i2.DialogRef), i0.ɵɵdirectiveInject(i2.MessageService), i0.ɵɵdirectiveInject(i1.TranslateService)); }; }
|
|
82
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PvcExpandCapacityDialogComponent, selectors: [["ng-component"]], standalone: true, features: [i0.ɵɵStandaloneFeature], decls: 46, vars: 66, consts: [["ngForm", "ngForm"], ["capacity", "ngModel"], ["type", "warning", 4, "ngIf"], ["auiForm", "", "ngForm", ""], ["auiFormItemLabel", ""], ["width", "small"], ["auiFormItemControl", "", "required", ""], ["auiInputAddonAfter", ""], ["aui-input", "", "type", "text", "required", "", "name", "capacity", 1, "tw-flex-1", 3, "ngModelChange", "min", "pattern", "ngModel"], ["auiFormItemError", "", 3, "errors", "errorsMapper"], ["aui-button", "primary", 3, "click", "disabled", "loading"], ["aui-button", "", 3, "auiDialogClose", "disabled"], ["type", "warning"]], template: function PvcExpandCapacityDialogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
84
|
+
i0.ɵɵelementStart(0, "aui-dialog-header");
|
|
85
|
+
i0.ɵɵtext(1);
|
|
86
|
+
i0.ɵɵpipe(2, "translate");
|
|
87
|
+
i0.ɵɵelementEnd();
|
|
88
|
+
i0.ɵɵelementStart(3, "aui-dialog-content");
|
|
89
|
+
i0.ɵɵtemplate(4, PvcExpandCapacityDialogComponent_aui_inline_alert_4_Template, 3, 3, "aui-inline-alert", 2);
|
|
90
|
+
i0.ɵɵelementStart(5, "form", 3, 0)(7, "aui-form-item")(8, "label", 4);
|
|
91
|
+
i0.ɵɵtext(9);
|
|
92
|
+
i0.ɵɵpipe(10, "pure");
|
|
93
|
+
i0.ɵɵpipe(11, "translate");
|
|
94
|
+
i0.ɵɵelementEnd();
|
|
95
|
+
i0.ɵɵtext(12);
|
|
96
|
+
i0.ɵɵpipe(13, "aclName");
|
|
97
|
+
i0.ɵɵelementEnd();
|
|
98
|
+
i0.ɵɵelementStart(14, "aui-form-item")(15, "label", 4);
|
|
99
|
+
i0.ɵɵtext(16);
|
|
100
|
+
i0.ɵɵpipe(17, "translate");
|
|
101
|
+
i0.ɵɵelementEnd();
|
|
102
|
+
i0.ɵɵtext(18);
|
|
103
|
+
i0.ɵɵpipe(19, "rcActualCapacity");
|
|
104
|
+
i0.ɵɵelementEnd();
|
|
105
|
+
i0.ɵɵelementStart(20, "aui-form-item", 5)(21, "label", 4);
|
|
106
|
+
i0.ɵɵtext(22);
|
|
107
|
+
i0.ɵɵpipe(23, "translate");
|
|
108
|
+
i0.ɵɵelementEnd();
|
|
109
|
+
i0.ɵɵelementStart(24, "aui-input-group", 6)(25, "span", 7);
|
|
110
|
+
i0.ɵɵtext(26);
|
|
111
|
+
i0.ɵɵelementEnd();
|
|
112
|
+
i0.ɵɵelementStart(27, "input", 8, 1);
|
|
113
|
+
i0.ɵɵpipe(29, "pure");
|
|
114
|
+
i0.ɵɵpipe(30, "pure");
|
|
115
|
+
i0.ɵɵtwoWayListener("ngModelChange", function PvcExpandCapacityDialogComponent_Template_input_ngModelChange_27_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.newCapacity, $event) || (ctx.newCapacity = $event); return i0.ɵɵresetView($event); });
|
|
116
|
+
i0.ɵɵelementEnd()();
|
|
117
|
+
i0.ɵɵelement(31, "acl-errors-mapper", 9);
|
|
118
|
+
i0.ɵɵpipe(32, "translate");
|
|
119
|
+
i0.ɵɵpipe(33, "pure");
|
|
120
|
+
i0.ɵɵpipe(34, "pure");
|
|
121
|
+
i0.ɵɵpipe(35, "translate");
|
|
122
|
+
i0.ɵɵelementEnd()()();
|
|
123
|
+
i0.ɵɵelementStart(36, "aui-dialog-footer")(37, "button", 10);
|
|
124
|
+
i0.ɵɵpipe(38, "async");
|
|
125
|
+
i0.ɵɵpipe(39, "async");
|
|
126
|
+
i0.ɵɵlistener("click", function PvcExpandCapacityDialogComponent_Template_button_click_37_listener() { i0.ɵɵrestoreView(_r1); const ngForm_r2 = i0.ɵɵreference(6); return i0.ɵɵresetView(ctx.submit(ngForm_r2)); });
|
|
127
|
+
i0.ɵɵtext(40);
|
|
128
|
+
i0.ɵɵpipe(41, "translate");
|
|
129
|
+
i0.ɵɵelementEnd();
|
|
130
|
+
i0.ɵɵelementStart(42, "button", 11);
|
|
131
|
+
i0.ɵɵpipe(43, "async");
|
|
132
|
+
i0.ɵɵtext(44);
|
|
133
|
+
i0.ɵɵpipe(45, "translate");
|
|
134
|
+
i0.ɵɵelementEnd()();
|
|
135
|
+
} if (rf & 2) {
|
|
136
|
+
const capacity_r3 = i0.ɵɵreference(28);
|
|
137
|
+
i0.ɵɵadvance();
|
|
138
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 19, "expansion"), "\n");
|
|
139
|
+
i0.ɵɵadvance(3);
|
|
140
|
+
i0.ɵɵproperty("ngIf", !ctx.dialogData.isVM);
|
|
141
|
+
i0.ɵɵadvance(5);
|
|
142
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 24, i0.ɵɵpipeBind2(10, 21, ctx.dialogData.isVM, ctx.getVolumeTypeTranslateKey)));
|
|
143
|
+
i0.ɵɵadvance(3);
|
|
144
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(13, 26, ctx.dialogData.resource), " ");
|
|
145
|
+
i0.ɵɵadvance(4);
|
|
146
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(17, 28, "storage.current_capacity"));
|
|
147
|
+
i0.ɵɵadvance(2);
|
|
148
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(19, 30, ctx.dialogData.resource), " ");
|
|
149
|
+
i0.ɵɵadvance(4);
|
|
150
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 32, "storage.new_capacity"));
|
|
151
|
+
i0.ɵɵadvance(4);
|
|
152
|
+
i0.ɵɵtextInterpolate("Gi");
|
|
153
|
+
i0.ɵɵadvance();
|
|
154
|
+
i0.ɵɵproperty("min", i0.ɵɵpipeBind2(30, 37, i0.ɵɵpipeBind2(29, 34, ctx.dialogData.resource.spec.resources.requests.storage, ctx.toUnitGi), ctx.getNumber))("pattern", ctx.POSITIVE_INT_PATTERN.pattern);
|
|
155
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx.newCapacity);
|
|
156
|
+
i0.ɵɵadvance(4);
|
|
157
|
+
i0.ɵɵproperty("errors", capacity_r3.errors)("errorsMapper", i0.ɵɵpureFunction2(63, _c1, i0.ɵɵpipeBind1(32, 40, ctx.POSITIVE_INT_PATTERN.tip), i0.ɵɵpipeBind2(35, 48, "storage.pvc_new_capacity_small_than_current_error", i0.ɵɵpureFunction1(61, _c0, i0.ɵɵpipeBind2(34, 45, i0.ɵɵpipeBind2(33, 42, ctx.dialogData.resource.spec.resources.requests.storage, ctx.toUnitGi), ctx.getNumber))) + "Gi"));
|
|
158
|
+
i0.ɵɵadvance(6);
|
|
159
|
+
i0.ɵɵproperty("disabled", i0.ɵɵpipeBind1(38, 51, ctx.submitting$))("loading", i0.ɵɵpipeBind1(39, 53, ctx.submitting$));
|
|
160
|
+
i0.ɵɵadvance(3);
|
|
161
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(41, 55, "storage.expansion"), " ");
|
|
162
|
+
i0.ɵɵadvance(2);
|
|
163
|
+
i0.ɵɵproperty("auiDialogClose", false)("disabled", i0.ɵɵpipeBind1(43, 57, ctx.submitting$));
|
|
164
|
+
i0.ɵɵadvance(2);
|
|
165
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(45, 59, "cancel"), " ");
|
|
166
|
+
} }, dependencies: [NgIf,
|
|
167
|
+
AsyncPipe,
|
|
168
|
+
DialogModule, i2.DialogHeaderComponent, i2.DialogContentComponent, i2.DialogFooterComponent, i2.DialogCloseDirective, FormModule, i2.FormDirective, i2.FormItemComponent, i2.FormItemErrorDirective, i2.FormItemLabelDirective, i2.FormItemControlDirective, FormsModule, i3.ɵNgNoValidate, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgControlStatusGroup, i3.RequiredValidator, i3.PatternValidator, i3.NgModel, i3.NgForm, InputModule, i2.InputComponent, i2.InputGroupComponent, i2.InputAddonAfterDirective, ButtonModule, i2.ButtonComponent, InlineAlertModule, i2.InlineAlertComponent, ActualCapacityPipe,
|
|
169
|
+
PurePipe, i1.ErrorsMapperComponent, i1.K8sNamePipe, i1.TranslatePipe], encapsulation: 2, changeDetection: 0 }); }
|
|
170
|
+
}
|
|
171
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PvcExpandCapacityDialogComponent, [{
|
|
172
|
+
type: Component,
|
|
173
|
+
args: [{ standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
174
|
+
NgIf,
|
|
175
|
+
AsyncPipe,
|
|
176
|
+
DialogModule,
|
|
177
|
+
FormModule,
|
|
178
|
+
FormsModule,
|
|
179
|
+
InputModule,
|
|
180
|
+
ButtonModule,
|
|
181
|
+
InlineAlertModule,
|
|
182
|
+
ActualCapacityPipe,
|
|
183
|
+
PurePipe,
|
|
184
|
+
ERRORS_MAPPER_MODULE,
|
|
185
|
+
K8S_UTIL_PIPES_MODULE,
|
|
186
|
+
TRANSLATE_MODULE,
|
|
187
|
+
], template: "<aui-dialog-header>\n {{ 'expansion' | translate }}\n</aui-dialog-header>\n<aui-dialog-content>\n <aui-inline-alert\n type=\"warning\"\n *ngIf=\"!dialogData.isVM\"\n >{{ 'storage.pvc_expand_capacity_help' | translate }}</aui-inline-alert\n >\n <form\n auiForm\n ngForm\n #ngForm=\"ngForm\"\n >\n <aui-form-item>\n <label auiFormItemLabel>{{\n dialogData.isVM | pure: getVolumeTypeTranslateKey | translate\n }}</label>\n {{ dialogData.resource | aclName }}\n </aui-form-item>\n <aui-form-item>\n <label auiFormItemLabel>{{\n 'storage.current_capacity' | translate\n }}</label>\n {{ dialogData.resource | rcActualCapacity }}\n </aui-form-item>\n <aui-form-item width=\"small\">\n <label auiFormItemLabel>{{ 'storage.new_capacity' | translate }}</label>\n <aui-input-group\n auiFormItemControl\n required\n >\n <span auiInputAddonAfter>{{ 'Gi' }}</span>\n <input\n aui-input\n type=\"text\"\n required\n [min]=\"\n dialogData.resource.spec.resources.requests.storage\n | pure: toUnitGi\n | pure: getNumber\n \"\n [pattern]=\"POSITIVE_INT_PATTERN.pattern\"\n class=\"tw-flex-1\"\n name=\"capacity\"\n [(ngModel)]=\"newCapacity\"\n #capacity=\"ngModel\"\n />\n </aui-input-group>\n <acl-errors-mapper\n auiFormItemError\n [errors]=\"capacity.errors\"\n [errorsMapper]=\"{\n pattern: POSITIVE_INT_PATTERN.tip | translate,\n min:\n ('storage.pvc_new_capacity_small_than_current_error'\n | translate\n : {\n capacity:\n dialogData.resource.spec.resources.requests.storage\n | pure: toUnitGi\n | pure: getNumber,\n }) + 'Gi',\n }\"\n ></acl-errors-mapper>\n </aui-form-item>\n </form>\n</aui-dialog-content>\n<aui-dialog-footer>\n <button\n aui-button=\"primary\"\n (click)=\"submit(ngForm)\"\n [disabled]=\"submitting$ | async\"\n [loading]=\"submitting$ | async\"\n >\n {{ 'storage.expansion' | translate }}\n </button>\n <button\n aui-button\n [auiDialogClose]=\"false\"\n [disabled]=\"submitting$ | async\"\n >\n {{ 'cancel' | translate }}\n </button>\n</aui-dialog-footer>\n" }]
|
|
188
|
+
}], () => [{ type: undefined, decorators: [{
|
|
189
|
+
type: Inject,
|
|
190
|
+
args: [DIALOG_DATA]
|
|
191
|
+
}] }, { type: i1.K8sApiService }, { type: i2.DialogRef }, { type: i2.MessageService }, { type: i1.TranslateService }], null); })();
|
|
192
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PvcExpandCapacityDialogComponent, { className: "PvcExpandCapacityDialogComponent", filePath: "lib/components/pvc-expand-capacity-dialog/component.ts", lineNumber: 51 }); })();
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zdG9yYWdlL3NyYy9saWIvY29tcG9uZW50cy9wdmMtZXhwYW5kLWNhcGFjaXR5LWRpYWxvZy9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3N0b3JhZ2Uvc3JjL2xpYi9jb21wb25lbnRzL3B2Yy1leHBhbmQtY2FwYWNpdHktZGlhbG9nL3RlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxjQUFjLEdBQ2YsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUNMLGFBQWEsRUFDYixVQUFVLEVBRVYsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixRQUFRLEVBQ1IscUJBQXFCLEVBQ3JCLG9CQUFvQixHQUNyQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7Ozs7SUN4QnBFLDRDQUdHO0lBQUEsWUFBb0Q7O0lBQUEsaUJBQ3REOztJQURFLGNBQW9EO0lBQXBELDhFQUFvRDs7QUQyQ3pELE1BQU0sT0FBTyxnQ0FB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QjVDLFNBQVM7NkJBQ0ksSUFBSSxtQkFFQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO29CQUNQLElBQUk7b0JBQ0osU0FBUztvQkFDVCxZQUFZO29CQUNaLFVBQVU7b0JBQ1YsV0FBVztvQkFDWCxXQUFXO29CQUNYLFlBQVk7b0JBQ1osaUJBQWlCO29CQUNqQixrQkFBa0I7b0JBQ2xCLFFBQVE7b0JBQ1Isb0JBQW9CO29CQUNwQixxQkFBcUI7b0JBQ3JCLGdCQUFnQjtpQkFDakI7O3NCQVVFLE1BQU07dUJBQUMsV0FBVzs7a0ZBUlYsZ0NBQWdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBESUFMT0dfREFUQSxcbiAgRGlhbG9nTW9kdWxlLFxuICBEaWFsb2dSZWYsXG4gIEZvcm1Nb2R1bGUsXG4gIElubGluZUFsZXJ0TW9kdWxlLFxuICBJbnB1dE1vZHVsZSxcbiAgTWVzc2FnZVNlcnZpY2UsXG59IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgSzhzQXBpU2VydmljZSxcbiAgcHVibGlzaFJlZixcbiAgUGVyc2lzdGVudFZvbHVtZUNsYWltLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICB0b1VuaXRHaSxcbiAgUE9TSVRJVkVfSU5UX1BBVFRFUk4sXG4gIFJFU09VUkNFX1RZUEVTLFxuICBUUkFOU0xBVEVfTU9EVUxFLFxuICBQdXJlUGlwZSxcbiAgSzhTX1VUSUxfUElQRVNfTU9EVUxFLFxuICBFUlJPUlNfTUFQUEVSX01PRFVMRSxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YmplY3QsIGZpbmFsaXplLCBzdGFydFdpdGggfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWN0dWFsQ2FwYWNpdHlQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvYWN0dWFsLWNhcGFjaXR5LnBpcGUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6ICcuL3RlbXBsYXRlLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgQXN5bmNQaXBlLFxuICAgIERpYWxvZ01vZHVsZSxcbiAgICBGb3JtTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJbmxpbmVBbGVydE1vZHVsZSxcbiAgICBBY3R1YWxDYXBhY2l0eVBpcGUsXG4gICAgUHVyZVBpcGUsXG4gICAgRVJST1JTX01BUFBFUl9NT0RVTEUsXG4gICAgSzhTX1VUSUxfUElQRVNfTU9EVUxFLFxuICAgIFRSQU5TTEFURV9NT0RVTEUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFB2Y0V4cGFuZENhcGFjaXR5RGlhbG9nQ29tcG9uZW50IHtcbiAgbmV3Q2FwYWNpdHk6IHN0cmluZztcbiAgUE9TSVRJVkVfSU5UX1BBVFRFUk4gPSBQT1NJVElWRV9JTlRfUEFUVEVSTjtcbiAgc3VibWl0dGluZyQkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgc3VibWl0dGluZyQgPSB0aGlzLnN1Ym1pdHRpbmckJC5waXBlKHN0YXJ0V2l0aChmYWxzZSksIHB1Ymxpc2hSZWYoKSk7XG4gIHRvVW5pdEdpID0gdG9Vbml0R2k7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChESUFMT0dfREFUQSlcbiAgICBwdWJsaWMgZGlhbG9nRGF0YToge1xuICAgICAgcmVzb3VyY2U6IFBlcnNpc3RlbnRWb2x1bWVDbGFpbTtcbiAgICAgIGNsdXN0ZXI6IHN0cmluZztcbiAgICAgIG5hbWVzcGFjZTogc3RyaW5nO1xuICAgICAgaXNWTT86IGJvb2xlYW47XG4gICAgfSA9IHtcbiAgICAgIHJlc291cmNlOiBudWxsLFxuICAgICAgY2x1c3RlcjogJycsXG4gICAgICBuYW1lc3BhY2U6ICcnLFxuICAgICAgaXNWTTogZmFsc2UsXG4gICAgfSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGs4c0FwaTogSzhzQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1JlZjogRGlhbG9nUmVmPFB2Y0V4cGFuZENhcGFjaXR5RGlhbG9nQ29tcG9uZW50PixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgc3VibWl0KG5nRm9ybTogTmdGb3JtKSB7XG4gICAgbmdGb3JtLm9uU3VibWl0KG51bGwpO1xuICAgIGlmIChuZ0Zvcm0uaW52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN1Ym1pdHRpbmckJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuazhzQXBpXG4gICAgICAucGF0Y2hSZXNvdXJjZSh7XG4gICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlBFUlNJU1RFTlRfVk9MVU1FX0NMQUlNLFxuICAgICAgICByZXNvdXJjZTogdGhpcy5kaWFsb2dEYXRhLnJlc291cmNlLFxuICAgICAgICBjbHVzdGVyOiB0aGlzLmRpYWxvZ0RhdGEuY2x1c3RlcixcbiAgICAgICAgbmFtZXNwYWNlOiB0aGlzLmRpYWxvZ0RhdGEubmFtZXNwYWNlLFxuICAgICAgICBwYXJ0OiB7XG4gICAgICAgICAgc3BlYzoge1xuICAgICAgICAgICAgcmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIHJlcXVlc3RzOiB7XG4gICAgICAgICAgICAgICAgc3RvcmFnZTogdGhpcy5uZXdDYXBhY2l0eSArICdHaScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmckJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRydWUpO1xuICAgICAgICAgIHRoaXMubWVzc2FnZS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmdldCgnZXhwYW5kX2NhcGFjaXR5X3N1Y2NlZWRlZCcpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2UuZXJyb3IodGhpcy50cmFuc2xhdGUuZ2V0KCdleHBhbmRfY2FwYWNpdHlfZmFpbGVkJykpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBnZXROdW1iZXIoY2FwYWNpdHk6IHN0cmluZykge1xuICAgIHJldHVybiArY2FwYWNpdHkucmVwbGFjZSgnR2knLCAnJykgKyAxO1xuICB9XG5cbiAgZ2V0Vm9sdW1lVHlwZVRyYW5zbGF0ZUtleShpc1ZNOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIGlzVk0gPyAnc3RvcmFnZS52aXJ0dWFsX2Rpc2tfbmFtZScgOiAnc3RvcmFnZS5wdmNfc2hvcnQnO1xuICB9XG59XG4iLCI8YXVpLWRpYWxvZy1oZWFkZXI+XG4gIHt7ICdleHBhbnNpb24nIHwgdHJhbnNsYXRlIH19XG48L2F1aS1kaWFsb2ctaGVhZGVyPlxuPGF1aS1kaWFsb2ctY29udGVudD5cbiAgPGF1aS1pbmxpbmUtYWxlcnRcbiAgICB0eXBlPVwid2FybmluZ1wiXG4gICAgKm5nSWY9XCIhZGlhbG9nRGF0YS5pc1ZNXCJcbiAgICA+e3sgJ3N0b3JhZ2UucHZjX2V4cGFuZF9jYXBhY2l0eV9oZWxwJyB8IHRyYW5zbGF0ZSB9fTwvYXVpLWlubGluZS1hbGVydFxuICA+XG4gIDxmb3JtXG4gICAgYXVpRm9ybVxuICAgIG5nRm9ybVxuICAgICNuZ0Zvcm09XCJuZ0Zvcm1cIlxuICA+XG4gICAgPGF1aS1mb3JtLWl0ZW0+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57e1xuICAgICAgICBkaWFsb2dEYXRhLmlzVk0gfCBwdXJlOiBnZXRWb2x1bWVUeXBlVHJhbnNsYXRlS2V5IHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbGFiZWw+XG4gICAgICB7eyBkaWFsb2dEYXRhLnJlc291cmNlIHwgYWNsTmFtZSB9fVxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgICA8YXVpLWZvcm0taXRlbT5cbiAgICAgIDxsYWJlbCBhdWlGb3JtSXRlbUxhYmVsPnt7XG4gICAgICAgICdzdG9yYWdlLmN1cnJlbnRfY2FwYWNpdHknIHwgdHJhbnNsYXRlXG4gICAgICB9fTwvbGFiZWw+XG4gICAgICB7eyBkaWFsb2dEYXRhLnJlc291cmNlIHwgcmNBY3R1YWxDYXBhY2l0eSB9fVxuICAgIDwvYXVpLWZvcm0taXRlbT5cbiAgICA8YXVpLWZvcm0taXRlbSB3aWR0aD1cInNtYWxsXCI+XG4gICAgICA8bGFiZWwgYXVpRm9ybUl0ZW1MYWJlbD57eyAnc3RvcmFnZS5uZXdfY2FwYWNpdHknIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICAgIDxhdWktaW5wdXQtZ3JvdXBcbiAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgIHJlcXVpcmVkXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGF1aUlucHV0QWRkb25BZnRlcj57eyAnR2knIH19PC9zcGFuPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICBbbWluXT1cIlxuICAgICAgICAgICAgZGlhbG9nRGF0YS5yZXNvdXJjZS5zcGVjLnJlc291cmNlcy5yZXF1ZXN0cy5zdG9yYWdlXG4gICAgICAgICAgICAgIHwgcHVyZTogdG9Vbml0R2lcbiAgICAgICAgICAgICAgfCBwdXJlOiBnZXROdW1iZXJcbiAgICAgICAgICBcIlxuICAgICAgICAgIFtwYXR0ZXJuXT1cIlBPU0lUSVZFX0lOVF9QQVRURVJOLnBhdHRlcm5cIlxuICAgICAgICAgIGNsYXNzPVwidHctZmxleC0xXCJcbiAgICAgICAgICBuYW1lPVwiY2FwYWNpdHlcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwibmV3Q2FwYWNpdHlcIlxuICAgICAgICAgICNjYXBhY2l0eT1cIm5nTW9kZWxcIlxuICAgICAgICAvPlxuICAgICAgPC9hdWktaW5wdXQtZ3JvdXA+XG4gICAgICA8YWNsLWVycm9ycy1tYXBwZXJcbiAgICAgICAgYXVpRm9ybUl0ZW1FcnJvclxuICAgICAgICBbZXJyb3JzXT1cImNhcGFjaXR5LmVycm9yc1wiXG4gICAgICAgIFtlcnJvcnNNYXBwZXJdPVwie1xuICAgICAgICAgIHBhdHRlcm46IFBPU0lUSVZFX0lOVF9QQVRURVJOLnRpcCB8IHRyYW5zbGF0ZSxcbiAgICAgICAgICBtaW46XG4gICAgICAgICAgICAoJ3N0b3JhZ2UucHZjX25ld19jYXBhY2l0eV9zbWFsbF90aGFuX2N1cnJlbnRfZXJyb3InXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgIGNhcGFjaXR5OlxuICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ0RhdGEucmVzb3VyY2Uuc3BlYy5yZXNvdXJjZXMucmVxdWVzdHMuc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgICAgIHwgcHVyZTogdG9Vbml0R2lcbiAgICAgICAgICAgICAgICAgICAgICB8IHB1cmU6IGdldE51bWJlcixcbiAgICAgICAgICAgICAgICAgIH0pICsgJ0dpJyxcbiAgICAgICAgfVwiXG4gICAgICA+PC9hY2wtZXJyb3JzLW1hcHBlcj5cbiAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gIDwvZm9ybT5cbjwvYXVpLWRpYWxvZy1jb250ZW50PlxuPGF1aS1kaWFsb2ctZm9vdGVyPlxuICA8YnV0dG9uXG4gICAgYXVpLWJ1dHRvbj1cInByaW1hcnlcIlxuICAgIChjbGljayk9XCJzdWJtaXQobmdGb3JtKVwiXG4gICAgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmckIHwgYXN5bmNcIlxuICAgIFtsb2FkaW5nXT1cInN1Ym1pdHRpbmckIHwgYXN5bmNcIlxuICA+XG4gICAge3sgJ3N0b3JhZ2UuZXhwYW5zaW9uJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvblxuICAgIGF1aS1idXR0b25cbiAgICBbYXVpRGlhbG9nQ2xvc2VdPVwiZmFsc2VcIlxuICAgIFtkaXNhYmxlZF09XCJzdWJtaXR0aW5nJCB8IGFzeW5jXCJcbiAgPlxuICAgIHt7ICdjYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9hdWktZGlhbG9nLWZvb3Rlcj5cbiJdfQ==
|