@alfresco/adf-process-services-cloud 8.1.0-16295248176 → 8.1.0-16320806191
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 +3 -0
- package/bundles/assets/adf-process-services-cloud/i18n/es.json +3 -0
- package/bundles/assets/adf-process-services-cloud/i18n/fr.json +3 -0
- package/bundles/assets/adf-process-services-cloud/i18n/it.json +3 -0
- package/bundles/assets/adf-process-services-cloud/i18n/pl.json +3 -0
- package/bundles/assets/adf-process-services-cloud/i18n/pt.json +3 -0
- package/esm2022/adf-process-services-cloud.mjs +5 -0
- package/esm2022/lib/app/app-list-cloud.module.mjs +20 -0
- package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +67 -0
- package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +125 -0
- package/esm2022/lib/app/models/application-instance.model.mjs +24 -0
- package/esm2022/lib/app/public-api.mjs +22 -0
- package/esm2022/lib/app/services/apps-process-cloud.service.mjs +97 -0
- package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +163 -0
- package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +97 -0
- package/esm2022/lib/common/index.mjs +18 -0
- package/esm2022/lib/common/interface/environment.interface.mjs +18 -0
- package/esm2022/lib/common/interface/index.mjs +18 -0
- package/esm2022/lib/common/interface/public-api.mjs +18 -0
- package/esm2022/lib/common/public-api.mjs +19 -0
- package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +57 -0
- package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +31 -0
- package/esm2022/lib/form/components/form-cloud.component.mjs +397 -0
- package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +53 -0
- package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +35 -0
- package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +249 -0
- package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +136 -0
- package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +107 -0
- package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +120 -0
- package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +122 -0
- package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +189 -0
- package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +85 -0
- package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +80 -0
- package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +463 -0
- package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +29 -0
- package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +46 -0
- package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +82 -0
- package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +91 -0
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +81 -0
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +53 -0
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +86 -0
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +116 -0
- package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +187 -0
- package/esm2022/lib/form/form-cloud.module.mjs +103 -0
- package/esm2022/lib/form/models/form-cloud-representation.model.mjs +48 -0
- package/esm2022/lib/form/models/task-variable-cloud.model.mjs +28 -0
- package/esm2022/lib/form/public-api.mjs +44 -0
- package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +120 -0
- package/esm2022/lib/form/services/display-mode.service.mjs +146 -0
- package/esm2022/lib/form/services/form-cloud.service.interface.mjs +18 -0
- package/esm2022/lib/form/services/form-cloud.service.mjs +201 -0
- package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +18 -0
- package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +51 -0
- package/esm2022/lib/form/services/form-utils.service.mjs +37 -0
- package/esm2022/lib/form/services/process-cloud-content.service.mjs +71 -0
- package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +52 -0
- package/esm2022/lib/group/components/group-cloud.component.mjs +423 -0
- package/esm2022/lib/group/group-cloud.module.mjs +33 -0
- package/esm2022/lib/group/models/identity-group.model.mjs +18 -0
- package/esm2022/lib/group/public-api.mjs +21 -0
- package/esm2022/lib/group/services/identity-group.service.mjs +89 -0
- package/esm2022/lib/models/application-version.model.mjs +21 -0
- package/esm2022/lib/models/constant-values.type.mjs +18 -0
- package/esm2022/lib/models/data-column-custom-data.mjs +18 -0
- package/esm2022/lib/models/date-cloud-filter.model.mjs +31 -0
- package/esm2022/lib/models/date-format-cloud.model.mjs +18 -0
- package/esm2022/lib/models/engine-event-cloud.model.mjs +18 -0
- package/esm2022/lib/models/filter-cloud-model.mjs +128 -0
- package/esm2022/lib/models/process-definition-cloud.model.mjs +32 -0
- package/esm2022/lib/models/process-instance-variable.model.mjs +18 -0
- package/esm2022/lib/models/process-variable-filter.model.mjs +18 -0
- package/esm2022/lib/models/task-cloud.model.mjs +23 -0
- package/esm2022/lib/models/task-list-sorting.model.mjs +40 -0
- package/esm2022/lib/models/variable-definition.mjs +18 -0
- package/esm2022/lib/people/components/people-cloud.component.mjs +498 -0
- package/esm2022/lib/people/models/identity-user.model.mjs +18 -0
- package/esm2022/lib/people/people-cloud.module.mjs +33 -0
- package/esm2022/lib/people/public-api.mjs +21 -0
- package/esm2022/lib/people/services/identity-user.service.mjs +119 -0
- package/esm2022/lib/process/process-cloud.module.mjs +40 -0
- package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +801 -0
- package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +58 -0
- package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +292 -0
- package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +170 -0
- package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +44 -0
- package/esm2022/lib/process/process-filters/public-api.mjs +23 -0
- package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +408 -0
- package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +137 -0
- package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +33 -0
- package/esm2022/lib/process/process-header/public-api.mjs +19 -0
- package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +593 -0
- package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +31 -0
- package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +18 -0
- package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +24 -0
- package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +37 -0
- package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +107 -0
- package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +40 -0
- package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +45 -0
- package/esm2022/lib/process/process-list/public-api.mjs +25 -0
- package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +253 -0
- package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +109 -0
- package/esm2022/lib/process/public-api.mjs +23 -0
- package/esm2022/lib/process/services/process-cloud.service.mjs +105 -0
- package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +465 -0
- package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +18 -0
- package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +26 -0
- package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +26 -0
- package/esm2022/lib/process/start-process/public-api.mjs +21 -0
- package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +125 -0
- package/esm2022/lib/process-services-cloud.module.mjs +91 -0
- package/esm2022/lib/rich-text-editor/editorjs-config.mjs +101 -0
- package/esm2022/lib/rich-text-editor/index.mjs +18 -0
- package/esm2022/lib/rich-text-editor/public-api.mjs +19 -0
- package/esm2022/lib/rich-text-editor/rich-text-editor.component.mjs +80 -0
- package/esm2022/lib/rich-text-editor/rich-text-editor.module.mjs +33 -0
- package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +186 -0
- package/esm2022/lib/screen/models/screen-cloud.model.mjs +18 -0
- package/esm2022/lib/screen/public-api.mjs +18 -0
- package/esm2022/lib/services/base-cloud.service.mjs +83 -0
- package/esm2022/lib/services/cloud-token.service.mjs +23 -0
- package/esm2022/lib/services/form-fields.interfaces.mjs +55 -0
- package/esm2022/lib/services/local-preference-cloud.service.mjs +122 -0
- package/esm2022/lib/services/notification-cloud.service.mjs +45 -0
- package/esm2022/lib/services/preference-cloud.interface.mjs +18 -0
- package/esm2022/lib/services/public-api.mjs +28 -0
- package/esm2022/lib/services/screen-rendering.service.mjs +30 -0
- package/esm2022/lib/services/task-list-cloud.service.interface.mjs +18 -0
- package/esm2022/lib/services/user-preference-cloud.service.mjs +105 -0
- package/esm2022/lib/services/variable-mapper.sevice.mjs +77 -0
- package/esm2022/lib/services/web-socket.service.mjs +146 -0
- package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +32 -0
- package/esm2022/lib/task/models/task-details-cloud.model.mjs +26 -0
- package/esm2022/lib/task/models/task.model.mjs +23 -0
- package/esm2022/lib/task/public-api.mjs +26 -0
- package/esm2022/lib/task/services/task-cloud.service.mjs +272 -0
- package/esm2022/lib/task/task-cloud.module.mjs +45 -0
- package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +59 -0
- package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +467 -0
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +205 -0
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +317 -0
- package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +146 -0
- package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +142 -0
- package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +72 -0
- package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +255 -0
- package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +207 -0
- package/esm2022/lib/task/task-filters/public-api.mjs +27 -0
- package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +283 -0
- package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +392 -0
- package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +56 -0
- package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +199 -0
- package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +89 -0
- package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +277 -0
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +101 -0
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +87 -0
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +78 -0
- package/esm2022/lib/task/task-form/public-api.mjs +21 -0
- package/esm2022/lib/task/task-form/task-form.module.mjs +36 -0
- package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +280 -0
- package/esm2022/lib/task/task-header/public-api.mjs +19 -0
- package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +33 -0
- package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +331 -0
- package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +115 -0
- package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +31 -0
- package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +389 -0
- package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +18 -0
- package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +18 -0
- package/esm2022/lib/task/task-list/public-api.mjs +23 -0
- package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +115 -0
- package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +178 -0
- package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +57 -0
- package/esm2022/lib/types.mjs +18 -0
- package/esm2022/public-api.mjs +40 -0
- package/fesm2022/adf-process-services-cloud.mjs +553 -581
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/lib/process-services-cloud.module.d.ts +0 -12
- 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 +6 -4
- package/public-api.d.ts +0 -1
- package/lib/providers.d.ts +0 -36
|
@@ -0,0 +1,107 @@
|
|
|
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 { ObjectDataTableAdapter, ObjectDataColumn, ObjectDataRow } from '@alfresco/adf-core';
|
|
18
|
+
import { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';
|
|
19
|
+
export class WidgetDataTableAdapter {
|
|
20
|
+
get selectedRow() {
|
|
21
|
+
return this.adapter.selectedRow;
|
|
22
|
+
}
|
|
23
|
+
get rowsChanged() {
|
|
24
|
+
return this.adapter.rowsChanged;
|
|
25
|
+
}
|
|
26
|
+
constructor(data, schema) {
|
|
27
|
+
this.columnKeys = [];
|
|
28
|
+
this.helper = new DataTablePathParserHelper();
|
|
29
|
+
this.adapter = new ObjectDataTableAdapter(data, schema);
|
|
30
|
+
this.createColumns(schema);
|
|
31
|
+
this.createRows(data);
|
|
32
|
+
}
|
|
33
|
+
createColumns(schema) {
|
|
34
|
+
if (schema?.length) {
|
|
35
|
+
this.adapter.setColumns(this.buildColumnsFromSchema(schema));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
buildColumnsFromSchema(schema) {
|
|
39
|
+
return schema.map((dataColumn) => {
|
|
40
|
+
this.columnKeys.push(dataColumn.key);
|
|
41
|
+
return new ObjectDataColumn(dataColumn);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
createRows(data) {
|
|
45
|
+
if (data?.length) {
|
|
46
|
+
this.adapter.setRows(data.map((item) => this.buildDataRowFromItem(item)));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
buildDataRowFromItem(item) {
|
|
50
|
+
const rowData = {};
|
|
51
|
+
this.columnKeys.forEach((path, i) => {
|
|
52
|
+
const rowValue = this.extractPropertyValue(this.helper.splitPathIntoProperties(path), item);
|
|
53
|
+
if (rowValue) {
|
|
54
|
+
rowData[this.columnKeys[i]] = rowValue;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return new ObjectDataRow(rowData);
|
|
58
|
+
}
|
|
59
|
+
extractPropertyValue(properties, item) {
|
|
60
|
+
return properties.reduce((acc, property) => {
|
|
61
|
+
if (!acc) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const propertyIndexReferences = this.helper.getIndexReferencesFromProperty(property);
|
|
65
|
+
const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;
|
|
66
|
+
const purePropertyName = this.helper.extractPurePropertyName(property);
|
|
67
|
+
return isPropertyWithSingleIndexReference ? acc[purePropertyName]?.[propertyIndexReferences[0]] : acc[purePropertyName];
|
|
68
|
+
}, item);
|
|
69
|
+
}
|
|
70
|
+
getColumns() {
|
|
71
|
+
return this.adapter.getColumns();
|
|
72
|
+
}
|
|
73
|
+
getRows() {
|
|
74
|
+
if (this.isDataSourceValid()) {
|
|
75
|
+
return this.adapter.getRows();
|
|
76
|
+
}
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
setRows(rows) {
|
|
80
|
+
this.adapter.setRows(rows);
|
|
81
|
+
}
|
|
82
|
+
setColumns(columns) {
|
|
83
|
+
this.adapter.setColumns(columns);
|
|
84
|
+
}
|
|
85
|
+
getValue(row, col, resolverFn) {
|
|
86
|
+
return this.adapter.getValue(row, col, resolverFn);
|
|
87
|
+
}
|
|
88
|
+
getColumnType(row, col) {
|
|
89
|
+
return this.adapter.getColumnType(row, col);
|
|
90
|
+
}
|
|
91
|
+
getSorting() {
|
|
92
|
+
return this.adapter.getSorting();
|
|
93
|
+
}
|
|
94
|
+
setSorting(sorting) {
|
|
95
|
+
this.adapter.setSorting(sorting);
|
|
96
|
+
}
|
|
97
|
+
sort(key, direction) {
|
|
98
|
+
this.adapter.sort(key, direction);
|
|
99
|
+
}
|
|
100
|
+
isDataSourceValid() {
|
|
101
|
+
return this.allColumnsHaveKeys();
|
|
102
|
+
}
|
|
103
|
+
allColumnsHaveKeys() {
|
|
104
|
+
return this.adapter.getColumns().every((column) => !!column.key);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1hZGFwdGVyLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvZGF0YS10YWJsZS9kYXRhLXRhYmxlLWFkYXB0ZXIud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxzQkFBc0IsRUFBdUIsZ0JBQWdCLEVBQUUsYUFBYSxFQUFpQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2pKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBR3BGLE1BQU0sT0FBTyxzQkFBc0I7SUFLL0IsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsWUFBWSxJQUFXLEVBQUUsTUFBb0I7UUFYckMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixXQUFNLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBVzdDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBb0I7UUFDdEMsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNMLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFvQjtRQUMvQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckMsT0FBTyxJQUFJLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFVBQVUsQ0FBQyxJQUFXO1FBQzFCLElBQUksSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RSxDQUFDO0lBQ0wsQ0FBQztJQUVPLG9CQUFvQixDQUFDLElBQVM7UUFDbEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBRTVGLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDM0MsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sb0JBQW9CLENBQUMsVUFBb0IsRUFBRSxJQUFTO1FBQ3hELE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1AsT0FBTyxTQUFTLENBQUM7WUFDckIsQ0FBQztZQUVELE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRixNQUFNLGtDQUFrQyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7WUFFaEYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRXZFLE9BQU8sa0NBQWtDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUgsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxPQUFPLENBQUMsSUFBb0I7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUEwQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsUUFBUSxDQUFDLEdBQVksRUFBRSxHQUFlLEVBQUUsVUFBcUQ7UUFDekYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxhQUFhLENBQUMsR0FBWSxFQUFFLEdBQWU7UUFDdkMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFVBQVU7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFvQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQVksRUFBRSxTQUFrQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGlCQUFpQjtRQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVPLGtCQUFrQjtRQUN0QixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgT2JqZWN0RGF0YVRhYmxlQWRhcHRlciwgRGF0YUNvbHVtbiwgRGF0YVJvdywgT2JqZWN0RGF0YUNvbHVtbiwgT2JqZWN0RGF0YVJvdywgRGF0YVRhYmxlQWRhcHRlciwgRGF0YVNvcnRpbmcgfSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgRGF0YVRhYmxlUGF0aFBhcnNlckhlbHBlciB9IGZyb20gJy4vaGVscGVycy9kYXRhLXRhYmxlLXBhdGgtcGFyc2VyLmhlbHBlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBXaWRnZXREYXRhVGFibGVBZGFwdGVyIGltcGxlbWVudHMgRGF0YVRhYmxlQWRhcHRlciB7XG4gICAgcHJpdmF0ZSBhZGFwdGVyOiBPYmplY3REYXRhVGFibGVBZGFwdGVyO1xuICAgIHByaXZhdGUgY29sdW1uS2V5czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIGhlbHBlciA9IG5ldyBEYXRhVGFibGVQYXRoUGFyc2VySGVscGVyKCk7XG5cbiAgICBnZXQgc2VsZWN0ZWRSb3coKTogRGF0YVJvdyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuc2VsZWN0ZWRSb3c7XG4gICAgfVxuXG4gICAgZ2V0IHJvd3NDaGFuZ2VkKCk6IFN1YmplY3Q8QXJyYXk8RGF0YVJvdz4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5yb3dzQ2hhbmdlZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBhbnlbXSwgc2NoZW1hOiBEYXRhQ29sdW1uW10pIHtcbiAgICAgICAgdGhpcy5hZGFwdGVyID0gbmV3IE9iamVjdERhdGFUYWJsZUFkYXB0ZXIoZGF0YSwgc2NoZW1hKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZUNvbHVtbnMoc2NoZW1hKTtcbiAgICAgICAgdGhpcy5jcmVhdGVSb3dzKGRhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQ29sdW1ucyhzY2hlbWE6IERhdGFDb2x1bW5bXSk6IHZvaWQge1xuICAgICAgICBpZiAoc2NoZW1hPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5zZXRDb2x1bW5zKHRoaXMuYnVpbGRDb2x1bW5zRnJvbVNjaGVtYShzY2hlbWEpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYnVpbGRDb2x1bW5zRnJvbVNjaGVtYShzY2hlbWE6IERhdGFDb2x1bW5bXSk6IE9iamVjdERhdGFDb2x1bW5bXSB7XG4gICAgICAgIHJldHVybiBzY2hlbWEubWFwKChkYXRhQ29sdW1uKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbHVtbktleXMucHVzaChkYXRhQ29sdW1uLmtleSk7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0RGF0YUNvbHVtbihkYXRhQ29sdW1uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVSb3dzKGRhdGE6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlci5zZXRSb3dzKGRhdGEubWFwKChpdGVtKSA9PiB0aGlzLmJ1aWxkRGF0YVJvd0Zyb21JdGVtKGl0ZW0pKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGJ1aWxkRGF0YVJvd0Zyb21JdGVtKGl0ZW06IGFueSk6IE9iamVjdERhdGFSb3cge1xuICAgICAgICBjb25zdCByb3dEYXRhID0ge307XG4gICAgICAgIHRoaXMuY29sdW1uS2V5cy5mb3JFYWNoKChwYXRoLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCByb3dWYWx1ZSA9IHRoaXMuZXh0cmFjdFByb3BlcnR5VmFsdWUodGhpcy5oZWxwZXIuc3BsaXRQYXRoSW50b1Byb3BlcnRpZXMocGF0aCksIGl0ZW0pO1xuXG4gICAgICAgICAgICBpZiAocm93VmFsdWUpIHtcbiAgICAgICAgICAgICAgICByb3dEYXRhW3RoaXMuY29sdW1uS2V5c1tpXV0gPSByb3dWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG5ldyBPYmplY3REYXRhUm93KHJvd0RhdGEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXh0cmFjdFByb3BlcnR5VmFsdWUocHJvcGVydGllczogc3RyaW5nW10sIGl0ZW06IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBwcm9wZXJ0aWVzLnJlZHVjZSgoYWNjLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFhY2MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUluZGV4UmVmZXJlbmNlcyA9IHRoaXMuaGVscGVyLmdldEluZGV4UmVmZXJlbmNlc0Zyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgICAgICBjb25zdCBpc1Byb3BlcnR5V2l0aFNpbmdsZUluZGV4UmVmZXJlbmNlID0gcHJvcGVydHlJbmRleFJlZmVyZW5jZXMubGVuZ3RoID09PSAxO1xuXG4gICAgICAgICAgICBjb25zdCBwdXJlUHJvcGVydHlOYW1lID0gdGhpcy5oZWxwZXIuZXh0cmFjdFB1cmVQcm9wZXJ0eU5hbWUocHJvcGVydHkpO1xuXG4gICAgICAgICAgICByZXR1cm4gaXNQcm9wZXJ0eVdpdGhTaW5nbGVJbmRleFJlZmVyZW5jZSA/IGFjY1twdXJlUHJvcGVydHlOYW1lXT8uW3Byb3BlcnR5SW5kZXhSZWZlcmVuY2VzWzBdXSA6IGFjY1twdXJlUHJvcGVydHlOYW1lXTtcbiAgICAgICAgfSwgaXRlbSk7XG4gICAgfVxuXG4gICAgZ2V0Q29sdW1ucygpOiBBcnJheTxEYXRhQ29sdW1uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0Q29sdW1ucygpO1xuICAgIH1cblxuICAgIGdldFJvd3MoKTogRGF0YVJvd1tdIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRhU291cmNlVmFsaWQoKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRSb3dzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgc2V0Um93cyhyb3dzOiBBcnJheTxEYXRhUm93Pik6IHZvaWQge1xuICAgICAgICB0aGlzLmFkYXB0ZXIuc2V0Um93cyhyb3dzKTtcbiAgICB9XG5cbiAgICBzZXRDb2x1bW5zKGNvbHVtbnM6IEFycmF5PERhdGFDb2x1bW4+KTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRDb2x1bW5zKGNvbHVtbnMpO1xuICAgIH1cblxuICAgIGdldFZhbHVlKHJvdzogRGF0YVJvdywgY29sOiBEYXRhQ29sdW1uLCByZXNvbHZlckZuPzogKF9yb3c6IERhdGFSb3csIF9jb2w6IERhdGFDb2x1bW4pID0+IGFueSk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0VmFsdWUocm93LCBjb2wsIHJlc29sdmVyRm4pO1xuICAgIH1cblxuICAgIGdldENvbHVtblR5cGUocm93OiBEYXRhUm93LCBjb2w6IERhdGFDb2x1bW4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldENvbHVtblR5cGUocm93LCBjb2wpO1xuICAgIH1cblxuICAgIGdldFNvcnRpbmcoKTogRGF0YVNvcnRpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmdldFNvcnRpbmcoKTtcbiAgICB9XG5cbiAgICBzZXRTb3J0aW5nKHNvcnRpbmc6IERhdGFTb3J0aW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRhcHRlci5zZXRTb3J0aW5nKHNvcnRpbmcpO1xuICAgIH1cblxuICAgIHNvcnQoa2V5Pzogc3RyaW5nLCBkaXJlY3Rpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGFwdGVyLnNvcnQoa2V5LCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIGlzRGF0YVNvdXJjZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxDb2x1bW5zSGF2ZUtleXMoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFsbENvbHVtbnNIYXZlS2V5cygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5nZXRDb2x1bW5zKCkuZXZlcnkoKGNvbHVtbikgPT4gISFjb2x1bW4ua2V5KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,120 @@
|
|
|
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
|
+
/* eslint-disable @angular-eslint/component-selector */
|
|
18
|
+
import { Component, ViewEncapsulation } from '@angular/core';
|
|
19
|
+
import { WidgetComponent, FormService, FormBaseModule, DataTableComponent, NoContentTemplateDirective, EmptyContentComponent } from '@alfresco/adf-core';
|
|
20
|
+
import { NgIf } from '@angular/common';
|
|
21
|
+
import { TranslatePipe } from '@ngx-translate/core';
|
|
22
|
+
import { FormCloudService } from '../../../services/form-cloud.service';
|
|
23
|
+
import { WidgetDataTableAdapter } from './data-table-adapter.widget';
|
|
24
|
+
import { DataTablePathParserHelper } from './helpers/data-table-path-parser.helper';
|
|
25
|
+
import * as i0 from "@angular/core";
|
|
26
|
+
import * as i1 from "@alfresco/adf-core";
|
|
27
|
+
import * as i2 from "../../../services/form-cloud.service";
|
|
28
|
+
export class DataTableWidgetComponent extends WidgetComponent {
|
|
29
|
+
constructor(formService, formCloudService) {
|
|
30
|
+
super(formService);
|
|
31
|
+
this.formService = formService;
|
|
32
|
+
this.formCloudService = formCloudService;
|
|
33
|
+
this.dataTableLoadFailed = false;
|
|
34
|
+
this.previewState = false;
|
|
35
|
+
this.defaultResponseProperty = 'data';
|
|
36
|
+
this.pathParserHelper = new DataTablePathParserHelper();
|
|
37
|
+
}
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
this.init();
|
|
40
|
+
this.formService.onFormVariableChanged.subscribe(({ field }) => {
|
|
41
|
+
if (field.id === this.field.id) {
|
|
42
|
+
this.init();
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
init() {
|
|
47
|
+
this.dataTableLoadFailed = false;
|
|
48
|
+
this.setPreviewState();
|
|
49
|
+
this.getTableData();
|
|
50
|
+
this.initDataTable();
|
|
51
|
+
}
|
|
52
|
+
getTableData() {
|
|
53
|
+
this.variableName = this.field?.variableConfig?.variableName;
|
|
54
|
+
this.columnsSchema = this.field?.schemaDefinition;
|
|
55
|
+
this.getRowsData();
|
|
56
|
+
}
|
|
57
|
+
initDataTable() {
|
|
58
|
+
this.dataSource = new WidgetDataTableAdapter(this.rowsData, this.columnsSchema);
|
|
59
|
+
if (!this.dataSource.isDataSourceValid()) {
|
|
60
|
+
this.handleError();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.field.updateForm();
|
|
64
|
+
}
|
|
65
|
+
getRowsData() {
|
|
66
|
+
const optionsPath = this.field?.variableConfig?.optionsPath ?? this.defaultResponseProperty;
|
|
67
|
+
const fieldValue = this.field?.value;
|
|
68
|
+
const rowsData = fieldValue || this.getDataFromVariable();
|
|
69
|
+
if (!rowsData) {
|
|
70
|
+
this.handleError();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
this.rowsData = this.extractRowsData(rowsData, optionsPath);
|
|
74
|
+
if (!this.rowsData) {
|
|
75
|
+
this.handleError();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
extractRowsData(rowsData, optionsPath) {
|
|
79
|
+
if (Array.isArray(rowsData)) {
|
|
80
|
+
return rowsData;
|
|
81
|
+
}
|
|
82
|
+
return this.pathParserHelper.retrieveDataFromPath(rowsData, optionsPath);
|
|
83
|
+
}
|
|
84
|
+
getDataFromVariable() {
|
|
85
|
+
const processVariables = this.field?.form?.processVariables;
|
|
86
|
+
const formVariables = this.field?.form?.variables;
|
|
87
|
+
const processVariableData = this.getVariableValueByName(processVariables, this.variableName);
|
|
88
|
+
const formVariableData = this.getVariableValueByName(formVariables, this.variableName);
|
|
89
|
+
return processVariableData ?? formVariableData;
|
|
90
|
+
}
|
|
91
|
+
getVariableValueByName(variables, variableName) {
|
|
92
|
+
return variables?.find((variable) => variable?.name === `variables.${variableName}` || variable?.name === variableName)
|
|
93
|
+
?.value;
|
|
94
|
+
}
|
|
95
|
+
setPreviewState() {
|
|
96
|
+
this.previewState = this.formCloudService.getPreviewState();
|
|
97
|
+
}
|
|
98
|
+
handleError() {
|
|
99
|
+
if (!this.previewState) {
|
|
100
|
+
this.dataTableLoadFailed = true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableWidgetComponent, deps: [{ token: i1.FormService }, { token: i2.FormCloudService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
104
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: DataTableWidgetComponent, isStandalone: true, selector: "data-table", host: { listeners: { "click": "event($event)", "blur": "event($event)", "change": "event($event)", "focus": "event($event)", "focusin": "event($event)", "focusout": "event($event)", "input": "event($event)", "invalid": "event($event)", "select": "event($event)" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"adf-data-table-widget-container\">\n <div class=\"adf-data-table-widget-label\">\n <label\n class=\"adf-label\"\n [class.adf-left-label]=\"field.leftLabels\"\n [attr.for]=\"field.id\">\n {{field.name | translate }}\n </label>\n </div>\n\n <ng-container *ngIf=\"!previewState; else previewTemplate\">\n <adf-datatable data-automation-id=\"adf-data-table-widget\" [data]=\"dataSource\">\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content\n icon=\"border_all\"\n [title]=\"'FORM.FIELD.DATA_TABLE_EMPTY_CONTENT' | translate\" />\n </ng-template>\n </adf-no-content-template>\n </adf-datatable>\n\n <error-widget *ngIf=\"dataTableLoadFailed\"\n class=\"adf-data-table-widget-failed-message\"\n [required]=\"'FORM.FIELD.DATA_TABLE_LOAD_FAILED' | translate\" />\n </ng-container>\n\n <ng-template #previewTemplate>\n <adf-datatable data-automation-id=\"adf-data-table-widget-preview\" />\n <div class=\"adf-preview-placeholder\"></div>\n </ng-template>\n</div>\n", styles: [".adf-data-table-widget-failed-message{margin:10px}.adf-preview-placeholder{background-color:var(--adf-theme-mat-grey-color-50);height:100%;width:100%;min-height:100px;margin-bottom:10px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: FormBaseModule }, { kind: "component", type: i1.ErrorWidgetComponent, selector: "error-widget", inputs: ["error", "required"] }, { kind: "component", type: DataTableComponent, selector: "adf-datatable", inputs: ["data", "rows", "sorting", "columns", "selectionMode", "multiselect", "mainTableAction", "actions", "showMainDatatableActions", "showProvidedActions", "actionsPosition", "actionsVisibleOnHover", "fallbackThumbnail", "contextMenu", "rowStyle", "rowStyleClass", "showHeader", "stickyHeader", "loading", "noPermission", "rowMenuCacheEnabled", "resolverFn", "allowFiltering", "isResizingEnabled", "blurOnResize", "displayCheckboxesOnHover", "enableDragRows"], outputs: ["rowClick", "rowDblClick", "showRowContextMenu", "showRowActionsMenu", "executeRowAction", "columnOrderChanged", "columnsWidthChanged", "selectedItemsCountChanged", "dragDropped"] }, { kind: "directive", type: NoContentTemplateDirective, selector: "adf-no-content-template, no-content-template" }, { kind: "component", type: EmptyContentComponent, selector: "adf-empty-content", inputs: ["icon", "title", "subtitle"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
105
|
+
}
|
|
106
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataTableWidgetComponent, decorators: [{
|
|
107
|
+
type: Component,
|
|
108
|
+
args: [{ standalone: true, imports: [NgIf, TranslatePipe, FormBaseModule, DataTableComponent, NoContentTemplateDirective, EmptyContentComponent], selector: 'data-table', host: {
|
|
109
|
+
'(click)': 'event($event)',
|
|
110
|
+
'(blur)': 'event($event)',
|
|
111
|
+
'(change)': 'event($event)',
|
|
112
|
+
'(focus)': 'event($event)',
|
|
113
|
+
'(focusin)': 'event($event)',
|
|
114
|
+
'(focusout)': 'event($event)',
|
|
115
|
+
'(input)': 'event($event)',
|
|
116
|
+
'(invalid)': 'event($event)',
|
|
117
|
+
'(select)': 'event($event)'
|
|
118
|
+
}, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-data-table-widget-container\">\n <div class=\"adf-data-table-widget-label\">\n <label\n class=\"adf-label\"\n [class.adf-left-label]=\"field.leftLabels\"\n [attr.for]=\"field.id\">\n {{field.name | translate }}\n </label>\n </div>\n\n <ng-container *ngIf=\"!previewState; else previewTemplate\">\n <adf-datatable data-automation-id=\"adf-data-table-widget\" [data]=\"dataSource\">\n <adf-no-content-template>\n <ng-template>\n <adf-empty-content\n icon=\"border_all\"\n [title]=\"'FORM.FIELD.DATA_TABLE_EMPTY_CONTENT' | translate\" />\n </ng-template>\n </adf-no-content-template>\n </adf-datatable>\n\n <error-widget *ngIf=\"dataTableLoadFailed\"\n class=\"adf-data-table-widget-failed-message\"\n [required]=\"'FORM.FIELD.DATA_TABLE_LOAD_FAILED' | translate\" />\n </ng-container>\n\n <ng-template #previewTemplate>\n <adf-datatable data-automation-id=\"adf-data-table-widget-preview\" />\n <div class=\"adf-preview-placeholder\"></div>\n </ng-template>\n</div>\n", styles: [".adf-data-table-widget-failed-message{margin:10px}.adf-preview-placeholder{background-color:var(--adf-theme-mat-grey-color-50);height:100%;width:100%;min-height:100px;margin-bottom:10px}\n"] }]
|
|
119
|
+
}], ctorParameters: () => [{ type: i1.FormService }, { type: i2.FormCloudService }] });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS53aWRnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvZGF0YS10YWJsZS53aWRnZXQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFFSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFNBQVMsRUFBVSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFdBQVcsRUFDWCxjQUFjLEVBR2Qsa0JBQWtCLEVBQ2xCLDBCQUEwQixFQUMxQixxQkFBcUIsRUFDeEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7O0FBcUJwRixNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZUFBZTtJQVd6RCxZQUFtQixXQUF3QixFQUFVLGdCQUFrQztRQUNuRixLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFESixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FB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QUFFLGVBQWU7d0JBQzVCLFlBQVksRUFBRSxlQUFlO3dCQUM3QixTQUFTLEVBQUUsZUFBZTt3QkFDMUIsV0FBVyxFQUFFLGVBQWU7d0JBQzVCLFVBQVUsRUFBRSxlQUFlO3FCQUM5QixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBXaWRnZXRDb21wb25lbnQsXG4gICAgRm9ybVNlcnZpY2UsXG4gICAgRm9ybUJhc2VNb2R1bGUsXG4gICAgRGF0YVJvdyxcbiAgICBEYXRhQ29sdW1uLFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBOb0NvbnRlbnRUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBFbXB0eUNvbnRlbnRDb21wb25lbnRcbn0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBUYXNrVmFyaWFibGVDbG91ZCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy90YXNrLXZhcmlhYmxlLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IFdpZGdldERhdGFUYWJsZUFkYXB0ZXIgfSBmcm9tICcuL2RhdGEtdGFibGUtYWRhcHRlci53aWRnZXQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlUGF0aFBhcnNlckhlbHBlciB9IGZyb20gJy4vaGVscGVycy9kYXRhLXRhYmxlLXBhdGgtcGFyc2VyLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIFRyYW5zbGF0ZVBpcGUsIEZvcm1CYXNlTW9kdWxlLCBEYXRhVGFibGVDb21wb25lbnQsIE5vQ29udGVudFRlbXBsYXRlRGlyZWN0aXZlLCBFbXB0eUNvbnRlbnRDb21wb25lbnRdLFxuICAgIHNlbGVjdG9yOiAnZGF0YS10YWJsZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGEtdGFibGUud2lkZ2V0Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2RhdGEtdGFibGUud2lkZ2V0LnNjc3MnXSxcbiAgICBob3N0OiB7XG4gICAgICAgICcoY2xpY2spJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGJsdXIpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGNoYW5nZSknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoZm9jdXMpJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3VzaW4pJzogJ2V2ZW50KCRldmVudCknLFxuICAgICAgICAnKGZvY3Vzb3V0KSc6ICdldmVudCgkZXZlbnQpJyxcbiAgICAgICAgJyhpbnB1dCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoaW52YWxpZCknOiAnZXZlbnQoJGV2ZW50KScsXG4gICAgICAgICcoc2VsZWN0KSc6ICdldmVudCgkZXZlbnQpJ1xuICAgIH0sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVXaWRnZXRDb21wb25lbnQgZXh0ZW5kcyBXaWRnZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGRhdGFTb3VyY2U6IFdpZGdldERhdGFUYWJsZUFkYXB0ZXI7XG4gICAgZGF0YVRhYmxlTG9hZEZhaWxlZCA9IGZhbHNlO1xuICAgIHByZXZpZXdTdGF0ZSA9IGZhbHNlO1xuXG4gICAgcHJpdmF0ZSByb3dzRGF0YTogRGF0YVJvd1tdO1xuICAgIHByaXZhdGUgY29sdW1uc1NjaGVtYTogRGF0YUNvbHVtbltdO1xuICAgIHByaXZhdGUgdmFyaWFibGVOYW1lOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBkZWZhdWx0UmVzcG9uc2VQcm9wZXJ0eSA9ICdkYXRhJztcbiAgICBwcml2YXRlIHBhdGhQYXJzZXJIZWxwZXIgPSBuZXcgRGF0YVRhYmxlUGF0aFBhcnNlckhlbHBlcigpO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSwgcHJpdmF0ZSBmb3JtQ2xvdWRTZXJ2aWNlOiBGb3JtQ2xvdWRTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKGZvcm1TZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5vbkZvcm1WYXJpYWJsZUNoYW5nZWQuc3Vic2NyaWJlKCh7IGZpZWxkIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChmaWVsZC5pZCA9PT0gdGhpcy5maWVsZC5pZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YVRhYmxlTG9hZEZhaWxlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc2V0UHJldmlld1N0YXRlKCk7XG4gICAgICAgIHRoaXMuZ2V0VGFibGVEYXRhKCk7XG4gICAgICAgIHRoaXMuaW5pdERhdGFUYWJsZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VGFibGVEYXRhKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZhcmlhYmxlTmFtZSA9IHRoaXMuZmllbGQ/LnZhcmlhYmxlQ29uZmlnPy52YXJpYWJsZU5hbWU7XG4gICAgICAgIHRoaXMuY29sdW1uc1NjaGVtYSA9IHRoaXMuZmllbGQ/LnNjaGVtYURlZmluaXRpb247XG5cbiAgICAgICAgdGhpcy5nZXRSb3dzRGF0YSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdERhdGFUYWJsZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IFdpZGdldERhdGFUYWJsZUFkYXB0ZXIodGhpcy5yb3dzRGF0YSwgdGhpcy5jb2x1bW5zU2NoZW1hKTtcblxuICAgICAgICBpZiAoIXRoaXMuZGF0YVNvdXJjZS5pc0RhdGFTb3VyY2VWYWxpZCgpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpZWxkLnVwZGF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJvd3NEYXRhKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvcHRpb25zUGF0aCA9IHRoaXMuZmllbGQ/LnZhcmlhYmxlQ29uZmlnPy5vcHRpb25zUGF0aCA/PyB0aGlzLmRlZmF1bHRSZXNwb25zZVByb3BlcnR5O1xuICAgICAgICBjb25zdCBmaWVsZFZhbHVlID0gdGhpcy5maWVsZD8udmFsdWU7XG5cbiAgICAgICAgY29uc3Qgcm93c0RhdGEgPSBmaWVsZFZhbHVlIHx8IHRoaXMuZ2V0RGF0YUZyb21WYXJpYWJsZSgpO1xuXG4gICAgICAgIGlmICghcm93c0RhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucm93c0RhdGEgPSB0aGlzLmV4dHJhY3RSb3dzRGF0YShyb3dzRGF0YSwgb3B0aW9uc1BhdGgpO1xuXG4gICAgICAgIGlmICghdGhpcy5yb3dzRGF0YSkge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBleHRyYWN0Um93c0RhdGEocm93c0RhdGE6IGFueSwgb3B0aW9uc1BhdGg6IHN0cmluZyk6IERhdGFSb3dbXSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJvd3NEYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJvd3NEYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucGF0aFBhcnNlckhlbHBlci5yZXRyaWV2ZURhdGFGcm9tUGF0aChyb3dzRGF0YSwgb3B0aW9uc1BhdGgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGF0YUZyb21WYXJpYWJsZSgpOiBhbnkge1xuICAgICAgICBjb25zdCBwcm9jZXNzVmFyaWFibGVzID0gdGhpcy5maWVsZD8uZm9ybT8ucHJvY2Vzc1ZhcmlhYmxlcztcbiAgICAgICAgY29uc3QgZm9ybVZhcmlhYmxlcyA9IHRoaXMuZmllbGQ/LmZvcm0/LnZhcmlhYmxlcztcblxuICAgICAgICBjb25zdCBwcm9jZXNzVmFyaWFibGVEYXRhID0gdGhpcy5nZXRWYXJpYWJsZVZhbHVlQnlOYW1lKHByb2Nlc3NWYXJpYWJsZXMsIHRoaXMudmFyaWFibGVOYW1lKTtcbiAgICAgICAgY29uc3QgZm9ybVZhcmlhYmxlRGF0YSA9IHRoaXMuZ2V0VmFyaWFibGVWYWx1ZUJ5TmFtZShmb3JtVmFyaWFibGVzLCB0aGlzLnZhcmlhYmxlTmFtZSk7XG5cbiAgICAgICAgcmV0dXJuIHByb2Nlc3NWYXJpYWJsZURhdGEgPz8gZm9ybVZhcmlhYmxlRGF0YTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFZhcmlhYmxlVmFsdWVCeU5hbWUodmFyaWFibGVzOiBUYXNrVmFyaWFibGVDbG91ZFtdLCB2YXJpYWJsZU5hbWU6IHN0cmluZyk6IGFueSB7XG4gICAgICAgIHJldHVybiB2YXJpYWJsZXM/LmZpbmQoKHZhcmlhYmxlOiBUYXNrVmFyaWFibGVDbG91ZCkgPT4gdmFyaWFibGU/Lm5hbWUgPT09IGB2YXJpYWJsZXMuJHt2YXJpYWJsZU5hbWV9YCB8fCB2YXJpYWJsZT8ubmFtZSA9PT0gdmFyaWFibGVOYW1lKVxuICAgICAgICAgICAgPy52YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFByZXZpZXdTdGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcmV2aWV3U3RhdGUgPSB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0UHJldmlld1N0YXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXZpZXdTdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhVGFibGVMb2FkRmFpbGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1kYXRhLXRhYmxlLXdpZGdldC1sYWJlbFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWxhYmVsXCJcbiAgICAgICAgICAgIFtjbGFzcy5hZGYtbGVmdC1sYWJlbF09XCJmaWVsZC5sZWZ0TGFiZWxzXCJcbiAgICAgICAgICAgIFthdHRyLmZvcl09XCJmaWVsZC5pZFwiPlxuICAgICAgICAgICAgICAgIHt7ZmllbGQubmFtZSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFwcmV2aWV3U3RhdGU7IGVsc2UgcHJldmlld1RlbXBsYXRlXCI+XG4gICAgICAgIDxhZGYtZGF0YXRhYmxlIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1kYXRhLXRhYmxlLXdpZGdldFwiIFtkYXRhXT1cImRhdGFTb3VyY2VcIj5cbiAgICAgICAgICAgIDxhZGYtbm8tY29udGVudC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZW1wdHktY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cImJvcmRlcl9hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cIidGT1JNLkZJRUxELkRBVEFfVEFCTEVfRU1QVFlfQ09OVEVOVCcgfCB0cmFuc2xhdGVcIiAvPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2FkZi1uby1jb250ZW50LXRlbXBsYXRlPlxuICAgICAgICA8L2FkZi1kYXRhdGFibGU+XG5cbiAgICAgICAgPGVycm9yLXdpZGdldCAqbmdJZj1cImRhdGFUYWJsZUxvYWRGYWlsZWRcIlxuICAgICAgICAgICAgY2xhc3M9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtZmFpbGVkLW1lc3NhZ2VcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cIidGT1JNLkZJRUxELkRBVEFfVEFCTEVfTE9BRF9GQUlMRUQnIHwgdHJhbnNsYXRlXCIgLz5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcHJldmlld1RlbXBsYXRlPlxuICAgICAgICA8YWRmLWRhdGF0YWJsZSBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtZGF0YS10YWJsZS13aWRnZXQtcHJldmlld1wiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtcHJldmlldy1wbGFjZWhvbGRlclwiPjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
export class DataTablePathParserHelper {
|
|
18
|
+
constructor() {
|
|
19
|
+
this.removeSquareBracketsRegEx = /^\[(.*)\]$/;
|
|
20
|
+
this.indexReferencesRegEx = /(\[\d+\])+$/;
|
|
21
|
+
}
|
|
22
|
+
retrieveDataFromPath(data, path) {
|
|
23
|
+
if (!path) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const properties = this.splitPathIntoProperties(path);
|
|
27
|
+
const currentProperty = properties.shift();
|
|
28
|
+
const propertyIndexReferences = this.getIndexReferencesFromProperty(currentProperty);
|
|
29
|
+
const purePropertyName = this.extractPurePropertyName(currentProperty);
|
|
30
|
+
const isPropertyWithMultipleIndexReferences = propertyIndexReferences.length > 1;
|
|
31
|
+
if (isPropertyWithMultipleIndexReferences || !this.isPropertyExistsInData(data, purePropertyName)) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const isPropertyWithSingleIndexReference = propertyIndexReferences.length === 1;
|
|
35
|
+
const nestedData = isPropertyWithSingleIndexReference ? data[purePropertyName]?.[propertyIndexReferences[0]] : data[purePropertyName];
|
|
36
|
+
if (nestedData && properties.length === 0) {
|
|
37
|
+
if (this.isDataArrayOrObject(nestedData)) {
|
|
38
|
+
return Array.isArray(nestedData) ? nestedData : [nestedData];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return this.retrieveDataFromPath(nestedData, properties.join('.'));
|
|
42
|
+
}
|
|
43
|
+
splitPathIntoProperties(path) {
|
|
44
|
+
const properties = [];
|
|
45
|
+
const separator = '.';
|
|
46
|
+
const openBracket = '[';
|
|
47
|
+
const closeBracket = ']';
|
|
48
|
+
let currentPropertyBuffer = '';
|
|
49
|
+
let bracketCount = 0;
|
|
50
|
+
const isPropertySeparatorOutsideBrackets = () => bracketCount === 0;
|
|
51
|
+
if (!path) {
|
|
52
|
+
return properties;
|
|
53
|
+
}
|
|
54
|
+
for (const char of path) {
|
|
55
|
+
switch (char) {
|
|
56
|
+
case separator:
|
|
57
|
+
if (isPropertySeparatorOutsideBrackets()) {
|
|
58
|
+
properties.push(currentPropertyBuffer);
|
|
59
|
+
currentPropertyBuffer = '';
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
currentPropertyBuffer += char;
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case openBracket:
|
|
66
|
+
bracketCount++;
|
|
67
|
+
currentPropertyBuffer += char;
|
|
68
|
+
break;
|
|
69
|
+
case closeBracket:
|
|
70
|
+
bracketCount--;
|
|
71
|
+
currentPropertyBuffer += char;
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
currentPropertyBuffer += char;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (currentPropertyBuffer) {
|
|
79
|
+
properties.push(currentPropertyBuffer);
|
|
80
|
+
}
|
|
81
|
+
return properties;
|
|
82
|
+
}
|
|
83
|
+
getIndexReferencesFromProperty(property) {
|
|
84
|
+
const match = this.indexReferencesRegEx.exec(property);
|
|
85
|
+
if (!match) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
const indexReferencesString = match[0];
|
|
89
|
+
const numbersFromBrackets = indexReferencesString.slice(1, -1).split('][').map(Number);
|
|
90
|
+
return numbersFromBrackets;
|
|
91
|
+
}
|
|
92
|
+
extractPurePropertyName(property) {
|
|
93
|
+
const propertyIndexReferences = this.getIndexReferencesFromProperty(property);
|
|
94
|
+
const numberOfIndexReferences = propertyIndexReferences.length;
|
|
95
|
+
if (property == null) {
|
|
96
|
+
return '';
|
|
97
|
+
}
|
|
98
|
+
else if (numberOfIndexReferences !== 0) {
|
|
99
|
+
return this.removeSquareBracketsAndIndexReferencesFromProperty(property);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
return this.removeSquareBracketsFromProperty(property);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
removeSquareBracketsAndIndexReferencesFromProperty(property) {
|
|
106
|
+
const propertyWithoutIndexReferences = property?.replace(this.indexReferencesRegEx, '');
|
|
107
|
+
return this.removeSquareBracketsFromProperty(propertyWithoutIndexReferences);
|
|
108
|
+
}
|
|
109
|
+
removeSquareBracketsFromProperty(property) {
|
|
110
|
+
return property?.replace(this.removeSquareBracketsRegEx, '$1');
|
|
111
|
+
}
|
|
112
|
+
isPropertyExistsInData(data, property) {
|
|
113
|
+
return Object.prototype.hasOwnProperty.call(data, property);
|
|
114
|
+
}
|
|
115
|
+
isDataArrayOrObject(data) {
|
|
116
|
+
if (data == null) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
return Array.isArray(data) || typeof data === 'object';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS1wYXRoLXBhcnNlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy93aWRnZXRzL2RhdGEtdGFibGUvaGVscGVycy9kYXRhLXRhYmxlLXBhdGgtcGFyc2VyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFJSCxNQUFNLE9BQU8seUJBQXlCO0lBQXRDO1FBQ3FCLDhCQUF5QixHQUFHLFlBQVksQ0FBQztRQUN6Qyx5QkFBb0IsR0FBRyxhQUFhLENBQUM7SUF1SDFELENBQUM7SUFySEcsb0JBQW9CLENBQUMsSUFBUyxFQUFFLElBQVk7UUFDeEMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FBRyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDckYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDdkUsTUFBTSxxQ0FBcUMsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRWpGLElBQUkscUNBQXFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztZQUNoRyxPQUFPLFNBQVMsQ0FBQztRQUNyQixDQUFDO1FBRUQsTUFBTSxrQ0FBa0MsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sVUFBVSxHQUFHLGtDQUFrQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRJLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdkMsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakUsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxJQUFZO1FBQ2hDLE1BQU0sVUFBVSxHQUFhLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUM7UUFDdEIsTUFBTSxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQztRQUV6QixJQUFJLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDckIsTUFBTSxrQ0FBa0MsR0FBRyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNSLE9BQU8sVUFBVSxDQUFDO1FBQ3RCLENBQUM7UUFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3RCLFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ1gsS0FBSyxTQUFTO29CQUNWLElBQUksa0NBQWtDLEVBQUUsRUFBRSxDQUFDO3dCQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7d0JBQ3ZDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztvQkFDL0IsQ0FBQzt5QkFBTSxDQUFDO3dCQUNKLHFCQUFxQixJQUFJLElBQUksQ0FBQztvQkFDbEMsQ0FBQztvQkFDRCxNQUFNO2dCQUNWLEtBQUssV0FBVztvQkFDWixZQUFZLEVBQUUsQ0FBQztvQkFDZixxQkFBcUIsSUFBSSxJQUFJLENBQUM7b0JBQzlCLE1BQU07Z0JBQ1YsS0FBSyxZQUFZO29CQUNiLFlBQVksRUFBRSxDQUFDO29CQUNmLHFCQUFxQixJQUFJLElBQUksQ0FBQztvQkFDOUIsTUFBTTtnQkFDVjtvQkFDSSxxQkFBcUIsSUFBSSxJQUFJLENBQUM7b0JBQzlCLE1BQU07WUFDZCxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUkscUJBQXFCLEVBQUUsQ0FBQztZQUN4QixVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxRQUFnQjtRQUMzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0scUJBQXFCLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFdkYsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBZ0I7UUFDcEMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUUsTUFBTSx1QkFBdUIsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUM7UUFFL0QsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO2FBQU0sSUFBSSx1QkFBdUIsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxPQUFPLElBQUksQ0FBQyxrREFBa0QsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3RSxDQUFDO2FBQU0sQ0FBQztZQUNKLE9BQU8sSUFBSSxDQUFDLGdDQUFnQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDTCxDQUFDO0lBRU8sa0RBQWtELENBQUMsUUFBZ0I7UUFDdkUsTUFBTSw4QkFBOEIsR0FBRyxRQUFRLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV4RixPQUFPLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFTyxnQ0FBZ0MsQ0FBQyxRQUFnQjtRQUNyRCxPQUFPLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxJQUFTLEVBQUUsUUFBZ0I7UUFDdEQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxJQUFTO1FBQ2pDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2YsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLENBQUM7SUFDM0QsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBEYXRhUm93IH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcblxuZXhwb3J0IGNsYXNzIERhdGFUYWJsZVBhdGhQYXJzZXJIZWxwZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVtb3ZlU3F1YXJlQnJhY2tldHNSZWdFeCA9IC9eXFxbKC4qKVxcXSQvO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5kZXhSZWZlcmVuY2VzUmVnRXggPSAvKFxcW1xcZCtcXF0pKyQvO1xuXG4gICAgcmV0cmlldmVEYXRhRnJvbVBhdGgoZGF0YTogYW55LCBwYXRoOiBzdHJpbmcpOiBEYXRhUm93W10gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9wZXJ0aWVzID0gdGhpcy5zcGxpdFBhdGhJbnRvUHJvcGVydGllcyhwYXRoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFByb3BlcnR5ID0gcHJvcGVydGllcy5zaGlmdCgpO1xuICAgICAgICBjb25zdCBwcm9wZXJ0eUluZGV4UmVmZXJlbmNlcyA9IHRoaXMuZ2V0SW5kZXhSZWZlcmVuY2VzRnJvbVByb3BlcnR5KGN1cnJlbnRQcm9wZXJ0eSk7XG4gICAgICAgIGNvbnN0IHB1cmVQcm9wZXJ0eU5hbWUgPSB0aGlzLmV4dHJhY3RQdXJlUHJvcGVydHlOYW1lKGN1cnJlbnRQcm9wZXJ0eSk7XG4gICAgICAgIGNvbnN0IGlzUHJvcGVydHlXaXRoTXVsdGlwbGVJbmRleFJlZmVyZW5jZXMgPSBwcm9wZXJ0eUluZGV4UmVmZXJlbmNlcy5sZW5ndGggPiAxO1xuXG4gICAgICAgIGlmIChpc1Byb3BlcnR5V2l0aE11bHRpcGxlSW5kZXhSZWZlcmVuY2VzIHx8ICF0aGlzLmlzUHJvcGVydHlFeGlzdHNJbkRhdGEoZGF0YSwgcHVyZVByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc1Byb3BlcnR5V2l0aFNpbmdsZUluZGV4UmVmZXJlbmNlID0gcHJvcGVydHlJbmRleFJlZmVyZW5jZXMubGVuZ3RoID09PSAxO1xuICAgICAgICBjb25zdCBuZXN0ZWREYXRhID0gaXNQcm9wZXJ0eVdpdGhTaW5nbGVJbmRleFJlZmVyZW5jZSA/IGRhdGFbcHVyZVByb3BlcnR5TmFtZV0/Lltwcm9wZXJ0eUluZGV4UmVmZXJlbmNlc1swXV0gOiBkYXRhW3B1cmVQcm9wZXJ0eU5hbWVdO1xuXG4gICAgICAgIGlmIChuZXN0ZWREYXRhICYmIHByb3BlcnRpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pc0RhdGFBcnJheU9yT2JqZWN0KG5lc3RlZERhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobmVzdGVkRGF0YSkgPyBuZXN0ZWREYXRhIDogW25lc3RlZERhdGFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmV0cmlldmVEYXRhRnJvbVBhdGgobmVzdGVkRGF0YSwgcHJvcGVydGllcy5qb2luKCcuJykpO1xuICAgIH1cblxuICAgIHNwbGl0UGF0aEludG9Qcm9wZXJ0aWVzKHBhdGg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgcHJvcGVydGllczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3Qgc2VwYXJhdG9yID0gJy4nO1xuICAgICAgICBjb25zdCBvcGVuQnJhY2tldCA9ICdbJztcbiAgICAgICAgY29uc3QgY2xvc2VCcmFja2V0ID0gJ10nO1xuXG4gICAgICAgIGxldCBjdXJyZW50UHJvcGVydHlCdWZmZXIgPSAnJztcbiAgICAgICAgbGV0IGJyYWNrZXRDb3VudCA9IDA7XG4gICAgICAgIGNvbnN0IGlzUHJvcGVydHlTZXBhcmF0b3JPdXRzaWRlQnJhY2tldHMgPSAoKSA9PiBicmFja2V0Q291bnQgPT09IDA7XG5cbiAgICAgICAgaWYgKCFwYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydGllcztcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBwYXRoKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGNoYXIpIHtcbiAgICAgICAgICAgICAgICBjYXNlIHNlcGFyYXRvcjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUHJvcGVydHlTZXBhcmF0b3JPdXRzaWRlQnJhY2tldHMoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHlCdWZmZXIgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlciArPSBjaGFyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2Ugb3BlbkJyYWNrZXQ6XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRDb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHlCdWZmZXIgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBjbG9zZUJyYWNrZXQ6XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRDb3VudC0tO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UHJvcGVydHlCdWZmZXIgKz0gY2hhcjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFByb3BlcnR5QnVmZmVyICs9IGNoYXI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlcikge1xuICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKGN1cnJlbnRQcm9wZXJ0eUJ1ZmZlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcHJvcGVydGllcztcbiAgICB9XG5cbiAgICBnZXRJbmRleFJlZmVyZW5jZXNGcm9tUHJvcGVydHkocHJvcGVydHk6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmluZGV4UmVmZXJlbmNlc1JlZ0V4LmV4ZWMocHJvcGVydHkpO1xuICAgICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbmRleFJlZmVyZW5jZXNTdHJpbmcgPSBtYXRjaFswXTtcbiAgICAgICAgY29uc3QgbnVtYmVyc0Zyb21CcmFja2V0cyA9IGluZGV4UmVmZXJlbmNlc1N0cmluZy5zbGljZSgxLCAtMSkuc3BsaXQoJ11bJykubWFwKE51bWJlcik7XG5cbiAgICAgICAgcmV0dXJuIG51bWJlcnNGcm9tQnJhY2tldHM7XG4gICAgfVxuXG4gICAgZXh0cmFjdFB1cmVQcm9wZXJ0eU5hbWUocHJvcGVydHk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5SW5kZXhSZWZlcmVuY2VzID0gdGhpcy5nZXRJbmRleFJlZmVyZW5jZXNGcm9tUHJvcGVydHkocHJvcGVydHkpO1xuICAgICAgICBjb25zdCBudW1iZXJPZkluZGV4UmVmZXJlbmNlcyA9IHByb3BlcnR5SW5kZXhSZWZlcmVuY2VzLmxlbmd0aDtcblxuICAgICAgICBpZiAocHJvcGVydHkgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9IGVsc2UgaWYgKG51bWJlck9mSW5kZXhSZWZlcmVuY2VzICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVTcXVhcmVCcmFja2V0c0FuZEluZGV4UmVmZXJlbmNlc0Zyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW1vdmVTcXVhcmVCcmFja2V0c0Zyb21Qcm9wZXJ0eShwcm9wZXJ0eSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVNxdWFyZUJyYWNrZXRzQW5kSW5kZXhSZWZlcmVuY2VzRnJvbVByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eVdpdGhvdXRJbmRleFJlZmVyZW5jZXMgPSBwcm9wZXJ0eT8ucmVwbGFjZSh0aGlzLmluZGV4UmVmZXJlbmNlc1JlZ0V4LCAnJyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlU3F1YXJlQnJhY2tldHNGcm9tUHJvcGVydHkocHJvcGVydHlXaXRob3V0SW5kZXhSZWZlcmVuY2VzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVNxdWFyZUJyYWNrZXRzRnJvbVByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcHJvcGVydHk/LnJlcGxhY2UodGhpcy5yZW1vdmVTcXVhcmVCcmFja2V0c1JlZ0V4LCAnJDEnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvcGVydHlFeGlzdHNJbkRhdGEoZGF0YTogYW55LCBwcm9wZXJ0eTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZGF0YSwgcHJvcGVydHkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRhQXJyYXlPck9iamVjdChkYXRhOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGRhdGEpIHx8IHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JztcbiAgICB9XG59XG4iXX0=
|