@alfresco/adf-process-services-cloud 8.1.0-15467664243 → 8.1.0-15469386840
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/bundles/assets/adf-process-services-cloud/i18n/de.json +2 -2
- package/fesm2022/adf-process-services-cloud.mjs +355 -351
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/lib/process/process-filters/models/process-filter-cloud.model.d.ts +1 -0
- package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
- package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
- package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/adf-process-services-cloud.mjs +0 -5
- package/esm2022/lib/app/app-list-cloud.module.mjs +0 -20
- package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +0 -67
- package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +0 -126
- package/esm2022/lib/app/models/application-instance.model.mjs +0 -24
- package/esm2022/lib/app/public-api.mjs +0 -22
- package/esm2022/lib/app/services/apps-process-cloud.service.mjs +0 -97
- package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +0 -164
- package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +0 -97
- package/esm2022/lib/common/index.mjs +0 -18
- package/esm2022/lib/common/interface/environment.interface.mjs +0 -18
- package/esm2022/lib/common/interface/index.mjs +0 -18
- package/esm2022/lib/common/interface/public-api.mjs +0 -18
- package/esm2022/lib/common/public-api.mjs +0 -19
- package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +0 -57
- package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +0 -31
- package/esm2022/lib/form/components/form-cloud.component.mjs +0 -416
- package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +0 -54
- package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +0 -36
- package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +0 -250
- package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +0 -137
- package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +0 -107
- package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +0 -121
- package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +0 -122
- package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +0 -190
- package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +0 -86
- package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +0 -80
- package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +0 -464
- package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +0 -29
- package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +0 -47
- package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +0 -83
- package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +0 -92
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +0 -81
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +0 -54
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +0 -86
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +0 -117
- package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +0 -188
- package/esm2022/lib/form/form-cloud.module.mjs +0 -103
- package/esm2022/lib/form/models/form-cloud-representation.model.mjs +0 -48
- package/esm2022/lib/form/models/task-variable-cloud.model.mjs +0 -28
- package/esm2022/lib/form/public-api.mjs +0 -44
- package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +0 -120
- package/esm2022/lib/form/services/display-mode.service.mjs +0 -146
- package/esm2022/lib/form/services/form-cloud.service.interface.mjs +0 -18
- package/esm2022/lib/form/services/form-cloud.service.mjs +0 -201
- package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +0 -18
- package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +0 -51
- package/esm2022/lib/form/services/form-utils.service.mjs +0 -37
- package/esm2022/lib/form/services/process-cloud-content.service.mjs +0 -71
- package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +0 -52
- package/esm2022/lib/group/components/group-cloud.component.mjs +0 -424
- package/esm2022/lib/group/group-cloud.module.mjs +0 -33
- package/esm2022/lib/group/models/identity-group.model.mjs +0 -18
- package/esm2022/lib/group/public-api.mjs +0 -21
- package/esm2022/lib/group/services/identity-group.service.mjs +0 -89
- package/esm2022/lib/models/application-version.model.mjs +0 -21
- package/esm2022/lib/models/constant-values.type.mjs +0 -18
- package/esm2022/lib/models/data-column-custom-data.mjs +0 -18
- package/esm2022/lib/models/date-cloud-filter.model.mjs +0 -31
- package/esm2022/lib/models/date-format-cloud.model.mjs +0 -18
- package/esm2022/lib/models/engine-event-cloud.model.mjs +0 -18
- package/esm2022/lib/models/filter-cloud-model.mjs +0 -128
- package/esm2022/lib/models/process-definition-cloud.model.mjs +0 -32
- package/esm2022/lib/models/process-instance-variable.model.mjs +0 -18
- package/esm2022/lib/models/process-variable-filter.model.mjs +0 -18
- package/esm2022/lib/models/task-cloud.model.mjs +0 -23
- package/esm2022/lib/models/task-list-sorting.model.mjs +0 -40
- package/esm2022/lib/models/variable-definition.mjs +0 -18
- package/esm2022/lib/people/components/people-cloud.component.mjs +0 -499
- package/esm2022/lib/people/models/identity-user.model.mjs +0 -18
- package/esm2022/lib/people/people-cloud.module.mjs +0 -33
- package/esm2022/lib/people/public-api.mjs +0 -21
- package/esm2022/lib/people/services/identity-user.service.mjs +0 -119
- package/esm2022/lib/process/process-cloud.module.mjs +0 -40
- package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +0 -802
- package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +0 -59
- package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +0 -290
- package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +0 -169
- package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +0 -44
- package/esm2022/lib/process/process-filters/public-api.mjs +0 -23
- package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +0 -405
- package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +0 -137
- package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +0 -33
- package/esm2022/lib/process/process-header/public-api.mjs +0 -19
- package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +0 -594
- package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +0 -31
- package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +0 -18
- package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +0 -24
- package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +0 -37
- package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +0 -107
- package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +0 -40
- package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +0 -45
- package/esm2022/lib/process/process-list/public-api.mjs +0 -25
- package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +0 -253
- package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +0 -109
- package/esm2022/lib/process/public-api.mjs +0 -23
- package/esm2022/lib/process/services/process-cloud.service.mjs +0 -105
- package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +0 -481
- package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +0 -18
- package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +0 -26
- package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +0 -26
- package/esm2022/lib/process/start-process/public-api.mjs +0 -21
- package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +0 -125
- package/esm2022/lib/process-services-cloud.module.mjs +0 -91
- package/esm2022/lib/rich-text-editor/editorjs-config.mjs +0 -101
- package/esm2022/lib/rich-text-editor/index.mjs +0 -18
- package/esm2022/lib/rich-text-editor/public-api.mjs +0 -19
- package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +0 -80
- package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +0 -33
- package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +0 -186
- package/esm2022/lib/screen/models/screen-cloud.model.mjs +0 -18
- package/esm2022/lib/screen/public-api.mjs +0 -18
- package/esm2022/lib/services/base-cloud.service.mjs +0 -83
- package/esm2022/lib/services/cloud-token.service.mjs +0 -23
- package/esm2022/lib/services/form-fields.interfaces.mjs +0 -55
- package/esm2022/lib/services/local-preference-cloud.service.mjs +0 -122
- package/esm2022/lib/services/notification-cloud.service.mjs +0 -45
- package/esm2022/lib/services/preference-cloud.interface.mjs +0 -18
- package/esm2022/lib/services/public-api.mjs +0 -28
- package/esm2022/lib/services/screen-rendering.service.mjs +0 -30
- package/esm2022/lib/services/task-list-cloud.service.interface.mjs +0 -18
- package/esm2022/lib/services/user-preference-cloud.service.mjs +0 -105
- package/esm2022/lib/services/variable-mapper.sevice.mjs +0 -77
- package/esm2022/lib/services/web-socket.service.mjs +0 -146
- package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +0 -32
- package/esm2022/lib/task/models/task-details-cloud.model.mjs +0 -26
- package/esm2022/lib/task/models/task.model.mjs +0 -23
- package/esm2022/lib/task/public-api.mjs +0 -26
- package/esm2022/lib/task/services/task-cloud.service.mjs +0 -272
- package/esm2022/lib/task/task-cloud.module.mjs +0 -45
- package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +0 -59
- package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +0 -467
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +0 -206
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +0 -318
- package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +0 -147
- package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +0 -143
- package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +0 -73
- package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +0 -256
- package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +0 -207
- package/esm2022/lib/task/task-filters/public-api.mjs +0 -27
- package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +0 -283
- package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +0 -392
- package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +0 -56
- package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +0 -214
- package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +0 -89
- package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +0 -284
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +0 -101
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +0 -87
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +0 -79
- package/esm2022/lib/task/task-form/public-api.mjs +0 -21
- package/esm2022/lib/task/task-form/task-form.module.mjs +0 -36
- package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +0 -280
- package/esm2022/lib/task/task-header/public-api.mjs +0 -19
- package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +0 -33
- package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +0 -331
- package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +0 -116
- package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +0 -31
- package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +0 -390
- package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +0 -18
- package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +0 -18
- package/esm2022/lib/task/task-list/public-api.mjs +0 -23
- package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +0 -115
- package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +0 -178
- package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +0 -57
- package/esm2022/lib/types.mjs +0 -18
- package/esm2022/public-api.mjs +0 -40
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';
|
|
18
|
-
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
19
|
-
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
|
|
20
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
21
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
22
|
-
import { MatCardModule } from '@angular/material/card';
|
|
23
|
-
import { MatInputModule } from '@angular/material/input';
|
|
24
|
-
import * as i0 from "@angular/core";
|
|
25
|
-
import * as i1 from "@ngx-translate/core";
|
|
26
|
-
import * as i2 from "@angular/material/button";
|
|
27
|
-
import * as i3 from "@angular/material/card";
|
|
28
|
-
import * as i4 from "@angular/material/input";
|
|
29
|
-
import * as i5 from "@angular/material/form-field";
|
|
30
|
-
import * as i6 from "@angular/forms";
|
|
31
|
-
import * as i7 from "@angular/material/dialog";
|
|
32
|
-
export class ProcessFilterDialogCloudComponent {
|
|
33
|
-
constructor() {
|
|
34
|
-
this.dialogRef = inject((MatDialogRef));
|
|
35
|
-
this.data = inject(MAT_DIALOG_DATA);
|
|
36
|
-
this.defaultIcon = 'inbox';
|
|
37
|
-
this.filterForm = new FormGroup({
|
|
38
|
-
name: new FormControl(this.data.name, [Validators.required])
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
static { this.ACTION_SAVE = 'SAVE'; }
|
|
42
|
-
onSaveClick() {
|
|
43
|
-
this.dialogRef.close({
|
|
44
|
-
action: ProcessFilterDialogCloudComponent.ACTION_SAVE,
|
|
45
|
-
icon: this.defaultIcon,
|
|
46
|
-
name: this.filterForm.controls.name.value
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
onCancelClick() {
|
|
50
|
-
this.dialogRef.close();
|
|
51
|
-
}
|
|
52
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFilterDialogCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
53
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFilterDialogCloudComponent, isStandalone: true, selector: "adf-cloud-process-filter-dialog-cloud", ngImport: i0, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i7.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
54
|
-
}
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFilterDialogCloudComponent, decorators: [{
|
|
56
|
-
type: Component,
|
|
57
|
-
args: [{ selector: 'adf-cloud-process-filter-dialog-cloud', standalone: true, imports: [TranslateModule, MatButtonModule, MatCardModule, MatInputModule, ReactiveFormsModule, MatDialogModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"] }]
|
|
58
|
-
}] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlci1kaWFsb2cvcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlci1kaWFsb2cvcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7O0FBV3pELE1BQU0sT0FBTyxpQ0FBaUM7SUFUOUM7UUFVb0IsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFBLFlBQStDLENBQUEsQ0FBQyxDQUFDO1FBQ3BFLFNBQUksR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFHL0MsZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFFdEIsZUFBVSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3ZCLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMvRCxDQUFDLENBQUM7S0FhTjthQWxCaUIsZ0JBQVcsR0FBRyxNQUFNLEFBQVQsQ0FBVTtJQU9uQyxXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDakIsTUFBTSxFQUFFLGlDQUFpQyxDQUFDLFdBQVc7WUFDckQsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztTQUM1QyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0FyQlEsaUNBQWlDO21HQUFqQyxpQ0FBaUMsaUdDbEM5Qyw0MUNBeUJBLG9nQkRHYyxlQUFlLDJGQUFFLGVBQWUsMk5BQUUsYUFBYSx5VkFBRSxjQUFjLHFqQkFBRSxtQkFBbUIsKzlCQUFFLGVBQWU7OzRGQU10RyxpQ0FBaUM7a0JBVDdDLFNBQVM7K0JBQ0ksdUNBQXVDLGNBQ3JDLElBQUksV0FDUCxDQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLENBQUMsbUJBRy9GLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2xvdWQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBNYXRJbnB1dE1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgTWF0RGlhbG9nTW9kdWxlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2xvdWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NGaWx0ZXJEaWFsb2dDbG91ZENvbXBvbmVudCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8UHJvY2Vzc0ZpbHRlckRpYWxvZ0Nsb3VkQ29tcG9uZW50Pik7XG4gICAgcHVibGljIHJlYWRvbmx5IGRhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcblxuICAgIHB1YmxpYyBzdGF0aWMgQUNUSU9OX1NBVkUgPSAnU0FWRSc7XG4gICAgZGVmYXVsdEljb24gPSAnaW5ib3gnO1xuXG4gICAgZmlsdGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5kYXRhLm5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSlcbiAgICB9KTtcblxuICAgIG9uU2F2ZUNsaWNrKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBhY3Rpb246IFByb2Nlc3NGaWx0ZXJEaWFsb2dDbG91ZENvbXBvbmVudC5BQ1RJT05fU0FWRSxcbiAgICAgICAgICAgIGljb246IHRoaXMuZGVmYXVsdEljb24sXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmZpbHRlckZvcm0uY29udHJvbHMubmFtZS52YWx1ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkNhbmNlbENsaWNrKCkge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXItZGlhbG9nXCI+XG4gICAgPHNwYW4gbWF0LWRpYWxvZy10aXRsZSBpZD1cImFkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctdGl0bGVcIj5cbiAgICAgICAgIHt7ICdBREZfQ0xPVURfRURJVF9QUk9DRVNTX0ZJTFRFUi5ESUFMT0cuVElUTEUnIHwgdHJhbnNsYXRlfX1cbiAgICA8L3NwYW4+XG4gICAgPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiIGNsYXNzPVwiYWRmLXByb2Nlc3MtZmlsdGVyLWRpYWxvZy1jYXJkXCI+XG4gICAgICAgIDxtYXQtY2FyZC1jb250ZW50IGNsYXNzPVwiYWRmLXByb2Nlc3MtZmlsdGVyLWRpYWxvZy1jYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZmlsdGVyRm9ybVwiPlxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlci1uYW1lXCIgW2Zsb2F0TGFiZWxdPVwiJ2F1dG8nXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnQURGX0NMT1VEX0VESVRfUFJPQ0VTU19GSUxURVIuRklMVEVSX05BTUUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZpbHRlckZvcm0uY29udHJvbHMubmFtZVwiIGlkPVwiYWRmLWZpbHRlci1uYW1lLWlkXCI+XG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyBjbGFzcz0nYWRmLXByb2Nlc3MtZmlsdGVyLWRpYWxvZy1hY3Rpb25zJz5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25TYXZlQ2xpY2soKVwiIGlkPVwiYWRmLXNhdmUtYnV0dG9uLWlkXCIgW2Rpc2FibGVkXT1cIiFmaWx0ZXJGb3JtLnZhbGlkXCI+XG4gICAgICAgICAgICAgICAge3sgJ0FERl9DTE9VRF9FRElUX1BST0NFU1NfRklMVEVSLkRJQUxPRy5TQVZFJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCIgaWQ9XCJhZGYtY2FuY2VsLWJ1dHRvbi1pZFwiPlxuICAgICAgICAgICAgICAge3sgJ0FERl9DTE9VRF9FRElUX1BST0NFU1NfRklMVEVSLkRJQUxPRy5DQU5DRUwnIHwgdHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgPC9tYXQtY2FyZD5cbjwvZGl2PlxuIl19
|
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
18
|
-
import { ProcessFilterCloudService } from '../../services/process-filter-cloud.service';
|
|
19
|
-
import { AppConfigService, IconComponent, TranslationService } from '@alfresco/adf-core';
|
|
20
|
-
import { debounceTime, tap } from 'rxjs/operators';
|
|
21
|
-
import { ProcessListCloudService } from '../../../process-list/services/process-list-cloud.service';
|
|
22
|
-
import { ProcessFilterCloudAdapter } from '../../../process-list/models/process-cloud-query-request.model';
|
|
23
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
24
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
25
|
-
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
26
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
27
|
-
import { MatListModule } from '@angular/material/list';
|
|
28
|
-
import * as i0 from "@angular/core";
|
|
29
|
-
import * as i1 from "@ngx-translate/core";
|
|
30
|
-
import * as i2 from "@angular/material/progress-spinner";
|
|
31
|
-
import * as i3 from "@angular/material/list";
|
|
32
|
-
export class ProcessFiltersCloudComponent {
|
|
33
|
-
constructor() {
|
|
34
|
-
/** (required) The application name */
|
|
35
|
-
this.appName = '';
|
|
36
|
-
/** (optional) From Activiti 8.7.0 forward, use the 'POST' method to get the process count */
|
|
37
|
-
this.searchApiMethod = 'GET';
|
|
38
|
-
/** (optional) Toggles showing an icon by the side of each filter */
|
|
39
|
-
this.showIcons = false;
|
|
40
|
-
/** Emitted when a filter is being selected based on the filterParam input. */
|
|
41
|
-
this.filterSelected = new EventEmitter();
|
|
42
|
-
/** Emitted when a filter is being clicked from the UI. */
|
|
43
|
-
this.filterClicked = new EventEmitter();
|
|
44
|
-
/** Emitted when filters are loaded successfully */
|
|
45
|
-
this.success = new EventEmitter();
|
|
46
|
-
/** Emitted when any error occurs while loading the filters */
|
|
47
|
-
this.error = new EventEmitter();
|
|
48
|
-
/** Emitted when filter is updated. */
|
|
49
|
-
this.updatedFilter = new EventEmitter();
|
|
50
|
-
this.filters = [];
|
|
51
|
-
this.counters = {};
|
|
52
|
-
this.currentFiltersValues = {};
|
|
53
|
-
this.updatedFiltersSet = new Set();
|
|
54
|
-
this.destroyRef = inject(DestroyRef);
|
|
55
|
-
this.processFilterCloudService = inject(ProcessFilterCloudService);
|
|
56
|
-
this.translationService = inject(TranslationService);
|
|
57
|
-
this.appConfigService = inject(AppConfigService);
|
|
58
|
-
this.processListCloudService = inject(ProcessListCloudService);
|
|
59
|
-
}
|
|
60
|
-
ngOnInit() {
|
|
61
|
-
this.enableNotifications = this.appConfigService.get('notifications', true);
|
|
62
|
-
if (this.appName === '') {
|
|
63
|
-
this.getFilters(this.appName);
|
|
64
|
-
}
|
|
65
|
-
this.initProcessNotification();
|
|
66
|
-
this.getFilterKeysAfterExternalRefreshing();
|
|
67
|
-
}
|
|
68
|
-
ngOnChanges(changes) {
|
|
69
|
-
const appName = changes['appName'];
|
|
70
|
-
const filter = changes['filterParam'];
|
|
71
|
-
if (appName?.currentValue) {
|
|
72
|
-
this.getFilters(appName.currentValue);
|
|
73
|
-
}
|
|
74
|
-
else if (filter && filter.currentValue !== filter.previousValue) {
|
|
75
|
-
this.selectFilterAndEmit(filter.currentValue);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Fetch the filter list based on appName
|
|
80
|
-
*
|
|
81
|
-
* @param appName application name
|
|
82
|
-
*/
|
|
83
|
-
getFilters(appName) {
|
|
84
|
-
this.filters$ = this.processFilterCloudService.getProcessFilters(appName);
|
|
85
|
-
this.filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
86
|
-
next: (res) => {
|
|
87
|
-
this.resetFilter();
|
|
88
|
-
this.filters = res || [];
|
|
89
|
-
this.initFilterCounters();
|
|
90
|
-
this.selectFilterAndEmit(this.filterParam);
|
|
91
|
-
this.success.emit(res);
|
|
92
|
-
this.updateFilterCounters();
|
|
93
|
-
},
|
|
94
|
-
error: (err) => {
|
|
95
|
-
this.error.emit(err);
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Initialize counter collection for filters
|
|
101
|
-
*/
|
|
102
|
-
initFilterCounters() {
|
|
103
|
-
this.filters.forEach((filter) => (this.counters[filter.key] = 0));
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Pass the selected filter as next
|
|
107
|
-
*
|
|
108
|
-
* @param paramFilter filter model
|
|
109
|
-
*/
|
|
110
|
-
selectFilter(paramFilter) {
|
|
111
|
-
if (!paramFilter) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
const preferredFilter = this.filters.find((filter) => paramFilter.id === filter.id);
|
|
115
|
-
this.currentFilter =
|
|
116
|
-
preferredFilter ??
|
|
117
|
-
this.filters.find((filter, index) => paramFilter.id === filter.id ||
|
|
118
|
-
(paramFilter.name && this.checkFilterNamesEquality(paramFilter.name, filter.name)) ||
|
|
119
|
-
(paramFilter.key && paramFilter.key === filter.key) ||
|
|
120
|
-
paramFilter.index === index); // fallback to preserve the previous behavior
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Check equality of the filter names by translating the given name strings
|
|
124
|
-
*
|
|
125
|
-
* @param name1 source name
|
|
126
|
-
* @param name2 target name
|
|
127
|
-
* @returns `true` if filter names are equal, otherwise `false`
|
|
128
|
-
*/
|
|
129
|
-
checkFilterNamesEquality(name1, name2) {
|
|
130
|
-
const translatedName1 = this.translationService.instant(name1);
|
|
131
|
-
const translatedName2 = this.translationService.instant(name2);
|
|
132
|
-
return translatedName1.toLocaleLowerCase() === translatedName2.toLocaleLowerCase();
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Selects and emits the given filter
|
|
136
|
-
*
|
|
137
|
-
* @param newParamFilter new parameter filter
|
|
138
|
-
*/
|
|
139
|
-
selectFilterAndEmit(newParamFilter) {
|
|
140
|
-
if (newParamFilter) {
|
|
141
|
-
this.selectFilter(newParamFilter);
|
|
142
|
-
this.filterSelected.emit(this.currentFilter);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
this.currentFilter = undefined;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Select filter with the id
|
|
150
|
-
*
|
|
151
|
-
* @param id filter id
|
|
152
|
-
*/
|
|
153
|
-
selectFilterById(id) {
|
|
154
|
-
this.selectFilterAndEmit({ id });
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Selects and emits the clicked filter
|
|
158
|
-
*
|
|
159
|
-
* @param filter filter model
|
|
160
|
-
*/
|
|
161
|
-
onFilterClick(filter) {
|
|
162
|
-
if (filter) {
|
|
163
|
-
this.selectFilter(filter);
|
|
164
|
-
this.filterClicked.emit(this.currentFilter);
|
|
165
|
-
this.updateFilterCounter(this.currentFilter);
|
|
166
|
-
this.updatedFiltersSet.delete(filter.key);
|
|
167
|
-
}
|
|
168
|
-
else {
|
|
169
|
-
this.currentFilter = undefined;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Select as default process filter the first in the list
|
|
174
|
-
*/
|
|
175
|
-
selectDefaultProcessFilter() {
|
|
176
|
-
if (!this.isFilterListEmpty()) {
|
|
177
|
-
this.currentFilter = this.filters[0];
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Get current filter
|
|
182
|
-
*
|
|
183
|
-
* @returns filter model
|
|
184
|
-
*/
|
|
185
|
-
getCurrentFilter() {
|
|
186
|
-
return this.currentFilter;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Check if the filter list is empty
|
|
190
|
-
*
|
|
191
|
-
* @returns `true` if filter list is empty, otherwise `false`
|
|
192
|
-
*/
|
|
193
|
-
isFilterListEmpty() {
|
|
194
|
-
return this.filters === undefined || (this.filters && this.filters.length === 0);
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Reset the filters
|
|
198
|
-
*/
|
|
199
|
-
resetFilter() {
|
|
200
|
-
this.filters = [];
|
|
201
|
-
this.currentFilter = undefined;
|
|
202
|
-
}
|
|
203
|
-
isActiveFilter(filter) {
|
|
204
|
-
return this.currentFilter.name === filter.name;
|
|
205
|
-
}
|
|
206
|
-
initProcessNotification() {
|
|
207
|
-
if (this.appName && this.enableNotifications) {
|
|
208
|
-
this.processFilterCloudService
|
|
209
|
-
.getProcessNotificationSubscription(this.appName)
|
|
210
|
-
.pipe(debounceTime(1000), takeUntilDestroyed(this.destroyRef))
|
|
211
|
-
.subscribe(() => {
|
|
212
|
-
this.updateFilterCounters();
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Iterate over filters and update counters
|
|
218
|
-
*/
|
|
219
|
-
updateFilterCounters() {
|
|
220
|
-
this.filters.forEach((filter) => {
|
|
221
|
-
this.updateFilterCounter(filter);
|
|
222
|
-
});
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Get current value for filter and check if value has changed
|
|
226
|
-
*
|
|
227
|
-
* @param filter filter
|
|
228
|
-
*/
|
|
229
|
-
updateFilterCounter(filter) {
|
|
230
|
-
this.fetchProcessFilterCounter(filter)
|
|
231
|
-
.pipe(tap((filterCounter) => {
|
|
232
|
-
this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);
|
|
233
|
-
}))
|
|
234
|
-
.subscribe((data) => {
|
|
235
|
-
this.counters = {
|
|
236
|
-
...this.counters,
|
|
237
|
-
[filter.key]: data
|
|
238
|
-
};
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
checkIfFilterValuesHasBeenUpdated(filterKey, filterValue) {
|
|
242
|
-
if (this.currentFiltersValues[filterKey] === undefined || this.currentFiltersValues[filterKey] !== filterValue) {
|
|
243
|
-
this.currentFiltersValues[filterKey] = filterValue;
|
|
244
|
-
this.updatedFilter.emit(filterKey);
|
|
245
|
-
this.updatedFiltersSet.add(filterKey);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
isFilterUpdated(filterName) {
|
|
249
|
-
return this.updatedFiltersSet.has(filterName);
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Get filer key when filter was refreshed by external action
|
|
253
|
-
*
|
|
254
|
-
*/
|
|
255
|
-
getFilterKeysAfterExternalRefreshing() {
|
|
256
|
-
this.processFilterCloudService.filterKeyToBeRefreshed$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((filterKey) => {
|
|
257
|
-
this.updatedFiltersSet.delete(filterKey);
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
fetchProcessFilterCounter(filter) {
|
|
261
|
-
return this.searchApiMethod === 'POST'
|
|
262
|
-
? this.processListCloudService.getProcessListCounter(new ProcessFilterCloudAdapter(filter))
|
|
263
|
-
: this.processListCloudService.getProcessCounter(filter.appName, filter.status);
|
|
264
|
-
}
|
|
265
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
266
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-process-filters", inputs: { appName: "appName", searchApiMethod: "searchApiMethod", filterParam: "filterParam", showIcons: "showIcons" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", success: "success", error: "error", updatedFilter: "updatedFilter" }, usesOnChanges: true, ngImport: i0, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i2.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i3.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
267
|
-
}
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersCloudComponent, decorators: [{
|
|
269
|
-
type: Component,
|
|
270
|
-
args: [{ selector: 'adf-cloud-process-filters', standalone: true, imports: [TranslateModule, IconComponent, NgIf, MatProgressSpinnerModule, NgForOf, MatListModule, AsyncPipe], encapsulation: ViewEncapsulation.None, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"] }]
|
|
271
|
-
}], propDecorators: { appName: [{
|
|
272
|
-
type: Input
|
|
273
|
-
}], searchApiMethod: [{
|
|
274
|
-
type: Input
|
|
275
|
-
}], filterParam: [{
|
|
276
|
-
type: Input
|
|
277
|
-
}], showIcons: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], filterSelected: [{
|
|
280
|
-
type: Output
|
|
281
|
-
}], filterClicked: [{
|
|
282
|
-
type: Output
|
|
283
|
-
}], success: [{
|
|
284
|
-
type: Output
|
|
285
|
-
}], error: [{
|
|
286
|
-
type: Output
|
|
287
|
-
}], updatedFilter: [{
|
|
288
|
-
type: Output
|
|
289
|
-
}] } });
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FB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QyxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxpQkFHN0YsaUJBQWlCLENBQUMsSUFBSTs4QkFLckMsT0FBTztzQkFETixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsT0FBTztzQkFETixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2Nlc3MtZmlsdGVyLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvY2Vzcy1maWx0ZXItY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgSWNvbkNvbXBvbmVudCwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEZpbHRlclBhcmFtc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdGFzay90YXNrLWZpbHRlcnMvbW9kZWxzL2ZpbHRlci1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy1saXN0L3NlcnZpY2VzL3Byb2Nlc3MtbGlzdC1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2Nlc3NGaWx0ZXJDbG91ZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzLWxpc3QvbW9kZWxzL3Byb2Nlc3MtY2xvdWQtcXVlcnktcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcbmltcG9ydCB7IE1hdExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9saXN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhZGYtY2xvdWQtcHJvY2Vzcy1maWx0ZXJzJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIEljb25Db21wb25lbnQsIE5nSWYsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZSwgTmdGb3JPZiwgTWF0TGlzdE1vZHVsZSwgQXN5bmNQaXBlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NGaWx0ZXJzQ2xvdWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgLyoqIChyZXF1aXJlZCkgVGhlIGFwcGxpY2F0aW9uIG5hbWUgKi9cbiAgICBASW5wdXQoKVxuICAgIGFwcE5hbWU6IHN0cmluZyA9ICcnO1xuXG4gICAgLyoqIChvcHRpb25hbCkgRnJvbSBBY3Rpdml0aSA4LjcuMCBmb3J3YXJkLCB1c2UgdGhlICdQT1NUJyBtZXRob2QgdG8gZ2V0IHRoZSBwcm9jZXNzIGNvdW50ICovXG4gICAgQElucHV0KClcbiAgICBzZWFyY2hBcGlNZXRob2Q6ICdHRVQnIHwgJ1BPU1QnID0gJ0dFVCc7XG5cbiAgICAvKiogKG9wdGlvbmFsKSBUaGUgZmlsdGVyIHRvIGJlIHNlbGVjdGVkIGJ5IGRlZmF1bHQgKi9cbiAgICBASW5wdXQoKVxuICAgIGZpbHRlclBhcmFtOiBGaWx0ZXJQYXJhbXNNb2RlbDtcblxuICAgIC8qKiAob3B0aW9uYWwpIFRvZ2dsZXMgc2hvd2luZyBhbiBpY29uIGJ5IHRoZSBzaWRlIG9mIGVhY2ggZmlsdGVyICovXG4gICAgQElucHV0KClcbiAgICBzaG93SWNvbnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgc2VsZWN0ZWQgYmFzZWQgb24gdGhlIGZpbHRlclBhcmFtIGlucHV0LiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlclNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBmaWx0ZXIgaXMgYmVpbmcgY2xpY2tlZCBmcm9tIHRoZSBVSS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmaWx0ZXJDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjxQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gZmlsdGVycyBhcmUgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYW55IGVycm9yIG9jY3VycyB3aGlsZSBsb2FkaW5nIHRoZSBmaWx0ZXJzICovXG4gICAgQE91dHB1dCgpXG4gICAgZXJyb3IgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gZmlsdGVyIGlzIHVwZGF0ZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgdXBkYXRlZEZpbHRlcjogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIGZpbHRlcnMkOiBPYnNlcnZhYmxlPFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsW10+O1xuICAgIGN1cnJlbnRGaWx0ZXI/OiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbDtcbiAgICBmaWx0ZXJzOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbFtdID0gW107XG4gICAgY291bnRlcnM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgICBlbmFibGVOb3RpZmljYXRpb25zOiBib29sZWFuO1xuICAgIGN1cnJlbnRGaWx0ZXJzVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9ID0ge307XG4gICAgdXBkYXRlZEZpbHRlcnNTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2UgPSBpbmplY3QoUHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGlvblNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZ1NlcnZpY2UgPSBpbmplY3QoQXBwQ29uZmlnU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzTGlzdENsb3VkU2VydmljZSA9IGluamVjdChQcm9jZXNzTGlzdENsb3VkU2VydmljZSk7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5lbmFibGVOb3RpZmljYXRpb25zID0gdGhpcy5hcHBDb25maWdTZXJ2aWNlLmdldCgnbm90aWZpY2F0aW9ucycsIHRydWUpO1xuICAgICAgICBpZiAodGhpcy5hcHBOYW1lID09PSAnJykge1xuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJzKHRoaXMuYXBwTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0UHJvY2Vzc05vdGlmaWNhdGlvbigpO1xuICAgICAgICB0aGlzLmdldEZpbHRlcktleXNBZnRlckV4dGVybmFsUmVmcmVzaGluZygpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgYXBwTmFtZSA9IGNoYW5nZXNbJ2FwcE5hbWUnXTtcbiAgICAgICAgY29uc3QgZmlsdGVyID0gY2hhbmdlc1snZmlsdGVyUGFyYW0nXTtcbiAgICAgICAgaWYgKGFwcE5hbWU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5nZXRGaWx0ZXJzKGFwcE5hbWUuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChmaWx0ZXIgJiYgZmlsdGVyLmN1cnJlbnRWYWx1ZSAhPT0gZmlsdGVyLnByZXZpb3VzVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyQW5kRW1pdChmaWx0ZXIuY3VycmVudFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZldGNoIHRoZSBmaWx0ZXIgbGlzdCBiYXNlZCBvbiBhcHBOYW1lXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYXBwTmFtZSBhcHBsaWNhdGlvbiBuYW1lXG4gICAgICovXG4gICAgZ2V0RmlsdGVycyhhcHBOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzJCA9IHRoaXMucHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZS5nZXRQcm9jZXNzRmlsdGVycyhhcHBOYW1lKTtcblxuICAgICAgICB0aGlzLmZpbHRlcnMkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEZpbHRlcigpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVycyA9IHJlcyB8fCBbXTtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyQW5kRW1pdCh0aGlzLmZpbHRlclBhcmFtKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdChyZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyQ291bnRlcnMoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvci5lbWl0KGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemUgY291bnRlciBjb2xsZWN0aW9uIGZvciBmaWx0ZXJzXG4gICAgICovXG4gICAgaW5pdEZpbHRlckNvdW50ZXJzKCkge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyKSA9PiAodGhpcy5jb3VudGVyc1tmaWx0ZXIua2V5XSA9IDApKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYXNzIHRoZSBzZWxlY3RlZCBmaWx0ZXIgYXMgbmV4dFxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtRmlsdGVyIGZpbHRlciBtb2RlbFxuICAgICAqL1xuICAgIHNlbGVjdEZpbHRlcihwYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKCFwYXJhbUZpbHRlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJlZmVycmVkRmlsdGVyID0gdGhpcy5maWx0ZXJzLmZpbmQoKGZpbHRlcikgPT4gcGFyYW1GaWx0ZXIuaWQgPT09IGZpbHRlci5pZCk7XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9XG4gICAgICAgICAgICBwcmVmZXJyZWRGaWx0ZXIgPz9cbiAgICAgICAgICAgIHRoaXMuZmlsdGVycy5maW5kKFxuICAgICAgICAgICAgICAgIChmaWx0ZXIsIGluZGV4KSA9PlxuICAgICAgICAgICAgICAgICAgICBwYXJhbUZpbHRlci5pZCA9PT0gZmlsdGVyLmlkIHx8XG4gICAgICAgICAgICAgICAgICAgIChwYXJhbUZpbHRlci5uYW1lICYmIHRoaXMuY2hlY2tGaWx0ZXJOYW1lc0VxdWFsaXR5KHBhcmFtRmlsdGVyLm5hbWUsIGZpbHRlci5uYW1lKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHBhcmFtRmlsdGVyLmtleSAmJiBwYXJhbUZpbHRlci5rZXkgPT09IGZpbHRlci5rZXkpIHx8XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLmluZGV4ID09PSBpbmRleFxuICAgICAgICAgICAgKTsgLy8gZmFsbGJhY2sgdG8gcHJlc2VydmUgdGhlIHByZXZpb3VzIGJlaGF2aW9yXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgZXF1YWxpdHkgb2YgdGhlIGZpbHRlciBuYW1lcyBieSB0cmFuc2xhdGluZyB0aGUgZ2l2ZW4gbmFtZSBzdHJpbmdzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmFtZTEgc291cmNlIG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZTIgdGFyZ2V0IG5hbWVcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZmlsdGVyIG5hbWVzIGFyZSBlcXVhbCwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBwcml2YXRlIGNoZWNrRmlsdGVyTmFtZXNFcXVhbGl0eShuYW1lMTogc3RyaW5nLCBuYW1lMjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWROYW1lMSA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobmFtZTEpO1xuICAgICAgICBjb25zdCB0cmFuc2xhdGVkTmFtZTIgPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5pbnN0YW50KG5hbWUyKTtcblxuICAgICAgICByZXR1cm4gdHJhbnNsYXRlZE5hbWUxLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IHRyYW5zbGF0ZWROYW1lMi50b0xvY2FsZUxvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYW5kIGVtaXRzIHRoZSBnaXZlbiBmaWx0ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZXdQYXJhbUZpbHRlciBuZXcgcGFyYW1ldGVyIGZpbHRlclxuICAgICAqL1xuICAgIHNlbGVjdEZpbHRlckFuZEVtaXQobmV3UGFyYW1GaWx0ZXI6IEZpbHRlclBhcmFtc01vZGVsKSB7XG4gICAgICAgIGlmIChuZXdQYXJhbUZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXIobmV3UGFyYW1GaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJTZWxlY3RlZC5lbWl0KHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgZmlsdGVyIHdpdGggdGhlIGlkXG4gICAgICpcbiAgICAgKiBAcGFyYW0gaWQgZmlsdGVyIGlkXG4gICAgICovXG4gICAgc2VsZWN0RmlsdGVyQnlJZChpZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0RmlsdGVyQW5kRW1pdCh7IGlkIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgYW5kIGVtaXRzIHRoZSBjbGlja2VkIGZpbHRlclxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXIgbW9kZWxcbiAgICAgKi9cbiAgICBvbkZpbHRlckNsaWNrKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpIHtcbiAgICAgICAgaWYgKGZpbHRlcikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyQ2xpY2tlZC5lbWl0KHRoaXMuY3VycmVudEZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlckNvdW50ZXIodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZEZpbHRlcnNTZXQuZGVsZXRlKGZpbHRlci5rZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0IGFzIGRlZmF1bHQgcHJvY2VzcyBmaWx0ZXIgdGhlIGZpcnN0IGluIHRoZSBsaXN0XG4gICAgICovXG4gICAgc2VsZWN0RGVmYXVsdFByb2Nlc3NGaWx0ZXIoKSB7XG4gICAgICAgIGlmICghdGhpcy5pc0ZpbHRlckxpc3RFbXB0eSgpKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB0aGlzLmZpbHRlcnNbMF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBmaWx0ZXJcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGZpbHRlciBtb2RlbFxuICAgICAqL1xuICAgIGdldEN1cnJlbnRGaWx0ZXIoKTogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBmaWx0ZXIgbGlzdCBpcyBlbXB0eVxuICAgICAqXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIGZpbHRlciBsaXN0IGlzIGVtcHR5LCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGlzRmlsdGVyTGlzdEVtcHR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJzID09PSB1bmRlZmluZWQgfHwgKHRoaXMuZmlsdGVycyAmJiB0aGlzLmZpbHRlcnMubGVuZ3RoID09PSAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgZmlsdGVyc1xuICAgICAqL1xuICAgIHByaXZhdGUgcmVzZXRGaWx0ZXIoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycyA9IFtdO1xuICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaXNBY3RpdmVGaWx0ZXIoZmlsdGVyOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50RmlsdGVyLm5hbWUgPT09IGZpbHRlci5uYW1lO1xuICAgIH1cblxuICAgIGluaXRQcm9jZXNzTm90aWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMuZW5hYmxlTm90aWZpY2F0aW9ucykge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmdldFByb2Nlc3NOb3RpZmljYXRpb25TdWJzY3JpcHRpb24odGhpcy5hcHBOYW1lKVxuICAgICAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDAwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyQ291bnRlcnMoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEl0ZXJhdGUgb3ZlciBmaWx0ZXJzIGFuZCB1cGRhdGUgY291bnRlcnNcbiAgICAgKi9cbiAgICB1cGRhdGVGaWx0ZXJDb3VudGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzLmZvckVhY2goKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyQ291bnRlcihmaWx0ZXIpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgR2V0IGN1cnJlbnQgdmFsdWUgZm9yIGZpbHRlciBhbmQgY2hlY2sgaWYgdmFsdWUgaGFzIGNoYW5nZWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXIgZmlsdGVyXG4gICAgICovXG4gICAgdXBkYXRlRmlsdGVyQ291bnRlcihmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmV0Y2hQcm9jZXNzRmlsdGVyQ291bnRlcihmaWx0ZXIpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKGZpbHRlckNvdW50ZXIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja0lmRmlsdGVyVmFsdWVzSGFzQmVlblVwZGF0ZWQoZmlsdGVyLmtleSwgZmlsdGVyQ291bnRlcik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvdW50ZXJzID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNvdW50ZXJzLFxuICAgICAgICAgICAgICAgICAgICBbZmlsdGVyLmtleV06IGRhdGFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hlY2tJZkZpbHRlclZhbHVlc0hhc0JlZW5VcGRhdGVkKGZpbHRlcktleTogc3RyaW5nLCBmaWx0ZXJWYWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRGaWx0ZXJzVmFsdWVzW2ZpbHRlcktleV0gPT09IHVuZGVmaW5lZCB8fCB0aGlzLmN1cnJlbnRGaWx0ZXJzVmFsdWVzW2ZpbHRlcktleV0gIT09IGZpbHRlclZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXJzVmFsdWVzW2ZpbHRlcktleV0gPSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZEZpbHRlci5lbWl0KGZpbHRlcktleSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXJzU2V0LmFkZChmaWx0ZXJLZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNGaWx0ZXJVcGRhdGVkKGZpbHRlck5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGVkRmlsdGVyc1NldC5oYXMoZmlsdGVyTmFtZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGZpbGVyIGtleSB3aGVuIGZpbHRlciB3YXMgcmVmcmVzaGVkIGJ5IGV4dGVybmFsIGFjdGlvblxuICAgICAqXG4gICAgICovXG4gICAgZ2V0RmlsdGVyS2V5c0FmdGVyRXh0ZXJuYWxSZWZyZXNoaW5nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2UuZmlsdGVyS2V5VG9CZVJlZnJlc2hlZCQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKChmaWx0ZXJLZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkRmlsdGVyc1NldC5kZWxldGUoZmlsdGVyS2V5KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmZXRjaFByb2Nlc3NGaWx0ZXJDb3VudGVyKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hBcGlNZXRob2QgPT09ICdQT1NUJ1xuICAgICAgICAgICAgPyB0aGlzLnByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlLmdldFByb2Nlc3NMaXN0Q291bnRlcihuZXcgUHJvY2Vzc0ZpbHRlckNsb3VkQWRhcHRlcihmaWx0ZXIpKVxuICAgICAgICAgICAgOiB0aGlzLnByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlLmdldFByb2Nlc3NDb3VudGVyKGZpbHRlci5hcHBOYW1lLCBmaWx0ZXIuc3RhdHVzKTtcbiAgICB9XG59XG4iLCI8bWF0LWFjdGlvbi1saXN0IGNsYXNzPVwiYWRmLXByb2Nlc3MtZmlsdGVyc1wiICpuZ0lmPVwiZmlsdGVycyQgfCBhc3luYyBhcyBmaWx0ZXJMaXN0OyBlbHNlIGxvYWRpbmdcIj5cbiAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyTGlzdFwiXG4gICAgICAgIG1hdC1saXN0LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyQ2xpY2soZmlsdGVyKVwiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWRdPVwiZmlsdGVyLmlkXCJcbiAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpbHRlci5rZXkgKyAnX2ZpbHRlcidcIlxuICAgICAgICBbY2xhc3MuYWRmLWFjdGl2ZV09XCJjdXJyZW50RmlsdGVyID09PSBmaWx0ZXJcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlcnNfX2VudHJ5XCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxhZGYtaWNvblxuICAgICAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZmlsdGVyLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dJY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmaWx0ZXIuaWNvblwiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbHRlci1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWZpbHRlci1hY3Rpb24tYnV0dG9uX19sYWJlbFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmaWx0ZXIubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvdW50ZXJzW2ZpbHRlci5rZXldXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiZmlsdGVyLmtleSArICdfZmlsdGVyLWNvdW50ZXInXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlcnNfX2VudHJ5LWNvdW50ZXJcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5hZGYtYWN0aXZlXT1cImlzRmlsdGVyVXBkYXRlZChmaWx0ZXIua2V5KVwiXG4gICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgY291bnRlcnNbZmlsdGVyLmtleV0gfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9idXR0b24+XG48L21hdC1hY3Rpb24tbGlzdD5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZz5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWFwcC1saXN0LXNwaW5uZXJcIj5cbiAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAvPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|