@c8y/ngx-components 1021.60.1 → 1021.62.2
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/core/authentication/new-password.component.d.ts +6 -3
- package/core/authentication/new-password.component.d.ts.map +1 -1
- package/core/common/interval-based-reload.abstract.d.ts +12 -1
- package/core/common/interval-based-reload.abstract.d.ts.map +1 -1
- package/core/common/permissions.service.d.ts +2 -0
- package/core/common/permissions.service.d.ts.map +1 -1
- package/core/common/tenant-ui.service.d.ts +9 -2
- package/core/common/tenant-ui.service.d.ts.map +1 -1
- package/core/forms/phone-validation.directive.d.ts +3 -6
- package/core/forms/phone-validation.directive.d.ts.map +1 -1
- package/core/router/router.module.d.ts.map +1 -1
- package/device-provisioned-certificates/device-provisioned-certificates.service.d.ts.map +1 -1
- package/esm2022/core/authentication/new-password.component.mjs +26 -5
- package/esm2022/core/common/interval-based-reload.abstract.mjs +50 -2
- package/esm2022/core/common/permissions.service.mjs +3 -1
- package/esm2022/core/common/tenant-ui.service.mjs +28 -6
- package/esm2022/core/forms/phone-validation.directive.mjs +18 -19
- package/esm2022/core/router/router.module.mjs +1 -5
- package/esm2022/core/user/user-edit.component.mjs +1 -1
- package/esm2022/device-provisioned-certificates/device-provisioned-certificates.service.mjs +8 -3
- package/esm2022/tenants/custom-properties/custom-properties.component.mjs +25 -5
- package/esm2022/tenants/existing-tenant.guard.mjs +18 -0
- package/esm2022/tenants/index.mjs +3 -1
- package/esm2022/tenants/support-user-access/support-user-access.component.mjs +31 -0
- package/esm2022/tenants/tenant-form/tenant-form-inputs-definitions.mjs +116 -0
- package/esm2022/tenants/tenant-form/tenant-form.component.mjs +294 -0
- package/esm2022/tenants/tenant-limits/tenant-limits-definitions.mjs +10 -17
- package/esm2022/tenants/tenant-limits/tenant-limits.component.mjs +42 -29
- package/esm2022/tenants/tenant-list/tenant-list.component.mjs +17 -8
- package/esm2022/tenants/tenants.model.mjs +30 -1
- package/esm2022/tenants/tenants.module.mjs +57 -22
- package/esm2022/translation-editor/data/translation-store.service.mjs +11 -8
- package/esm2022/translation-editor/index.mjs +22 -5
- package/esm2022/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.mjs +136 -0
- package/esm2022/translation-editor/lazy/index.mjs +2 -1
- package/esm2022/translation-editor/translation-editor-tab-factory.service.mjs +40 -0
- package/esm2022/translation-editor/translation-editor.constants.mjs +4 -0
- package/esm2022/upgrade/upgraded-services/index.mjs +2 -1
- package/esm2022/upgrade/upgraded-services/tenant-policies.service.mjs +11 -0
- package/esm2022/upgrade/upgraded-services/upgraded-services.module.mjs +12 -3
- package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +9 -7
- package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +9 -7
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +7 -2
- package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-tenants.mjs +603 -82
- package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +9 -6
- package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +127 -2
- package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-translation-editor.mjs +58 -4
- package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +22 -3
- package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +8 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +8 -6
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +499 -413
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/locales/de.po +35 -25
- package/locales/es.po +35 -25
- package/locales/fr.po +35 -25
- package/locales/ja_JP.po +35 -25
- package/locales/ko.po +35 -25
- package/locales/locales.pot +25 -24
- package/locales/nl.po +35 -25
- package/locales/pl.po +35 -25
- package/locales/pt_BR.po +35 -25
- package/locales/zh_CN.po +35 -25
- package/locales/zh_TW.po +35 -25
- package/package.json +1 -1
- package/tenants/custom-properties/custom-properties.component.d.ts +4 -2
- package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
- package/tenants/existing-tenant.guard.d.ts +13 -0
- package/tenants/existing-tenant.guard.d.ts.map +1 -0
- package/tenants/index.d.ts +2 -0
- package/tenants/index.d.ts.map +1 -1
- package/tenants/support-user-access/support-user-access.component.d.ts +18 -0
- package/tenants/support-user-access/support-user-access.component.d.ts.map +1 -0
- package/tenants/tenant-form/tenant-form-inputs-definitions.d.ts +113 -0
- package/tenants/tenant-form/tenant-form-inputs-definitions.d.ts.map +1 -0
- package/tenants/tenant-form/tenant-form.component.d.ts +79 -0
- package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -0
- package/tenants/tenant-limits/tenant-limits-definitions.d.ts +11 -15
- package/tenants/tenant-limits/tenant-limits-definitions.d.ts.map +1 -1
- package/tenants/tenant-limits/tenant-limits.component.d.ts +9 -7
- package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
- package/tenants/tenant-list/tenant-list.component.d.ts +6 -3
- package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
- package/tenants/tenants.model.d.ts +31 -0
- package/tenants/tenants.model.d.ts.map +1 -1
- package/tenants/tenants.module.d.ts +4 -2
- package/tenants/tenants.module.d.ts.map +1 -1
- package/translation-editor/data/translation-store.service.d.ts +3 -2
- package/translation-editor/data/translation-store.service.d.ts.map +1 -1
- package/translation-editor/index.d.ts.map +1 -1
- package/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.d.ts +28 -0
- package/translation-editor/lazy/advanced-translation-editor/advanced-translation-editor.component.d.ts.map +1 -0
- package/translation-editor/lazy/index.d.ts +1 -0
- package/translation-editor/lazy/index.d.ts.map +1 -1
- package/translation-editor/translation-editor-tab-factory.service.d.ts +22 -0
- package/translation-editor/translation-editor-tab-factory.service.d.ts.map +1 -0
- package/translation-editor/translation-editor.constants.d.ts +4 -0
- package/translation-editor/translation-editor.constants.d.ts.map +1 -0
- package/upgrade/upgraded-services/index.d.ts +1 -0
- package/upgrade/upgraded-services/index.d.ts.map +1 -1
- package/upgrade/upgraded-services/tenant-policies.service.d.ts +11 -0
- package/upgrade/upgraded-services/tenant-policies.service.d.ts.map +1 -0
- package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +7 -2
- package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +7 -2
- package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
|
@@ -3,9 +3,11 @@ import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { TenantService } from '@c8y/client';
|
|
5
5
|
import { ActivatedRoute, RouterLink } from '@angular/router';
|
|
6
|
-
import { AlertService, CoreModule, FormsModule, gettext } from '@c8y/ngx-components';
|
|
6
|
+
import { AlertService, CoreModule, FormsModule, gettext, GainsightService } from '@c8y/ngx-components';
|
|
7
7
|
import { CustomPropertiesService } from '../custom-properties/custom-properties.service';
|
|
8
8
|
import { CustomPropertyFieldComponent } from '../custom-properties/custom-property-field/custom-property-field.component';
|
|
9
|
+
import { PRODUCT_EXPERIENCE_TENANT_MANAGEMENT } from '../tenants.model';
|
|
10
|
+
import { take } from 'rxjs/operators';
|
|
9
11
|
import * as i0 from "@angular/core";
|
|
10
12
|
import * as i1 from "@c8y/client";
|
|
11
13
|
import * as i2 from "@c8y/ngx-components";
|
|
@@ -13,12 +15,14 @@ import * as i3 from "@angular/router";
|
|
|
13
15
|
import * as i4 from "../custom-properties/custom-properties.service";
|
|
14
16
|
import * as i5 from "@angular/common";
|
|
15
17
|
import * as i6 from "@angular/forms";
|
|
18
|
+
const { ACTIONS, EVENTS, COMPONENTS, RESULTS } = PRODUCT_EXPERIENCE_TENANT_MANAGEMENT;
|
|
16
19
|
export class CustomPropertiesComponent {
|
|
17
|
-
constructor(tenantService, alertService, activatedRoute, customPropertiesService) {
|
|
20
|
+
constructor(tenantService, alertService, activatedRoute, customPropertiesService, gainsightService) {
|
|
18
21
|
this.tenantService = tenantService;
|
|
19
22
|
this.alertService = alertService;
|
|
20
23
|
this.activatedRoute = activatedRoute;
|
|
21
24
|
this.customPropertiesService = customPropertiesService;
|
|
25
|
+
this.gainsightService = gainsightService;
|
|
22
26
|
this.customPropsForm = new FormGroup({});
|
|
23
27
|
this.tenant = null;
|
|
24
28
|
this.initialized = false;
|
|
@@ -30,6 +34,10 @@ export class CustomPropertiesComponent {
|
|
|
30
34
|
this.fieldDefinitions = fields;
|
|
31
35
|
this.applyValuesFromTenant();
|
|
32
36
|
this.initialized = true;
|
|
37
|
+
this.sendGainsightEvent(ACTIONS.TENANT_CUSTOM_PROPERTIES_OPENED);
|
|
38
|
+
this.customPropsForm.valueChanges.pipe(take(1)).subscribe(() => {
|
|
39
|
+
this.sendGainsightEvent(ACTIONS.TENANT_CUSTOM_PROPERTIES_STARTED_CHANGING);
|
|
40
|
+
});
|
|
33
41
|
}
|
|
34
42
|
async onSubmit() {
|
|
35
43
|
if (this.customPropsForm.invalid || !this.tenant) {
|
|
@@ -45,9 +53,14 @@ export class CustomPropertiesComponent {
|
|
|
45
53
|
try {
|
|
46
54
|
await this.tenantService.update(updatedTenant);
|
|
47
55
|
this.alertService.success(gettext('Custom properties values saved.'));
|
|
56
|
+
this.sendGainsightEvent(ACTIONS.TENANT_CUSTOM_PROPERTIES_SAVED, { result: RESULTS.SUCCESS });
|
|
48
57
|
}
|
|
49
58
|
catch (error) {
|
|
50
59
|
this.alertService.addServerFailure(error);
|
|
60
|
+
this.sendGainsightEvent(ACTIONS.TENANT_CUSTOM_PROPERTIES_SAVED, {
|
|
61
|
+
result: RESULTS.FAILURE,
|
|
62
|
+
error
|
|
63
|
+
});
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
66
|
async loadTenantDetails() {
|
|
@@ -73,7 +86,14 @@ export class CustomPropertiesComponent {
|
|
|
73
86
|
});
|
|
74
87
|
return dirtyValues;
|
|
75
88
|
}
|
|
76
|
-
|
|
89
|
+
sendGainsightEvent(action, props = {}) {
|
|
90
|
+
this.gainsightService.triggerEvent(EVENTS.TENANT_MANAGEMENT, {
|
|
91
|
+
component: COMPONENTS.TENANT_CUSTOM_PROPERTIES,
|
|
92
|
+
action,
|
|
93
|
+
...props
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomPropertiesComponent, deps: [{ token: i1.TenantService }, { token: i2.AlertService }, { token: i3.ActivatedRoute }, { token: i4.CustomPropertiesService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
97
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CustomPropertiesComponent, isStandalone: true, selector: "c8y-custom-properties", ngImport: i0, template: "<c8y-title *ngIf=\"tenant\">\n {{ tenant.company }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Tenants' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Subtenants' | translate\"\n [path]=\"'/tenants'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container>\n <form\n [formGroup]=\"customPropsForm\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"card card--fullpage m-b-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Custom properties\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block\"\n *ngIf=\"!initialized\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <c8y-help src=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\"></c8y-help>\n\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'property-script'\"\n [title]=\"'No custom properties to display.' | translate\"\n [subtitle]=\"'Add a new tenant property in Properties library.' | translate\"\n *ngIf=\"fieldDefinitions?.length === 0 && initialized\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\">\n User guide\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n\n <div\n class=\"card-block\"\n *ngIf=\"initialized\"\n >\n <ng-container *ngFor=\"let field of fieldDefinitions\">\n <c8y-custom-property-field\n [fieldDefinition]=\"field\"\n [form]=\"customPropsForm\"\n ></c8y-custom-property-field>\n </ng-container>\n </div>\n </div>\n\n <div\n class=\"card-footer separator\"\n *ngIf=\"initialized\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [routerLink]=\"['/tenants']\"\n translate\n data-cy=\"custom-properties--cancel-button\"\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!(!customPropsForm.invalid && customPropsForm.dirty)\"\n translate\n data-cy=\"custom-properties--save-button\"\n >\n Save\n </button>\n </div>\n </div>\n </form>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i2.BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: i2.BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: i2.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i2.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: i2.HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: CustomPropertyFieldComponent, selector: "c8y-custom-property-field", inputs: ["fieldDefinition", "form"] }] }); }
|
|
78
98
|
}
|
|
79
99
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CustomPropertiesComponent, decorators: [{
|
|
@@ -86,5 +106,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
86
106
|
RouterLink,
|
|
87
107
|
CustomPropertyFieldComponent
|
|
88
108
|
], template: "<c8y-title *ngIf=\"tenant\">\n {{ tenant.company }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Tenants' | translate\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-layers'\"\n [label]=\"'Subtenants' | translate\"\n [path]=\"'/tenants'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<ng-container>\n <form\n [formGroup]=\"customPropsForm\"\n (ngSubmit)=\"onSubmit()\"\n >\n <div class=\"card card--fullpage m-b-0\">\n <div class=\"card-header separator\">\n <div\n class=\"card-title\"\n translate\n >\n Custom properties\n </div>\n </div>\n\n <div class=\"inner-scroll\">\n <div\n class=\"card-block\"\n *ngIf=\"!initialized\"\n >\n <c8y-loading></c8y-loading>\n </div>\n\n <c8y-help src=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\"></c8y-help>\n\n <!-- empty state -->\n <c8y-ui-empty-state\n [icon]=\"'property-script'\"\n [title]=\"'No custom properties to display.' | translate\"\n [subtitle]=\"'Add a new tenant property in Properties library.' | translate\"\n *ngIf=\"fieldDefinitions?.length === 0 && initialized\"\n >\n <p c8y-guide-docs>\n <small translate>\n Find out more in the\n <a c8y-guide-href=\"/docs/enterprise-tenant/managing-tenants/#custom-properties\">\n User guide\n </a>\n .\n </small>\n </p>\n </c8y-ui-empty-state>\n\n <div\n class=\"card-block\"\n *ngIf=\"initialized\"\n >\n <ng-container *ngFor=\"let field of fieldDefinitions\">\n <c8y-custom-property-field\n [fieldDefinition]=\"field\"\n [form]=\"customPropsForm\"\n ></c8y-custom-property-field>\n </ng-container>\n </div>\n </div>\n\n <div\n class=\"card-footer separator\"\n *ngIf=\"initialized\"\n >\n <button\n class=\"btn btn-default\"\n type=\"button\"\n [routerLink]=\"['/tenants']\"\n translate\n data-cy=\"custom-properties--cancel-button\"\n >\n Cancel\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!(!customPropsForm.invalid && customPropsForm.dirty)\"\n translate\n data-cy=\"custom-properties--save-button\"\n >\n Save\n </button>\n </div>\n </div>\n </form>\n</ng-container>\n" }]
|
|
89
|
-
}], ctorParameters: () => [{ type: i1.TenantService }, { type: i2.AlertService }, { type: i3.ActivatedRoute }, { type: i4.CustomPropertiesService }] });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb3BlcnRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVuYW50cy9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydGllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi90ZW5hbnRzL2N1c3RvbS1wcm9wZXJ0aWVzL2N1c3RvbS1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQ0wsdUJBQXVCLEVBRXhCLE1BQU0sZ0RBQWdELENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNEVBQTRFLENBQUM7Ozs7Ozs7O0FBZTFILE1BQU0sT0FBTyx5QkFBeUI7SUFNcEMsWUFDVSxhQUE0QixFQUM1QixZQUEwQixFQUMxQixjQUE4QixFQUM5Qix1QkFBZ0Q7UUFIaEQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFSMUQsb0JBQWUsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMvQyxXQUFN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QUNWLFVBQVUsb09BQ1YsNEJBQTRCOzs0RkFJbkIseUJBQXlCO2tCQWJyQyxTQUFTOytCQUNFLHVCQUF1QixjQUNyQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixVQUFVO3dCQUNWLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElSZXN1bHQsIElUZW5hbnQsIFRlbmFudFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIENvcmVNb2R1bGUsIEZvcm1zTW9kdWxlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBDdXN0b21Qcm9wZXJ0aWVzU2VydmljZSxcbiAgVGVuYW50Q3VzdG9tUHJvcGVydHlGaWVsZFxufSBmcm9tICcuLi9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydGllcy5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVByb3BlcnR5RmllbGRDb21wb25lbnQgfSBmcm9tICcuLi9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydHktZmllbGQvY3VzdG9tLXByb3BlcnR5LWZpZWxkLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1jdXN0b20tcHJvcGVydGllcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgQ3VzdG9tUHJvcGVydHlGaWVsZENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVByb3BlcnRpZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmaWVsZERlZmluaXRpb25zOiBUZW5hbnRDdXN0b21Qcm9wZXJ0eUZpZWxkW107XG4gIGN1c3RvbVByb3BzRm9ybTogRm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG4gIHRlbmFudDogSVRlbmFudCB8IG51bGwgPSBudWxsO1xuICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVuYW50U2VydmljZTogVGVuYW50U2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgY3VzdG9tUHJvcGVydGllc1NlcnZpY2U6IEN1c3RvbVByb3BlcnRpZXNTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRUZW5hbnREZXRhaWxzKCk7XG4gICAgY29uc3QgeyBmb3JtLCBmaWVsZHMgfSA9IGF3YWl0IHRoaXMuY3VzdG9tUHJvcGVydGllc1NlcnZpY2UuZ2V0Rm9ybUFuZEZpZWxkTGlzdCgpO1xuICAgIHRoaXMuY3VzdG9tUHJvcHNGb3JtID0gZm9ybTtcbiAgICB0aGlzLmZpZWxkRGVmaW5pdGlvbnMgPSBmaWVsZHM7XG4gICAgdGhpcy5hcHBseVZhbHVlc0Zyb21UZW5hbnQoKTtcbiAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIG9uU3VibWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmN1c3RvbVByb3BzRm9ybS5pbnZhbGlkIHx8ICF0aGlzLnRlbmFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRUZW5hbnQ6IElUZW5hbnQgPSB7XG4gICAgICAuLi50aGlzLnRlbmFudCxcbiAgICAgIGN1c3RvbVByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4udGhpcy50ZW5hbnQuY3VzdG9tUHJvcGVydGllcyxcbiAgICAgICAgLi4udGhpcy5nZXREaXJ0eVZhbHVlcygpXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UudXBkYXRlKHVwZGF0ZWRUZW5hbnQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDdXN0b20gcHJvcGVydGllcyB2YWx1ZXMgc2F2ZWQuJykpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRUZW5hbnREZXRhaWxzKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQ6IElSZXN1bHQ8SVRlbmFudD4gPSBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UuZGV0YWlsKFxuICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhLmlkXG4gICAgICApO1xuICAgICAgdGhpcy50ZW5hbnQgPSByZXN1bHQuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZhbHVlc0Zyb21UZW5hbnQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VzdG9tUHJvcHMgPSB0aGlzLnRlbmFudD8uY3VzdG9tUHJvcGVydGllcyB8fCB7fTtcbiAgICB0aGlzLmN1c3RvbVByb3BzRm9ybS5wYXRjaFZhbHVlKGN1c3RvbVByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlydHlWYWx1ZXMoKTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0ge1xuICAgIGNvbnN0IGRpcnR5VmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHRoaXMuY3VzdG9tUHJvcHNGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXN0b21Qcm9wc0Zvcm0uY29udHJvbHNba2V5XTtcbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBkaXJ0eVZhbHVlc1trZXldID0gY29udHJvbC52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkaXJ0eVZhbHVlcztcbiAgfVxufVxuIiwiPGM4eS10aXRsZSAqbmdJZj1cInRlbmFudFwiPlxuICB7eyB0ZW5hbnQuY29tcGFueSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWxheWVycydcIlxuICAgIFtsYWJlbF09XCInVGVuYW50cycgfCB0cmFuc2xhdGVcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktbGF5ZXJzJ1wiXG4gICAgW2xhYmVsXT1cIidTdWJ0ZW5hbnRzJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJy90ZW5hbnRzJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG48L2M4eS1icmVhZGNydW1iPlxuXG48bmctY29udGFpbmVyPlxuICA8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiY3VzdG9tUHJvcHNGb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZSBtLWItMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLXRpdGxlXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgPlxuICAgICAgICAgIEN1c3RvbSBwcm9wZXJ0aWVzXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9ja1wiXG4gICAgICAgICAgKm5nSWY9XCIhaW5pdGlhbGl6ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1sb2FkaW5nPjwvYzh5LWxvYWRpbmc+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxjOHktaGVscCBzcmM9XCIvZG9jcy9lbnRlcnByaXNlLXRlbmFudC9tYW5hZ2luZy10ZW5hbnRzLyNjdXN0b20tcHJvcGVydGllc1wiPjwvYzh5LWhlbHA+XG5cbiAgICAgICAgPCEtLSBlbXB0eSBzdGF0ZSAtLT5cbiAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgIFtpY29uXT1cIidwcm9wZXJ0eS1zY3JpcHQnXCJcbiAgICAgICAgICBbdGl0bGVdPVwiJ05vIGN1c3RvbSBwcm9wZXJ0aWVzIHRvIGRpc3BsYXkuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cIidBZGQgYSBuZXcgdGVuYW50IHByb3BlcnR5IGluIFByb3BlcnRpZXMgbGlicmFyeS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAqbmdJZj1cImZpZWxkRGVmaW5pdGlvbnM/Lmxlbmd0aCA9PT0gMCAmJiBpbml0aWFsaXplZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8cCBjOHktZ3VpZGUtZG9jcz5cbiAgICAgICAgICAgIDxzbWFsbCB0cmFuc2xhdGU+XG4gICAgICAgICAgICAgIEZpbmQgb3V0IG1vcmUgaW4gdGhlXG4gICAgICAgICAgICAgIDxhIGM4eS1ndWlkZS1ocmVmPVwiL2RvY3MvZW50ZXJwcmlzZS10ZW5hbnQvbWFuYWdpbmctdGVuYW50cy8jY3VzdG9tLXByb3BlcnRpZXNcIj5cbiAgICAgICAgICAgICAgICBVc2VyIGd1aWRlXG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2tcIlxuICAgICAgICAgICpuZ0lmPVwiaW5pdGlhbGl6ZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGREZWZpbml0aW9uc1wiPlxuICAgICAgICAgICAgPGM4eS1jdXN0b20tcHJvcGVydHktZmllbGRcbiAgICAgICAgICAgICAgW2ZpZWxkRGVmaW5pdGlvbl09XCJmaWVsZFwiXG4gICAgICAgICAgICAgIFtmb3JtXT1cImN1c3RvbVByb3BzRm9ybVwiXG4gICAgICAgICAgICA+PC9jOHktY3VzdG9tLXByb3BlcnR5LWZpZWxkPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY2FyZC1mb290ZXIgc2VwYXJhdG9yXCJcbiAgICAgICAgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW3JvdXRlckxpbmtdPVwiWycvdGVuYW50cyddXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBkYXRhLWN5PVwiY3VzdG9tLXByb3BlcnRpZXMtLWNhbmNlbC1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhKCFjdXN0b21Qcm9wc0Zvcm0uaW52YWxpZCAmJiBjdXN0b21Qcm9wc0Zvcm0uZGlydHkpXCJcbiAgICAgICAgICB0cmFuc2xhdGVcbiAgICAgICAgICBkYXRhLWN5PVwiY3VzdG9tLXByb3BlcnRpZXMtLXNhdmUtYnV0dG9uXCJcbiAgICAgICAgPlxuICAgICAgICAgIFNhdmVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
109
|
+
}], ctorParameters: () => [{ type: i1.TenantService }, { type: i2.AlertService }, { type: i3.ActivatedRoute }, { type: i4.CustomPropertiesService }, { type: i2.GainsightService }] });
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXByb3BlcnRpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVuYW50cy9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydGllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi90ZW5hbnRzL2N1c3RvbS1wcm9wZXJ0aWVzL2N1c3RvbS1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQW9CLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2pCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHVCQUF1QixFQUV4QixNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDRFQUE0RSxDQUFDO0FBQzFILE9BQU8sRUFFTCxvQ0FBb0MsRUFFckMsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBRXRDLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxvQ0FBb0MsQ0FBQztBQWV0RixNQUFNLE9BQU8seUJBQXlCO0lBTXBDLFlBQ1UsYUFBNEIsRUFDNUIsWUFBMEIsRUFDMUIsY0FBOEIsRUFDOUIsdUJB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QixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsVUFBVTt3QkFDVixVQUFVO3dCQUNWLDRCQUE0QjtxQkFDN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElSZXN1bHQsIElUZW5hbnQsIFRlbmFudFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyTGluayB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIENvcmVNb2R1bGUsXG4gIEZvcm1zTW9kdWxlLFxuICBnZXR0ZXh0LFxuICBHYWluc2lnaHRTZXJ2aWNlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ3VzdG9tUHJvcGVydGllc1NlcnZpY2UsXG4gIFRlbmFudEN1c3RvbVByb3BlcnR5RmllbGRcbn0gZnJvbSAnLi4vY3VzdG9tLXByb3BlcnRpZXMvY3VzdG9tLXByb3BlcnRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21Qcm9wZXJ0eUZpZWxkQ29tcG9uZW50IH0gZnJvbSAnLi4vY3VzdG9tLXByb3BlcnRpZXMvY3VzdG9tLXByb3BlcnR5LWZpZWxkL2N1c3RvbS1wcm9wZXJ0eS1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgVGVuYW50TWFuYWdlbWVudEFjdGlvblR5cGUsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9URU5BTlRfTUFOQUdFTUVOVCxcbiAgVGVuYW50TWFuYWdlbWVudFJlc3VsdFR5cGVcbn0gZnJvbSAnLi4vdGVuYW50cy5tb2RlbCc7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCB7IEFDVElPTlMsIEVWRU5UUywgQ09NUE9ORU5UUywgUkVTVUxUUyB9ID0gUFJPRFVDVF9FWFBFUklFTkNFX1RFTkFOVF9NQU5BR0VNRU5UO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktY3VzdG9tLXByb3BlcnRpZXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ29yZU1vZHVsZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIEN1c3RvbVByb3BlcnR5RmllbGRDb21wb25lbnRcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21Qcm9wZXJ0aWVzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZmllbGREZWZpbml0aW9uczogVGVuYW50Q3VzdG9tUHJvcGVydHlGaWVsZFtdO1xuICBjdXN0b21Qcm9wc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICB0ZW5hbnQ6IElUZW5hbnQgfCBudWxsID0gbnVsbDtcbiAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbmFudFNlcnZpY2U6IFRlbmFudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGN1c3RvbVByb3BlcnRpZXNTZXJ2aWNlOiBDdXN0b21Qcm9wZXJ0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IHRoaXMubG9hZFRlbmFudERldGFpbHMoKTtcbiAgICBjb25zdCB7IGZvcm0sIGZpZWxkcyB9ID0gYXdhaXQgdGhpcy5jdXN0b21Qcm9wZXJ0aWVzU2VydmljZS5nZXRGb3JtQW5kRmllbGRMaXN0KCk7XG4gICAgdGhpcy5jdXN0b21Qcm9wc0Zvcm0gPSBmb3JtO1xuICAgIHRoaXMuZmllbGREZWZpbml0aW9ucyA9IGZpZWxkcztcbiAgICB0aGlzLmFwcGx5VmFsdWVzRnJvbVRlbmFudCgpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgdGhpcy5zZW5kR2FpbnNpZ2h0RXZlbnQoQUNUSU9OUy5URU5BTlRfQ1VTVE9NX1BST1BFUlRJRVNfT1BFTkVEKTtcblxuICAgIHRoaXMuY3VzdG9tUHJvcHNGb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnNlbmRHYWluc2lnaHRFdmVudChBQ1RJT05TLlRFTkFOVF9DVVNUT01fUFJPUEVSVElFU19TVEFSVEVEX0NIQU5HSU5HKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uU3VibWl0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmN1c3RvbVByb3BzRm9ybS5pbnZhbGlkIHx8ICF0aGlzLnRlbmFudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZWRUZW5hbnQ6IElUZW5hbnQgPSB7XG4gICAgICAuLi50aGlzLnRlbmFudCxcbiAgICAgIGN1c3RvbVByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4udGhpcy50ZW5hbnQuY3VzdG9tUHJvcGVydGllcyxcbiAgICAgICAgLi4udGhpcy5nZXREaXJ0eVZhbHVlcygpXG4gICAgICB9XG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UudXBkYXRlKHVwZGF0ZWRUZW5hbnQpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdDdXN0b20gcHJvcGVydGllcyB2YWx1ZXMgc2F2ZWQuJykpO1xuICAgICAgdGhpcy5zZW5kR2FpbnNpZ2h0RXZlbnQoQUNUSU9OUy5URU5BTlRfQ1VTVE9NX1BST1BFUlRJRVNfU0FWRUQsIHsgcmVzdWx0OiBSRVNVTFRTLlNVQ0NFU1MgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXJyb3IpO1xuICAgICAgdGhpcy5zZW5kR2FpbnNpZ2h0RXZlbnQoQUNUSU9OUy5URU5BTlRfQ1VTVE9NX1BST1BFUlRJRVNfU0FWRUQsIHtcbiAgICAgICAgcmVzdWx0OiBSRVNVTFRTLkZBSUxVUkUsXG4gICAgICAgIGVycm9yXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGxvYWRUZW5hbnREZXRhaWxzKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQ6IElSZXN1bHQ8SVRlbmFudD4gPSBhd2FpdCB0aGlzLnRlbmFudFNlcnZpY2UuZGV0YWlsKFxuICAgICAgICB0aGlzLmFjdGl2YXRlZFJvdXRlLnNuYXBzaG90LnBhcmVudC5kYXRhLmNvbnRleHREYXRhLmlkXG4gICAgICApO1xuICAgICAgdGhpcy50ZW5hbnQgPSByZXN1bHQuZGF0YTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVZhbHVlc0Zyb21UZW5hbnQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VzdG9tUHJvcHMgPSB0aGlzLnRlbmFudD8uY3VzdG9tUHJvcGVydGllcyB8fCB7fTtcbiAgICB0aGlzLmN1c3RvbVByb3BzRm9ybS5wYXRjaFZhbHVlKGN1c3RvbVByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGlydHlWYWx1ZXMoKTogeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0ge1xuICAgIGNvbnN0IGRpcnR5VmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfSA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHRoaXMuY3VzdG9tUHJvcHNGb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5jdXN0b21Qcm9wc0Zvcm0uY29udHJvbHNba2V5XTtcbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC52YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICBkaXJ0eVZhbHVlc1trZXldID0gY29udHJvbC52YWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBkaXJ0eVZhbHVlcztcbiAgfVxuXG4gIHByaXZhdGUgc2VuZEdhaW5zaWdodEV2ZW50KFxuICAgIGFjdGlvbjogVGVuYW50TWFuYWdlbWVudEFjdGlvblR5cGUsXG4gICAgcHJvcHM6IHsgcmVzdWx0PzogVGVuYW50TWFuYWdlbWVudFJlc3VsdFR5cGU7IGVycm9yPzogdW5rbm93biB9ID0ge31cbiAgKSB7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChFVkVOVFMuVEVOQU5UX01BTkFHRU1FTlQsIHtcbiAgICAgIGNvbXBvbmVudDogQ09NUE9ORU5UUy5URU5BTlRfQ1VTVE9NX1BST1BFUlRJRVMsXG4gICAgICBhY3Rpb24sXG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlICpuZ0lmPVwidGVuYW50XCI+XG4gIHt7IHRlbmFudC5jb21wYW55IH19XG48L2M4eS10aXRsZT5cblxuPGM4eS1icmVhZGNydW1iPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbVxuICAgIFtpY29uXT1cIidjOHktbGF5ZXJzJ1wiXG4gICAgW2xhYmVsXT1cIidUZW5hbnRzJyB8IHRyYW5zbGF0ZVwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1sYXllcnMnXCJcbiAgICBbbGFiZWxdPVwiJ1N1YnRlbmFudHMnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInL3RlbmFudHMnXCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxuZy1jb250YWluZXI+XG4gIDxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJjdXN0b21Qcm9wc0Zvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtLWZ1bGxwYWdlIG0tYi0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtdGl0bGVcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICA+XG4gICAgICAgICAgQ3VzdG9tIHByb3BlcnRpZXNcbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrXCJcbiAgICAgICAgICAqbmdJZj1cIiFpbml0aWFsaXplZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LWxvYWRpbmc+PC9jOHktbG9hZGluZz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGM4eS1oZWxwIHNyYz1cIi9kb2NzL2VudGVycHJpc2UtdGVuYW50L21hbmFnaW5nLXRlbmFudHMvI2N1c3RvbS1wcm9wZXJ0aWVzXCI+PC9jOHktaGVscD5cblxuICAgICAgICA8IS0tIGVtcHR5IHN0YXRlIC0tPlxuICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgW2ljb25dPVwiJ3Byb3BlcnR5LXNjcmlwdCdcIlxuICAgICAgICAgIFt0aXRsZV09XCInTm8gY3VzdG9tIHByb3BlcnRpZXMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbc3VidGl0bGVdPVwiJ0FkZCBhIG5ldyB0ZW5hbnQgcHJvcGVydHkgaW4gUHJvcGVydGllcyBsaWJyYXJ5LicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICpuZ0lmPVwiZmllbGREZWZpbml0aW9ucz8ubGVuZ3RoID09PSAwICYmIGluaXRpYWxpemVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxwIGM4eS1ndWlkZS1kb2NzPlxuICAgICAgICAgICAgPHNtYWxsIHRyYW5zbGF0ZT5cbiAgICAgICAgICAgICAgRmluZCBvdXQgbW9yZSBpbiB0aGVcbiAgICAgICAgICAgICAgPGEgYzh5LWd1aWRlLWhyZWY9XCIvZG9jcy9lbnRlcnByaXNlLXRlbmFudC9tYW5hZ2luZy10ZW5hbnRzLyNjdXN0b20tcHJvcGVydGllc1wiPlxuICAgICAgICAgICAgICAgIFVzZXIgZ3VpZGVcbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAuXG4gICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9jOHktdWktZW1wdHktc3RhdGU+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9ja1wiXG4gICAgICAgICAgKm5nSWY9XCJpbml0aWFsaXplZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZCBvZiBmaWVsZERlZmluaXRpb25zXCI+XG4gICAgICAgICAgICA8Yzh5LWN1c3RvbS1wcm9wZXJ0eS1maWVsZFxuICAgICAgICAgICAgICBbZmllbGREZWZpbml0aW9uXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgW2Zvcm1dPVwiY3VzdG9tUHJvcHNGb3JtXCJcbiAgICAgICAgICAgID48L2M4eS1jdXN0b20tcHJvcGVydHktZmllbGQ+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjYXJkLWZvb3RlciBzZXBhcmF0b3JcIlxuICAgICAgICAqbmdJZj1cImluaXRpYWxpemVkXCJcbiAgICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbcm91dGVyTGlua109XCJbJy90ZW5hbnRzJ11cIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgIGRhdGEtY3k9XCJjdXN0b20tcHJvcGVydGllcy0tY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgID5cbiAgICAgICAgICBDYW5jZWxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiEoIWN1c3RvbVByb3BzRm9ybS5pbnZhbGlkICYmIGN1c3RvbVByb3BzRm9ybS5kaXJ0eSlcIlxuICAgICAgICAgIHRyYW5zbGF0ZVxuICAgICAgICAgIGRhdGEtY3k9XCJjdXN0b20tcHJvcGVydGllcy0tc2F2ZS1idXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgU2F2ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class ExistingTenantGuard {
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the current route is displayed for an existing tenant.
|
|
6
|
+
*
|
|
7
|
+
* @returns `true` if visiting a route for an existing tenant.
|
|
8
|
+
*/
|
|
9
|
+
canActivate(route) {
|
|
10
|
+
return route.params.id !== 'new';
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExistingTenantGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExistingTenantGuard }); }
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ExistingTenantGuard, decorators: [{
|
|
16
|
+
type: Injectable
|
|
17
|
+
}] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3RpbmctdGVuYW50Lmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVuYW50cy9leGlzdGluZy10ZW5hbnQuZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5Qjs7OztPQUlHO0lBQ0gsV0FBVyxDQUFDLEtBQTZCO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEtBQUssS0FBSyxDQUFDO0lBQ25DLENBQUM7K0dBUlUsbUJBQW1CO21IQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEV4aXN0aW5nVGVuYW50R3VhcmQge1xuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHJvdXRlIGlzIGRpc3BsYXllZCBmb3IgYW4gZXhpc3RpbmcgdGVuYW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdmlzaXRpbmcgYSByb3V0ZSBmb3IgYW4gZXhpc3RpbmcgdGVuYW50LlxuICAgKi9cbiAgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm91dGUucGFyYW1zLmlkICE9PSAnbmV3JztcbiAgfVxufVxuIl19
|
|
@@ -5,5 +5,7 @@ export * from './tenant-list/tenant-list.guard';
|
|
|
5
5
|
export * from './tenant-list/tenant-list.component';
|
|
6
6
|
export * from './tenant-list/creation-time.filtering-form-renderer.component';
|
|
7
7
|
export * from './tenant-list/status.filtering-form-renderer.component';
|
|
8
|
+
export * from './tenant-form/tenant-form.component';
|
|
8
9
|
export * from './custom-properties/custom-properties.component';
|
|
9
|
-
|
|
10
|
+
export * from './support-user-access/support-user-access.component';
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZW5hbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLCtEQUErRCxDQUFDO0FBQzlFLGNBQWMsd0RBQXdELENBQUM7QUFDdkUsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMscURBQXFELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3RlbmFudHMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdGVuYW50cy5tb2RlbCc7XG5leHBvcnQgKiBmcm9tICcuL3RlbmFudHMtbmF2aWdhdGlvbi5mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vdGVuYW50LWxpc3QvdGVuYW50LWxpc3QuZ3VhcmQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW5hbnQtbGlzdC90ZW5hbnQtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW5hbnQtbGlzdC9jcmVhdGlvbi10aW1lLmZpbHRlcmluZy1mb3JtLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3RlbmFudC1saXN0L3N0YXR1cy5maWx0ZXJpbmctZm9ybS1yZW5kZXJlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90ZW5hbnQtZm9ybS90ZW5hbnQtZm9ybS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9jdXN0b20tcHJvcGVydGllcy9jdXN0b20tcHJvcGVydGllcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zdXBwb3J0LXVzZXItYWNjZXNzL3N1cHBvcnQtdXNlci1hY2Nlc3MuY29tcG9uZW50JztcbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { AppStateService, C8yTranslatePipe, CommonModule, TenantUiService, Permissions } from '@c8y/ngx-components';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@c8y/ngx-components";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class SupportUserAccessComponent {
|
|
7
|
+
constructor(tenantUiService, appState, permissions) {
|
|
8
|
+
this.tenantUiService = tenantUiService;
|
|
9
|
+
this.appState = appState;
|
|
10
|
+
this.permissions = permissions;
|
|
11
|
+
}
|
|
12
|
+
async ngOnInit() {
|
|
13
|
+
this.isTopTenant = await this.tenantUiService.isManagementTenant();
|
|
14
|
+
this.setSupportUserLogin();
|
|
15
|
+
}
|
|
16
|
+
async setSupportUserLogin() {
|
|
17
|
+
const currentUser = (await this.appState.currentUser).value;
|
|
18
|
+
if (this.permissions.hasAnyRole([Permissions.ROLE_SUPPORT_ADMIN, Permissions.ROLE_SUPPORT_READ])) {
|
|
19
|
+
this.supportUserLogin = encodeURIComponent(`${currentUser.id}$`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupportUserAccessComponent, deps: [{ token: i1.TenantUiService }, { token: i1.AppStateService }, { token: i1.Permissions }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SupportUserAccessComponent, isStandalone: true, selector: "c8y-support-user-access", inputs: { tenant: "tenant" }, ngImport: i0, template: "<div class=\"card-header separator sticky-top large-padding\">\n <div class=\"card-title fit-w\">\n <i\n class=\"c8y-icon c8y-icon-c8y-support\"\n [ngClass]=\"{ 'c8y-icon-duocolor': tenant.supportUser?.enabled }\"\n ></i>\n {{ 'Support user access' | translate }}\n </div>\n <ng-container *ngIf=\"tenant.supportUser?.enabled && supportUserLogin && isTopTenant\">\n <a\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Log in' | translate }}\"\n href=\"//{{ tenant.domain }}/apps/administration/?user={{ supportUserLogin }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <i c8yIcon=\"external-link\"></i>\n {{ 'Log in' | translate }}\n </a>\n </ng-container>\n</div>\n<div class=\"card-block large-padding\">\n <div class=\"form-group\">\n <label>{{ 'Status' | translate }}</label>\n <div>\n <p class=\"form-control-static\">\n <span\n title=\"{{ 'Disabled' | translate }}\"\n *ngIf=\"!tenant.supportUser?.enabled\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"ban\"\n ></i>\n {{ 'Disabled' | translate }}\n </span>\n <span\n title=\"{{ 'Enabled' | translate }}\"\n *ngIf=\"tenant.supportUser?.enabled\"\n >\n <i\n class=\"text-success\"\n c8yIcon=\"check-circle\"\n ></i>\n {{ 'Enabled' | translate }}\n </span>\n </p>\n </div>\n </div>\n <div class=\"form-group\" data-cy=\"c8y-support-user-access--activeRequestCount\">\n <label>{{ 'Active requests count' | translate }}</label>\n\n <p class=\"form-control-static\">\n <span *ngIf=\"tenant.supportUser?.activeRequestCount\">\n <span class=\"badge badge-danger\">\n {{ tenant.supportUser?.activeRequestCount }}\n </span>\n </span>\n <span *ngIf=\"!tenant.supportUser?.enabled && tenant.supportUser?.activeRequestCount === 0\">\n {{ 'No active requests' | translate }}\n </span>\n <span *ngIf=\"tenant.supportUser?.enabled && tenant.supportUser?.activeRequestCount === 0\">\n {{ 'Not applicable' | translate }}\n </span>\n </p>\n </div>\n <div\n class=\"form-group\"\n *ngIf=\"tenant.supportUser?.enabled\"\n >\n <label>{{ 'Expiry date' | translate }}</label>\n <div>\n <p class=\"form-control-static\">\n <span *ngIf=\"tenant.supportUser?.expiryDate\">\n {{ tenant.supportUser?.expiryDate | c8yDate: 'medium' }}\n </span>\n <span *ngIf=\"!tenant.supportUser?.expiryDate\">{{ 'No limit' | translate }}</span>\n </p>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "c8yDate" }] }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SupportUserAccessComponent, decorators: [{
|
|
26
|
+
type: Component,
|
|
27
|
+
args: [{ selector: 'c8y-support-user-access', standalone: true, imports: [CommonModule, C8yTranslatePipe], template: "<div class=\"card-header separator sticky-top large-padding\">\n <div class=\"card-title fit-w\">\n <i\n class=\"c8y-icon c8y-icon-c8y-support\"\n [ngClass]=\"{ 'c8y-icon-duocolor': tenant.supportUser?.enabled }\"\n ></i>\n {{ 'Support user access' | translate }}\n </div>\n <ng-container *ngIf=\"tenant.supportUser?.enabled && supportUserLogin && isTopTenant\">\n <a\n class=\"btn btn-default btn-xs\"\n title=\"{{ 'Log in' | translate }}\"\n href=\"//{{ tenant.domain }}/apps/administration/?user={{ supportUserLogin }}\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <i c8yIcon=\"external-link\"></i>\n {{ 'Log in' | translate }}\n </a>\n </ng-container>\n</div>\n<div class=\"card-block large-padding\">\n <div class=\"form-group\">\n <label>{{ 'Status' | translate }}</label>\n <div>\n <p class=\"form-control-static\">\n <span\n title=\"{{ 'Disabled' | translate }}\"\n *ngIf=\"!tenant.supportUser?.enabled\"\n >\n <i\n class=\"text-danger\"\n c8yIcon=\"ban\"\n ></i>\n {{ 'Disabled' | translate }}\n </span>\n <span\n title=\"{{ 'Enabled' | translate }}\"\n *ngIf=\"tenant.supportUser?.enabled\"\n >\n <i\n class=\"text-success\"\n c8yIcon=\"check-circle\"\n ></i>\n {{ 'Enabled' | translate }}\n </span>\n </p>\n </div>\n </div>\n <div class=\"form-group\" data-cy=\"c8y-support-user-access--activeRequestCount\">\n <label>{{ 'Active requests count' | translate }}</label>\n\n <p class=\"form-control-static\">\n <span *ngIf=\"tenant.supportUser?.activeRequestCount\">\n <span class=\"badge badge-danger\">\n {{ tenant.supportUser?.activeRequestCount }}\n </span>\n </span>\n <span *ngIf=\"!tenant.supportUser?.enabled && tenant.supportUser?.activeRequestCount === 0\">\n {{ 'No active requests' | translate }}\n </span>\n <span *ngIf=\"tenant.supportUser?.enabled && tenant.supportUser?.activeRequestCount === 0\">\n {{ 'Not applicable' | translate }}\n </span>\n </p>\n </div>\n <div\n class=\"form-group\"\n *ngIf=\"tenant.supportUser?.enabled\"\n >\n <label>{{ 'Expiry date' | translate }}</label>\n <div>\n <p class=\"form-control-static\">\n <span *ngIf=\"tenant.supportUser?.expiryDate\">\n {{ tenant.supportUser?.expiryDate | c8yDate: 'medium' }}\n </span>\n <span *ngIf=\"!tenant.supportUser?.expiryDate\">{{ 'No limit' | translate }}</span>\n </p>\n </div>\n </div>\n</div>\n" }]
|
|
28
|
+
}], ctorParameters: () => [{ type: i1.TenantUiService }, { type: i1.AppStateService }, { type: i1.Permissions }], propDecorators: { tenant: [{
|
|
29
|
+
type: Input
|
|
30
|
+
}] } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC11c2VyLWFjY2Vzcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZW5hbnRzL3N1cHBvcnQtdXNlci1hY2Nlc3Mvc3VwcG9ydC11c2VyLWFjY2Vzcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi90ZW5hbnRzL3N1cHBvcnQtdXNlci1hY2Nlc3Mvc3VwcG9ydC11c2VyLWFjY2Vzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixZQUFZLEVBQ1osZUFBZSxFQUNmLFdBQVcsRUFDWixNQUFNLHFCQUFxQixDQUFDOzs7O0FBUTdCLE1BQU0sT0FBTywwQkFBMEI7SUFPckMsWUFDVSxlQUFnQyxFQUNoQyxRQUF5QixFQUN6QixXQUF3QjtRQUZ4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7SUFDL0IsQ0FBQztJQUVKLEtBQUssQ0FBQyxRQUFRO1FBQ1osSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNuRSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sS0FBSyxDQUFDLG1CQUFtQjtRQUMvQixNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUQsSUFDRSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUM1RixDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLEdBQUcsV0FBVyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkUsQ0FBQztJQUNILENBQUM7K0dBekJVLDBCQUEwQjttR0FBMUIsMEJBQTBCLGlIQ2hCdkMsaXBGQWlGQSwyQ0RwRVksWUFBWTs7NEZBR1gsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNFLHlCQUF5QixjQUN2QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7NElBS3pDLE1BQU07c0JBREwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVRlbmFudCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFwcFN0YXRlU2VydmljZSxcbiAgQzh5VHJhbnNsYXRlUGlwZSxcbiAgQ29tbW9uTW9kdWxlLFxuICBUZW5hbnRVaVNlcnZpY2UsXG4gIFBlcm1pc3Npb25zXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktc3VwcG9ydC11c2VyLWFjY2VzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEM4eVRyYW5zbGF0ZVBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc3VwcG9ydC11c2VyLWFjY2Vzcy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3VwcG9ydFVzZXJBY2Nlc3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICB0ZW5hbnQ6IElUZW5hbnQ7XG5cbiAgaXNUb3BUZW5hbnQ6IGJvb2xlYW47XG4gIHN1cHBvcnRVc2VyTG9naW46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRlbmFudFVpU2VydmljZTogVGVuYW50VWlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zOiBQZXJtaXNzaW9uc1xuICApIHt9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pc1RvcFRlbmFudCA9IGF3YWl0IHRoaXMudGVuYW50VWlTZXJ2aWNlLmlzTWFuYWdlbWVudFRlbmFudCgpO1xuICAgIHRoaXMuc2V0U3VwcG9ydFVzZXJMb2dpbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRTdXBwb3J0VXNlckxvZ2luKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gKGF3YWl0IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIpLnZhbHVlO1xuICAgIGlmIChcbiAgICAgIHRoaXMucGVybWlzc2lvbnMuaGFzQW55Um9sZShbUGVybWlzc2lvbnMuUk9MRV9TVVBQT1JUX0FETUlOLCBQZXJtaXNzaW9ucy5ST0xFX1NVUFBPUlRfUkVBRF0pXG4gICAgKSB7XG4gICAgICB0aGlzLnN1cHBvcnRVc2VyTG9naW4gPSBlbmNvZGVVUklDb21wb25lbnQoYCR7Y3VycmVudFVzZXIuaWR9JGApO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvciBzdGlja3ktdG9wIGxhcmdlLXBhZGRpbmdcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGUgZml0LXdcIj5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJjOHktaWNvbiBjOHktaWNvbi1jOHktc3VwcG9ydFwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdjOHktaWNvbi1kdW9jb2xvcic6IHRlbmFudC5zdXBwb3J0VXNlcj8uZW5hYmxlZCB9XCJcbiAgICA+PC9pPlxuICAgIHt7ICdTdXBwb3J0IHVzZXIgYWNjZXNzJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRlbmFudC5zdXBwb3J0VXNlcj8uZW5hYmxlZCAmJiBzdXBwb3J0VXNlckxvZ2luICYmIGlzVG9wVGVuYW50XCI+XG4gICAgPGFcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi14c1wiXG4gICAgICB0aXRsZT1cInt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgIGhyZWY9XCIvL3t7IHRlbmFudC5kb21haW4gfX0vYXBwcy9hZG1pbmlzdHJhdGlvbi8/dXNlcj17eyBzdXBwb3J0VXNlckxvZ2luIH19XCJcbiAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICA+XG4gICAgICA8aSBjOHlJY29uPVwiZXh0ZXJuYWwtbGlua1wiPjwvaT5cbiAgICAgIHt7ICdMb2cgaW4nIHwgdHJhbnNsYXRlIH19XG4gICAgPC9hPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgbGFyZ2UtcGFkZGluZ1wiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbD57eyAnU3RhdHVzJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgPGRpdj5cbiAgICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHRpdGxlPVwie3sgJ0Rpc2FibGVkJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgKm5nSWY9XCIhdGVuYW50LnN1cHBvcnRVc2VyPy5lbmFibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgIGM4eUljb249XCJiYW5cIlxuICAgICAgICAgID48L2k+XG4gICAgICAgICAge3sgJ0Rpc2FibGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgdGl0bGU9XCJ7eyAnRW5hYmxlZCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICpuZ0lmPVwidGVuYW50LnN1cHBvcnRVc2VyPy5lbmFibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtc3VjY2Vzc1wiXG4gICAgICAgICAgICBjOHlJY29uPVwiY2hlY2stY2lyY2xlXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICAgIHt7ICdFbmFibGVkJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L3A+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIGRhdGEtY3k9XCJjOHktc3VwcG9ydC11c2VyLWFjY2Vzcy0tYWN0aXZlUmVxdWVzdENvdW50XCI+XG4gICAgPGxhYmVsPnt7ICdBY3RpdmUgcmVxdWVzdHMgY291bnQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cblxuICAgIDxwIGNsYXNzPVwiZm9ybS1jb250cm9sLXN0YXRpY1wiPlxuICAgICAgPHNwYW4gKm5nSWY9XCJ0ZW5hbnQuc3VwcG9ydFVzZXI/LmFjdGl2ZVJlcXVlc3RDb3VudFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWRhbmdlclwiPlxuICAgICAgICAgIHt7IHRlbmFudC5zdXBwb3J0VXNlcj8uYWN0aXZlUmVxdWVzdENvdW50IH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiIXRlbmFudC5zdXBwb3J0VXNlcj8uZW5hYmxlZCAmJiB0ZW5hbnQuc3VwcG9ydFVzZXI/LmFjdGl2ZVJlcXVlc3RDb3VudCA9PT0gMFwiPlxuICAgICAgICB7eyAnTm8gYWN0aXZlIHJlcXVlc3RzJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCJ0ZW5hbnQuc3VwcG9ydFVzZXI/LmVuYWJsZWQgJiYgdGVuYW50LnN1cHBvcnRVc2VyPy5hY3RpdmVSZXF1ZXN0Q291bnQgPT09IDBcIj5cbiAgICAgICAge3sgJ05vdCBhcHBsaWNhYmxlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cImZvcm0tZ3JvdXBcIlxuICAgICpuZ0lmPVwidGVuYW50LnN1cHBvcnRVc2VyPy5lbmFibGVkXCJcbiAgPlxuICAgIDxsYWJlbD57eyAnRXhwaXJ5IGRhdGUnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cbiAgICA8ZGl2PlxuICAgICAgPHAgY2xhc3M9XCJmb3JtLWNvbnRyb2wtc3RhdGljXCI+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwidGVuYW50LnN1cHBvcnRVc2VyPy5leHBpcnlEYXRlXCI+XG4gICAgICAgICAge3sgdGVuYW50LnN1cHBvcnRVc2VyPy5leHBpcnlEYXRlIHwgYzh5RGF0ZTogJ21lZGl1bScgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8c3BhbiAqbmdJZj1cIiF0ZW5hbnQuc3VwcG9ydFVzZXI/LmV4cGlyeURhdGVcIj57eyAnTm8gbGltaXQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPC9wPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Validators } from '@angular/forms';
|
|
2
|
+
import { gettext } from '@c8y/ngx-components/gettext';
|
|
3
|
+
import { ValidationPattern, validateInternationalPhoneNumber } from '@c8y/ngx-components';
|
|
4
|
+
/**
|
|
5
|
+
* Define all hardTyped tenant form fields, checkboxes and select elements.
|
|
6
|
+
*
|
|
7
|
+
* while still benefiting from hard typing, thanks to "satisfies" keyword
|
|
8
|
+
*/
|
|
9
|
+
const tenantPropertiesDefinitions = {
|
|
10
|
+
tenantID: {
|
|
11
|
+
id: 'tenantId',
|
|
12
|
+
validators: [],
|
|
13
|
+
defaultValue: null,
|
|
14
|
+
type: 'text',
|
|
15
|
+
label: gettext('ID')
|
|
16
|
+
},
|
|
17
|
+
domain: {
|
|
18
|
+
id: 'domain',
|
|
19
|
+
validators: [
|
|
20
|
+
Validators.required,
|
|
21
|
+
Validators.maxLength(32),
|
|
22
|
+
// TODO: To be consistent, pattern should be change for domain. It is tenantId, to avoid breaking tests, and be consistent with previous implementation.
|
|
23
|
+
Validators.pattern(ValidationPattern.rules.tenantId.pattern)
|
|
24
|
+
],
|
|
25
|
+
defaultValue: null,
|
|
26
|
+
type: 'text',
|
|
27
|
+
label: gettext('Domain/URL'),
|
|
28
|
+
placeholder: gettext('e.g. my-tenant`used in URL`')
|
|
29
|
+
},
|
|
30
|
+
companyName: {
|
|
31
|
+
id: 'companyName',
|
|
32
|
+
validators: [
|
|
33
|
+
Validators.required,
|
|
34
|
+
Validators.maxLength(256),
|
|
35
|
+
Validators.pattern(ValidationPattern.rules.noWhiteSpaceAtBeginning.pattern)
|
|
36
|
+
],
|
|
37
|
+
defaultValue: null,
|
|
38
|
+
type: 'text',
|
|
39
|
+
label: gettext('Name'),
|
|
40
|
+
placeholder: gettext('e.g. Company A')
|
|
41
|
+
},
|
|
42
|
+
contactName: {
|
|
43
|
+
id: 'contactName',
|
|
44
|
+
validators: [Validators.maxLength(30)],
|
|
45
|
+
defaultValue: null,
|
|
46
|
+
type: 'text',
|
|
47
|
+
label: gettext('Contact name'),
|
|
48
|
+
placeholder: gettext('e.g. Joe Doe`LOCALIZE`')
|
|
49
|
+
},
|
|
50
|
+
contactPhone: {
|
|
51
|
+
id: 'contactPhone',
|
|
52
|
+
validators: [Validators.required, validateInternationalPhoneNumber(), Validators.maxLength(20)],
|
|
53
|
+
defaultValue: null,
|
|
54
|
+
type: 'text',
|
|
55
|
+
label: gettext('Contact phone'),
|
|
56
|
+
placeholder: gettext('e.g. +49 9 876 543 210`LOCALIZE`')
|
|
57
|
+
},
|
|
58
|
+
administratorEmail: {
|
|
59
|
+
id: 'administratorEmail',
|
|
60
|
+
validators: [Validators.required, Validators.email, Validators.maxLength(256)],
|
|
61
|
+
defaultValue: null,
|
|
62
|
+
type: 'text',
|
|
63
|
+
label: gettext(`Administrator's email`),
|
|
64
|
+
placeholder: gettext('e.g. joe.doe@example.com`LOCALIZE`')
|
|
65
|
+
},
|
|
66
|
+
administratorUsername: {
|
|
67
|
+
id: 'administratorUsername',
|
|
68
|
+
validators: [
|
|
69
|
+
Validators.required,
|
|
70
|
+
Validators.pattern(ValidationPattern.rules.user.pattern),
|
|
71
|
+
Validators.maxLength(256)
|
|
72
|
+
],
|
|
73
|
+
defaultValue: null,
|
|
74
|
+
type: 'text',
|
|
75
|
+
label: gettext(`Administrator's username`),
|
|
76
|
+
placeholder: gettext('e.g. joe`LOCALIZE`')
|
|
77
|
+
},
|
|
78
|
+
externalReference: {
|
|
79
|
+
id: 'externalReference',
|
|
80
|
+
validators: [],
|
|
81
|
+
defaultValue: null,
|
|
82
|
+
type: 'text',
|
|
83
|
+
label: gettext('External reference'),
|
|
84
|
+
placeholder: gettext('e.g. REF12345`reference number`')
|
|
85
|
+
},
|
|
86
|
+
sendPasswordResetEmail: {
|
|
87
|
+
id: 'sendPasswordResetEmail',
|
|
88
|
+
validators: [],
|
|
89
|
+
defaultValue: true,
|
|
90
|
+
type: 'checkbox',
|
|
91
|
+
label: gettext('Send password reset link as email')
|
|
92
|
+
},
|
|
93
|
+
tenantPolicy: {
|
|
94
|
+
id: 'tenantPolicy',
|
|
95
|
+
validators: [],
|
|
96
|
+
defaultValue: null,
|
|
97
|
+
type: 'select',
|
|
98
|
+
label: gettext('Tenant policy')
|
|
99
|
+
},
|
|
100
|
+
allowCreateTenants: {
|
|
101
|
+
id: 'allowCreateTenants',
|
|
102
|
+
validators: [],
|
|
103
|
+
defaultValue: null,
|
|
104
|
+
type: 'checkbox',
|
|
105
|
+
label: gettext('Allow creation of subtenants')
|
|
106
|
+
},
|
|
107
|
+
gainsightEnabled: {
|
|
108
|
+
id: 'gainsightEnabled',
|
|
109
|
+
validators: [],
|
|
110
|
+
defaultValue: false,
|
|
111
|
+
type: 'checkbox',
|
|
112
|
+
label: gettext('Enable Gainsight product experience tracking')
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
export const tenantFormInputsDefinitions = tenantPropertiesDefinitions;
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWZvcm0taW5wdXRzLWRlZmluaXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVuYW50cy90ZW5hbnQtZm9ybS90ZW5hbnQtZm9ybS1pbnB1dHMtZGVmaW5pdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVkxRjs7OztHQUlHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLEVBQUUsRUFBRSxRQUFRO1FBQ1osVUFBVSxFQUFFO1lBQ1YsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsd0pBQXdKO1lBQ3hKLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDN0Q7UUFDRCxZQUFZLEVBQUUsSUFBSTtRQUNsQixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzVCLFdBQVcsRUFBRSxPQUFPLENBQUMsNkJBQTZCLENBQUM7S0FDcEQ7SUFDRCxXQUFXLEVBQUU7UUFDWCxFQUFFLEVBQUUsYUFBYTtRQUNqQixVQUFVLEVBQUU7WUFDVixVQUFVLENBQUMsUUFBUTtZQUNuQixVQUFVLENBQUMsU0FBUyxDQUFD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QUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsOEJBQThCLENBQUM7S0FDL0M7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLFVBQVUsRUFBRSxFQUFFO1FBQ2QsWUFBWSxFQUFFLEtBQUs7UUFDbkIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztLQUMvRDtDQUNpRCxDQUFDO0FBSXJELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUVwQywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZ2V0dGV4dCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUGF0dGVybiwgdmFsaWRhdGVJbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXIgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuLy8gTW9kZWwgZm9yIGluZGl2aWR1YWwgdGVuYW50IGZvcm0gZmllbGRzXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudFByb3BlcnR5RGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGw7XG4gIHR5cGU6ICd0ZXh0JyB8ICdjaGVja2JveCcgfCAnbnVtYmVyJyB8ICdzZWxlY3QnO1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmUgYWxsIGhhcmRUeXBlZCB0ZW5hbnQgZm9ybSBmaWVsZHMsIGNoZWNrYm94ZXMgYW5kIHNlbGVjdCBlbGVtZW50cy5cbiAqXG4gKiB3aGlsZSBzdGlsbCBiZW5lZml0aW5nIGZyb20gaGFyZCB0eXBpbmcsIHRoYW5rcyB0byBcInNhdGlzZmllc1wiIGtleXdvcmRcbiAqL1xuY29uc3QgdGVuYW50UHJvcGVydGllc0RlZmluaXRpb25zID0ge1xuICB0ZW5hbnRJRDoge1xuICAgIGlkOiAndGVuYW50SWQnLFxuICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0lEJylcbiAgfSxcbiAgZG9tYWluOiB7XG4gICAgaWQ6ICdkb21haW4nLFxuICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgzMiksXG4gICAgICAvLyBUT0RPOiBUbyBiZSBjb25zaXN0ZW50LCBwYXR0ZXJuIHNob3VsZCBiZSBjaGFuZ2UgZm9yIGRvbWFpbi4gSXQgaXMgdGVuYW50SWQsIHRvIGF2b2lkIGJyZWFraW5nIHRlc3RzLCBhbmQgYmUgY29uc2lzdGVudCB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLlxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFZhbGlkYXRpb25QYXR0ZXJuLnJ1bGVzLnRlbmFudElkLnBhdHRlcm4pXG4gICAgXSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdEb21haW4vVVJMJyksXG4gICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ2UuZy4gbXktdGVuYW50YHVzZWQgaW4gVVJMYCcpXG4gIH0sXG4gIGNvbXBhbnlOYW1lOiB7XG4gICAgaWQ6ICdjb21wYW55TmFtZScsXG4gICAgdmFsaWRhdG9yczogW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NiksXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oVmFsaWRhdGlvblBhdHRlcm4ucnVsZXMubm9XaGl0ZVNwYWNlQXRCZWdpbm5pbmcucGF0dGVybilcbiAgICBdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ05hbWUnKSxcbiAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnZS5nLiBDb21wYW55IEEnKVxuICB9LFxuICBjb250YWN0TmFtZToge1xuICAgIGlkOiAnY29udGFjdE5hbWUnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1heExlbmd0aCgzMCldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0NvbnRhY3QgbmFtZScpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIEpvZSBEb2VgTE9DQUxJWkVgJylcbiAgfSxcbiAgY29udGFjdFBob25lOiB7XG4gICAgaWQ6ICdjb250YWN0UGhvbmUnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB2YWxpZGF0ZUludGVybmF0aW9uYWxQaG9uZU51bWJlcigpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0NvbnRhY3QgcGhvbmUnKSxcbiAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnZS5nLiArNDkgOSA4NzYgNTQzIDIxMGBMT0NBTElaRWAnKVxuICB9LFxuICBhZG1pbmlzdHJhdG9yRW1haWw6IHtcbiAgICBpZDogJ2FkbWluaXN0cmF0b3JFbWFpbCcsXG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoYEFkbWluaXN0cmF0b3IncyBlbWFpbGApLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIGpvZS5kb2VAZXhhbXBsZS5jb21gTE9DQUxJWkVgJylcbiAgfSxcbiAgYWRtaW5pc3RyYXRvclVzZXJuYW1lOiB7XG4gICAgaWQ6ICdhZG1pbmlzdHJhdG9yVXNlcm5hbWUnLFxuICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oVmFsaWRhdGlvblBhdHRlcm4ucnVsZXMudXNlci5wYXR0ZXJuKSxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NilcbiAgICBdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoYEFkbWluaXN0cmF0b3IncyB1c2VybmFtZWApLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIGpvZWBMT0NBTElaRWAnKVxuICB9LFxuICBleHRlcm5hbFJlZmVyZW5jZToge1xuICAgIGlkOiAnZXh0ZXJuYWxSZWZlcmVuY2UnLFxuICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0V4dGVybmFsIHJlZmVyZW5jZScpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIFJFRjEyMzQ1YHJlZmVyZW5jZSBudW1iZXJgJylcbiAgfSxcbiAgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbDoge1xuICAgIGlkOiAnc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCcsXG4gICAgdmFsaWRhdG9yczogW10sXG4gICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ1NlbmQgcGFzc3dvcmQgcmVzZXQgbGluayBhcyBlbWFpbCcpXG4gIH0sXG4gIHRlbmFudFBvbGljeToge1xuICAgIGlkOiAndGVuYW50UG9saWN5JyxcbiAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ1RlbmFudCBwb2xpY3knKVxuICB9LFxuICBhbGxvd0NyZWF0ZVRlbmFudHM6IHtcbiAgICBpZDogJ2FsbG93Q3JlYXRlVGVuYW50cycsXG4gICAgdmFsaWRhdG9yczogW10sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0FsbG93IGNyZWF0aW9uIG9mIHN1YnRlbmFudHMnKVxuICB9LFxuICBnYWluc2lnaHRFbmFibGVkOiB7XG4gICAgaWQ6ICdnYWluc2lnaHRFbmFibGVkJyxcbiAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0VuYWJsZSBHYWluc2lnaHQgcHJvZHVjdCBleHBlcmllbmNlIHRyYWNraW5nJylcbiAgfVxufSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgVGVuYW50UHJvcGVydHlEZWZpbml0aW9uPjtcblxudHlwZSBUZW5hbnRQcm9wZXJ0aWVzS2V5cyA9IGtleW9mIHR5cGVvZiB0ZW5hbnRQcm9wZXJ0aWVzRGVmaW5pdGlvbnM7XG5cbmV4cG9ydCBjb25zdCB0ZW5hbnRGb3JtSW5wdXRzRGVmaW5pdGlvbnM6IHtcbiAgW0sgaW4gVGVuYW50UHJvcGVydGllc0tleXNdOiBUZW5hbnRQcm9wZXJ0eURlZmluaXRpb247XG59ID0gdGVuYW50UHJvcGVydGllc0RlZmluaXRpb25zO1xuIl19
|