@pega/angular-sdk-overrides 24.2.10 → 25.1.10
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/lib/designSystemExtension/alert/alert.component.scss +3 -3
- package/lib/designSystemExtension/alert/alert.component.ts +0 -1
- package/lib/designSystemExtension/alert-banner/alert-banner.component.ts +0 -1
- package/lib/designSystemExtension/banner/banner.component.html +1 -1
- package/lib/designSystemExtension/banner/banner.component.scss +17 -3
- package/lib/designSystemExtension/banner/banner.component.ts +0 -1
- package/lib/designSystemExtension/case-create-stage/case-create-stage.component.ts +0 -1
- package/lib/designSystemExtension/field-group/field-group.component.ts +0 -1
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.html +6 -3
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.scss +5 -34
- package/lib/designSystemExtension/material-case-summary/material-case-summary.component.ts +0 -2
- package/lib/designSystemExtension/material-details/material-details.component.scss +0 -5
- package/lib/designSystemExtension/material-details/material-details.component.ts +0 -1
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.html +3 -3
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.scss +4 -3
- package/lib/designSystemExtension/material-details-fields/material-details-fields.component.ts +6 -1
- package/lib/designSystemExtension/material-summary-item/material-summary-item.component.scss +4 -17
- package/lib/designSystemExtension/material-summary-item/material-summary-item.component.ts +0 -1
- package/lib/designSystemExtension/material-summary-list/material-summary-list.component.ts +0 -1
- package/lib/designSystemExtension/material-utility/material-utility.component.scss +1 -2
- package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss +1 -1
- package/lib/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +0 -1
- package/lib/designSystemExtension/operator/operator.component.html +2 -2
- package/lib/designSystemExtension/operator/operator.component.scss +13 -12
- package/lib/designSystemExtension/operator/operator.component.ts +4 -5
- package/lib/designSystemExtension/pulse/pulse.component.scss +2 -2
- package/lib/designSystemExtension/pulse/pulse.component.ts +0 -1
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.html +4 -17
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +0 -1
- package/lib/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +30 -1
- package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +16 -9
- package/lib/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +0 -1
- package/lib/field/auto-complete/auto-complete.component.html +0 -2
- package/lib/field/auto-complete/auto-complete.component.ts +48 -173
- package/lib/field/cancel-alert/cancel-alert.component.html +8 -12
- package/lib/field/cancel-alert/cancel-alert.component.scss +2 -3
- package/lib/field/cancel-alert/cancel-alert.component.ts +24 -37
- package/lib/field/check-box/check-box.component.html +17 -6
- package/lib/field/check-box/check-box.component.scss +0 -1
- package/lib/field/check-box/check-box.component.ts +25 -151
- package/lib/field/currency/currency.component.ts +54 -181
- package/lib/field/date/date.component.html +4 -3
- package/lib/field/date/date.component.ts +30 -151
- package/lib/field/date-time/date-time.component.html +2 -2
- package/lib/field/date-time/date-time.component.ts +47 -148
- package/lib/field/decimal/decimal.component.html +1 -0
- package/lib/field/decimal/decimal.component.ts +61 -164
- package/lib/field/dropdown/dropdown.component.html +1 -0
- package/lib/field/dropdown/dropdown.component.ts +43 -152
- package/lib/field/email/email.component.ts +28 -158
- package/lib/field/field.base.ts +149 -0
- package/lib/field/group/group.component.ts +7 -5
- package/lib/field/integer/integer.component.html +1 -1
- package/lib/field/integer/integer.component.ts +30 -160
- package/lib/field/list-view-action-buttons/list-view-action-buttons.component.html +1 -1
- package/lib/field/list-view-action-buttons/list-view-action-buttons.component.ts +3 -3
- package/lib/field/location/config-ext.json +8 -0
- package/lib/field/location/location.component.html +45 -0
- package/lib/field/location/location.component.scss +18 -0
- package/lib/field/location/location.component.spec.ts +22 -0
- package/lib/field/location/location.component.ts +280 -0
- package/lib/field/multiselect/multiselect.component.ts +47 -152
- package/lib/field/multiselect/utils.ts +55 -47
- package/lib/field/object-reference/object-reference.component.html +17 -0
- package/lib/field/object-reference/object-reference.component.scss +0 -0
- package/lib/field/object-reference/object-reference.component.spec.ts +22 -0
- package/lib/field/object-reference/object-reference.component.ts +237 -0
- package/lib/field/percentage/percentage.component.html +1 -1
- package/lib/field/percentage/percentage.component.ts +62 -170
- package/lib/field/phone/config-ext.json +1 -1
- package/lib/field/phone/phone.component.html +18 -17
- package/lib/field/phone/phone.component.scss +4 -0
- package/lib/field/phone/phone.component.ts +47 -156
- package/lib/field/radio-buttons/radio-buttons.component.html +17 -12
- package/lib/field/radio-buttons/radio-buttons.component.scss +4 -2
- package/lib/field/radio-buttons/radio-buttons.component.ts +37 -160
- package/lib/field/rich-text/rich-text.component.html +2 -0
- package/lib/field/rich-text/rich-text.component.scss +172 -0
- package/lib/field/rich-text/rich-text.component.ts +32 -93
- package/lib/field/scalar-list/scalar-list.component.ts +17 -73
- package/lib/field/selectable-card/selectable-card.component.html +70 -0
- package/lib/field/selectable-card/selectable-card.component.scss +11 -0
- package/lib/field/selectable-card/selectable-card.component.spec.ts +22 -0
- package/lib/field/selectable-card/selectable-card.component.ts +219 -0
- package/lib/field/semantic-link/semantic-link.component.html +4 -8
- package/lib/field/semantic-link/semantic-link.component.scss +0 -13
- package/lib/field/semantic-link/semantic-link.component.ts +165 -6
- package/lib/field/text/text.component.scss +0 -1
- package/lib/field/text/text.component.ts +6 -5
- package/lib/field/text-area/text-area.component.html +4 -2
- package/lib/field/text-area/text-area.component.ts +30 -155
- package/lib/field/text-content/text-content.component.ts +0 -1
- package/lib/field/text-input/text-input.component.html +1 -1
- package/lib/field/text-input/text-input.component.ts +28 -158
- package/lib/field/time/time.component.html +2 -2
- package/lib/field/time/time.component.ts +34 -154
- package/lib/field/url/url.component.html +1 -1
- package/lib/field/url/url.component.ts +28 -157
- package/lib/field/user-reference/user-reference.component.html +40 -38
- package/lib/field/user-reference/user-reference.component.scss +0 -1
- package/lib/field/user-reference/user-reference.component.ts +70 -9
- package/lib/infra/Containers/flow-container/flow-container.component.html +2 -2
- package/lib/infra/Containers/flow-container/flow-container.component.ts +24 -51
- package/lib/infra/Containers/flow-container/helpers.ts +2 -2
- package/lib/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +0 -1
- package/lib/infra/Containers/modal-view-container/modal-view-container.component.html +1 -11
- package/lib/infra/Containers/modal-view-container/modal-view-container.component.ts +5 -18
- package/lib/infra/Containers/view-container/helper.ts +35 -2
- package/lib/infra/Containers/view-container/view-container.component.ts +1 -2
- package/lib/infra/action-buttons/action-buttons.component.html +13 -8
- package/lib/infra/action-buttons/action-buttons.component.scss +23 -0
- package/lib/infra/action-buttons/action-buttons.component.ts +1 -3
- package/lib/infra/assignment/assignment.component.html +1 -1
- package/lib/infra/assignment/assignment.component.ts +100 -46
- package/lib/infra/assignment-card/assignment-card.component.html +2 -2
- package/lib/infra/assignment-card/assignment-card.component.scss +0 -4
- package/lib/infra/assignment-card/assignment-card.component.ts +21 -5
- package/lib/infra/dashboard-filter/dashboard-filter.component.ts +0 -1
- package/lib/infra/defer-load/defer-load.component.html +6 -2
- package/lib/infra/defer-load/defer-load.component.ts +25 -12
- package/lib/infra/error-boundary/error-boundary.component.ts +0 -1
- package/lib/infra/multi-step/multi-step.component.html +22 -38
- package/lib/infra/multi-step/multi-step.component.scss +14 -27
- package/lib/infra/multi-step/multi-step.component.ts +0 -1
- package/lib/infra/navbar/navbar.component.html +36 -41
- package/lib/infra/navbar/navbar.component.scss +22 -4
- package/lib/infra/navbar/navbar.component.ts +8 -6
- package/lib/infra/reference/reference.component.ts +82 -90
- package/lib/infra/region/region.component.ts +0 -1
- package/lib/infra/root-container/root-container.component.html +2 -15
- package/lib/infra/root-container/root-container.component.scss +0 -1
- package/lib/infra/root-container/root-container.component.ts +25 -32
- package/lib/infra/stages/stages.component.html +4 -3
- package/lib/infra/stages/stages.component.scss +12 -36
- package/lib/infra/stages/stages.component.ts +4 -3
- package/lib/infra/view/view.component.html +1 -1
- package/lib/infra/view/view.component.ts +3 -7
- package/lib/template/advanced-search/advanced-search.component.html +12 -0
- package/lib/template/advanced-search/advanced-search.component.scss +0 -0
- package/lib/template/advanced-search/advanced-search.component.spec.ts +0 -0
- package/lib/template/advanced-search/advanced-search.component.ts +112 -0
- package/lib/template/advanced-search/advanced-search.service.ts +27 -0
- package/lib/template/advanced-search/search-group/persist-utils.ts +56 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.html +32 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.scss +0 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.spec.ts +0 -0
- package/lib/template/advanced-search/search-groups/search-groups.component.ts +294 -0
- package/lib/template/advanced-search/search-groups/utils.ts +29 -0
- package/lib/template/app-shell/app-shell.component.html +4 -1
- package/lib/template/app-shell/app-shell.component.scss +0 -3
- package/lib/template/app-shell/app-shell.component.ts +46 -8
- package/lib/template/banner-page/banner-page.component.ts +0 -1
- package/lib/template/base/form-template-base.ts +6 -0
- package/lib/template/case-summary/case-summary.component.scss +0 -2
- package/lib/template/case-summary/case-summary.component.ts +6 -22
- package/lib/template/case-view/case-view.component.html +4 -4
- package/lib/template/case-view/case-view.component.scss +18 -10
- package/lib/template/case-view/case-view.component.ts +1 -11
- package/lib/template/confirmation/confirmation.component.html +2 -2
- package/lib/template/confirmation/confirmation.component.ts +0 -1
- package/lib/template/data-reference/data-reference.component.html +11 -8
- package/lib/template/data-reference/data-reference.component.ts +346 -113
- package/lib/template/data-reference/search-form/search-form.component.html +39 -0
- package/lib/template/data-reference/search-form/search-form.component.scss +11 -0
- package/lib/template/data-reference/search-form/search-form.component.spec.ts +0 -0
- package/lib/template/data-reference/search-form/search-form.component.ts +167 -0
- package/lib/template/data-reference/search-form/tabsData.ts +160 -0
- package/lib/template/data-reference/utils.ts +92 -0
- package/lib/template/default-form/default-form.component.ts +45 -5
- package/lib/template/default-page/default-page.component.html +34 -0
- package/lib/template/default-page/default-page.component.scss +31 -0
- package/lib/template/default-page/default-page.component.spec.ts +24 -0
- package/lib/template/default-page/default-page.component.ts +64 -0
- package/lib/template/details/details.component.ts +0 -1
- package/lib/template/details-narrow-wide/details-narrow-wide.component.ts +0 -1
- package/lib/template/details-one-column/details-one-column.component.ts +0 -1
- package/lib/template/details-sub-tabs/details-sub-tabs.component.ts +0 -1
- package/lib/template/details-three-column/details-three-column.component.ts +0 -1
- package/lib/template/details-two-column/details-two-column.component.ts +0 -1
- package/lib/template/details-wide-narrow/details-wide-narrow.component.ts +0 -1
- package/lib/template/dynamic-tabs/dynamic-tabs.component.ts +0 -1
- package/lib/template/field-group-list/field-group-list.component.scss +0 -1
- package/lib/template/field-group-list/field-group-list.component.ts +0 -1
- package/lib/template/field-group-template/field-group-template.component.html +7 -7
- package/lib/template/field-group-template/field-group-template.component.scss +8 -0
- package/lib/template/field-group-template/field-group-template.component.ts +64 -55
- package/lib/template/field-value-list/field-value-list.component.html +2 -2
- package/lib/template/field-value-list/field-value-list.component.scss +4 -0
- package/lib/template/field-value-list/field-value-list.component.ts +0 -1
- package/lib/template/inline-dashboard/inline-dashboard.component.ts +0 -1
- package/lib/template/inline-dashboard-page/inline-dashboard-page.component.ts +1 -2
- package/lib/template/list-page/list-page.component.ts +0 -1
- package/lib/template/list-view/list-view.component.html +170 -160
- package/lib/template/list-view/list-view.component.scss +25 -21
- package/lib/template/list-view/list-view.component.ts +208 -122
- package/lib/template/list-view/listViewHelpers.ts +3 -9
- package/lib/template/list-view/utils.ts +27 -7
- package/lib/template/multi-reference-readonly/multi-reference-readonly.component.ts +0 -1
- package/lib/template/narrow-wide-form/narrow-wide-form.component.ts +0 -1
- package/lib/template/object-page/object-page.component.html +1 -0
- package/lib/template/object-page/object-page.component.scss +0 -0
- package/lib/template/object-page/object-page.component.spec.ts +22 -0
- package/lib/template/object-page/object-page.component.ts +14 -0
- package/lib/template/one-column/one-column.component.ts +0 -1
- package/lib/template/one-column-page/one-column-page.component.ts +0 -1
- package/lib/template/one-column-tab/one-column-tab.component.scss +1 -1
- package/lib/template/one-column-tab/one-column-tab.component.ts +0 -1
- package/lib/template/page/page.component.ts +0 -1
- package/lib/template/promoted-filters/promoted-filters.component.ts +0 -1
- package/lib/template/repeating-structures/repeating-structures.component.ts +0 -2
- package/lib/template/self-service-case-view/self-service-case-view.component.html +78 -0
- package/lib/template/self-service-case-view/self-service-case-view.component.scss +132 -0
- package/lib/template/self-service-case-view/self-service-case-view.component.spec.ts +24 -0
- package/lib/template/self-service-case-view/self-service-case-view.component.ts +207 -0
- package/lib/template/simple-table/simple-table.component.ts +0 -2
- package/lib/template/simple-table-manual/helpers.ts +126 -10
- package/lib/template/simple-table-manual/simple-table-manual.component.html +27 -8
- package/lib/template/simple-table-manual/simple-table-manual.component.scss +15 -17
- package/lib/template/simple-table-manual/simple-table-manual.component.ts +103 -45
- package/lib/template/simple-table-select/simple-table-select.component.ts +0 -1
- package/lib/template/single-reference-readonly/single-reference-readonly.component.html +4 -1
- package/lib/template/single-reference-readonly/single-reference-readonly.component.scss +21 -0
- package/lib/template/single-reference-readonly/single-reference-readonly.component.ts +104 -4
- package/lib/template/sub-tabs/sub-tabs.component.ts +0 -1
- package/lib/template/three-column/three-column.component.ts +0 -1
- package/lib/template/three-column-page/three-column-page.component.ts +0 -1
- package/lib/template/two-column/two-column.component.ts +0 -1
- package/lib/template/two-column-page/two-column-page.component.ts +0 -1
- package/lib/template/two-column-tab/two-column-tab.component.ts +0 -1
- package/lib/template/utils.ts +58 -0
- package/lib/template/wide-narrow-form/wide-narrow-form.component.ts +0 -1
- package/lib/template/wide-narrow-page/wide-narrow-page.component.ts +0 -1
- package/lib/template/wss-nav-bar/wss-nav-bar.component.html +6 -5
- package/lib/template/wss-nav-bar/wss-nav-bar.component.scss +8 -17
- package/lib/template/wss-nav-bar/wss-nav-bar.component.ts +1 -9
- package/lib/widget/app-announcement/app-announcement.component.html +1 -2
- package/lib/widget/app-announcement/app-announcement.component.scss +2 -2
- package/lib/widget/app-announcement/app-announcement.component.ts +0 -1
- package/lib/widget/attachment/Attachment.types.ts +92 -0
- package/lib/widget/attachment/AttachmentUtils.ts +287 -0
- package/lib/widget/attachment/attachment.component.html +3 -3
- package/lib/widget/attachment/attachment.component.scss +9 -12
- package/lib/widget/attachment/attachment.component.ts +267 -254
- package/lib/widget/case-history/case-history.component.ts +0 -1
- package/lib/widget/feed-container/feed-container.component.scss +3 -9
- package/lib/widget/feed-container/feed-container.component.ts +2 -5
- package/lib/widget/file-utility/file-utility.component.html +3 -3
- package/lib/widget/file-utility/file-utility.component.scss +6 -17
- package/lib/widget/file-utility/file-utility.component.ts +24 -9
- package/lib/widget/list-utility/list-utility.component.scss +4 -5
- package/lib/widget/list-utility/list-utility.component.ts +0 -1
- package/lib/widget/quick-create/quick-create.component.ts +41 -23
- package/lib/widget/todo/todo.component.html +12 -10
- package/lib/widget/todo/todo.component.scss +20 -10
- package/lib/widget/todo/todo.component.ts +11 -7
- package/lib/widget/utility/utility.component.ts +0 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Component, OnInit, Input, ViewChild, forwardRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
3
|
import { CommonModule } from '@angular/common';
|
|
3
4
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
4
5
|
import { MatOptionModule } from '@angular/material/core';
|
|
@@ -23,8 +24,6 @@ import { formatters } from '@pega/angular-sdk-components';
|
|
|
23
24
|
|
|
24
25
|
import { init } from './listViewHelpers';
|
|
25
26
|
|
|
26
|
-
declare const window: any;
|
|
27
|
-
|
|
28
27
|
const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' };
|
|
29
28
|
|
|
30
29
|
interface ListViewProps {
|
|
@@ -44,6 +43,10 @@ interface ListViewProps {
|
|
|
44
43
|
value: any;
|
|
45
44
|
readonlyContextList: any;
|
|
46
45
|
label?: string;
|
|
46
|
+
displayAs?: string;
|
|
47
|
+
showRecords: boolean;
|
|
48
|
+
viewName?: string;
|
|
49
|
+
localeReference?: any;
|
|
47
50
|
}
|
|
48
51
|
|
|
49
52
|
export class Group {
|
|
@@ -60,7 +63,6 @@ export class Group {
|
|
|
60
63
|
selector: 'app-list-view',
|
|
61
64
|
templateUrl: './list-view.component.html',
|
|
62
65
|
styleUrls: ['./list-view.component.scss'],
|
|
63
|
-
standalone: true,
|
|
64
66
|
imports: [
|
|
65
67
|
CommonModule,
|
|
66
68
|
MatFormFieldModule,
|
|
@@ -91,6 +93,7 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
91
93
|
@Input() payload;
|
|
92
94
|
|
|
93
95
|
repeatList$: MatTableDataSource<any>;
|
|
96
|
+
selection = new SelectionModel<any>(true, []);
|
|
94
97
|
fields$: any[];
|
|
95
98
|
|
|
96
99
|
displayedColumns$ = Array<any>();
|
|
@@ -158,14 +161,16 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
158
161
|
query: any = null;
|
|
159
162
|
paging: any;
|
|
160
163
|
fieldDefs: any;
|
|
161
|
-
xRayApis = PCore.getDebugger().getXRayRuntime();
|
|
162
|
-
xRayUid = this.xRayApis.startXRay();
|
|
163
164
|
checkBoxValue: string;
|
|
164
165
|
label?: string = '';
|
|
165
|
-
|
|
166
|
+
uniqueId = crypto.randomUUID();
|
|
167
|
+
displayAs: any;
|
|
168
|
+
showRecords: any;
|
|
169
|
+
identifier: string;
|
|
170
|
+
promotedFiltersId: string;
|
|
166
171
|
constructor(
|
|
167
172
|
private psService: ProgressSpinnerService,
|
|
168
|
-
|
|
173
|
+
public utils: Utils
|
|
169
174
|
) {}
|
|
170
175
|
|
|
171
176
|
ngOnInit(): void {
|
|
@@ -174,12 +179,13 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
174
179
|
const defRowID = this.configProps$?.referenceType === 'Case' ? 'pyID' : 'pyGUID';
|
|
175
180
|
/** If compositeKeys is defined, use dynamic value, else fallback to pyID or pyGUID. */
|
|
176
181
|
this.compositeKeys = this.configProps$?.compositeKeys;
|
|
177
|
-
this.rowID = this.compositeKeys
|
|
182
|
+
this.rowID = this.payload?.compositeKeys?.length === 1 ? this.payload?.compositeKeys[0] : defRowID;
|
|
178
183
|
this.bShowSearch$ = this.utils.getBooleanValue(this.configProps$?.globalSearch ? this.configProps$.globalSearch : this.payload?.globalSearch);
|
|
179
184
|
this.bColumnReorder$ = this.utils.getBooleanValue(this.configProps$.reorderFields);
|
|
180
185
|
this.bGrouping$ = this.utils.getBooleanValue(this.configProps$.grouping);
|
|
181
186
|
this.showDynamicFields = this.configProps$?.showDynamicFields;
|
|
182
|
-
|
|
187
|
+
this.displayAs = this.configProps$.displayAs;
|
|
188
|
+
this.showRecords = this.configProps$.showRecords;
|
|
183
189
|
this.menuSvgIcon$ = this.utils.getImageSrc('more', this.utils.getSDKStaticContentUrl());
|
|
184
190
|
this.arrowDownSvgIcon$ = this.utils.getImageSrc('arrow-down', this.utils.getSDKStaticContentUrl());
|
|
185
191
|
this.arrowUpSvgIcon$ = this.utils.getImageSrc('arrow-up', this.utils.getSDKStaticContentUrl());
|
|
@@ -208,6 +214,7 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
208
214
|
this.label = title;
|
|
209
215
|
|
|
210
216
|
this.searchIcon$ = this.utils.getImageSrc('search', this.utils.getSDKStaticContentUrl());
|
|
217
|
+
this.promotedFiltersId = `promoted-filters-queryable-${this.uniqueId}`;
|
|
211
218
|
setTimeout(() => {
|
|
212
219
|
PCore.getPubSubUtils().subscribe(
|
|
213
220
|
PCore.getConstants().PUB_SUB_EVENTS.EVENT_DASHBOARD_FILTER_CHANGE,
|
|
@@ -228,6 +235,15 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
228
235
|
false,
|
|
229
236
|
this.pConn$.getContextName()
|
|
230
237
|
);
|
|
238
|
+
PCore.getPubSubUtils().subscribe(
|
|
239
|
+
PCore.getEvents().getTransientEvent().UPDATE_PROMOTED_FILTERS,
|
|
240
|
+
data => {
|
|
241
|
+
this.showRecords = data.showRecords;
|
|
242
|
+
const filterData = this.prepareFilters(data);
|
|
243
|
+
this.processFilterChange(filterData);
|
|
244
|
+
},
|
|
245
|
+
this.promotedFiltersId
|
|
246
|
+
);
|
|
231
247
|
}, 0);
|
|
232
248
|
if (this.configProps$) {
|
|
233
249
|
if (!this.payload) {
|
|
@@ -240,7 +256,6 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
240
256
|
listContext: this.listContext,
|
|
241
257
|
ref: this.ref,
|
|
242
258
|
showDynamicFields: this.showDynamicFields,
|
|
243
|
-
xRayUid: this.xRayUid,
|
|
244
259
|
cosmosTableRef: this.cosmosTableRef,
|
|
245
260
|
selectionMode: this.selectionMode
|
|
246
261
|
}).then(response => {
|
|
@@ -248,6 +263,29 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
248
263
|
this.getListData();
|
|
249
264
|
});
|
|
250
265
|
}
|
|
266
|
+
this.clearSelectionsAndUpdateTable(this.pConn$, this.uniqueId, this.configProps$?.viewName);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
clearSelectionsAndUpdateTable(getPConnect: any, uniqueId: string, viewName): void {
|
|
270
|
+
const clearSelectionsAndRefreshList = ({ viewName: name, clearSelections }: any) => {
|
|
271
|
+
if (name === viewName) {
|
|
272
|
+
const { selectionMode } = getPConnect.getRawConfigProps();
|
|
273
|
+
if (!selectionMode) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
if (clearSelections) {
|
|
277
|
+
if (selectionMode === 'single') {
|
|
278
|
+
getPConnect.getListActions().setSelectedRows({});
|
|
279
|
+
} else {
|
|
280
|
+
getPConnect.getListActions().clearSelectedRows();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
this.identifier = `clear-and-update-advanced-search-selections-${uniqueId}`;
|
|
287
|
+
|
|
288
|
+
PCore.getPubSubUtils().subscribe('update-advanced-search-selections', clearSelectionsAndRefreshList, this.identifier);
|
|
251
289
|
}
|
|
252
290
|
|
|
253
291
|
getFieldFromFilter(filter, dateRange = false) {
|
|
@@ -262,82 +300,22 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
262
300
|
|
|
263
301
|
// Will be triggered when EVENT_DASHBOARD_FILTER_CHANGE fires
|
|
264
302
|
processFilterChange(data) {
|
|
265
|
-
|
|
266
|
-
let dashboardFilterPayload: any = {
|
|
267
|
-
query: {
|
|
268
|
-
filter: {},
|
|
269
|
-
select: []
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
|
|
273
|
-
this.filters[filterId] = filterExpression;
|
|
274
|
-
let isDateRange = !!data.filterExpression?.AND;
|
|
275
|
-
// Will be AND by default but making it dynamic in case we support dynamic relational ops in future
|
|
276
|
-
const relationalOp = 'AND';
|
|
277
|
-
|
|
278
|
-
let field = this.getFieldFromFilter(filterExpression, isDateRange);
|
|
279
|
-
const selectParam: any[] = [];
|
|
280
|
-
// Constructing the select parameters list (will be sent in dashboardFilterPayload)
|
|
281
|
-
this.displayedColumns$?.forEach(col => {
|
|
282
|
-
selectParam.push({
|
|
283
|
-
field: col
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
// Checking if the triggered filter is applicable for this list
|
|
288
|
-
if (data.filterExpression !== null && !(this.displayedColumns$?.length && this.displayedColumns$?.includes(field))) {
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
// This is a flag which will be used to reset dashboardFilterPayload in case we don't find any valid filters
|
|
292
|
-
let validFilter = false;
|
|
293
|
-
|
|
294
|
-
let index = 1;
|
|
295
|
-
// Iterating over the current filters list to create filter data which will be POSTed
|
|
296
|
-
const filterKeys: any[] = Object.keys(this.filters);
|
|
297
|
-
const filterValues: any[] = Object.values(this.filters);
|
|
298
|
-
for (let filterIndex = 0; filterIndex < filterKeys.length; filterIndex++) {
|
|
299
|
-
const filter = filterValues[filterIndex];
|
|
300
|
-
// If the filter is null then we can skip this iteration
|
|
301
|
-
if (filter === null) {
|
|
302
|
-
// eslint-disable-next-line no-continue
|
|
303
|
-
continue;
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
// Checking if the filter is of type- Date Range
|
|
307
|
-
isDateRange = !!filter?.AND;
|
|
308
|
-
field = this.getFieldFromFilter(filter, isDateRange);
|
|
303
|
+
this.updateFiltersFromData(data);
|
|
309
304
|
|
|
310
|
-
|
|
311
|
-
// eslint-disable-next-line no-continue
|
|
312
|
-
continue;
|
|
313
|
-
}
|
|
314
|
-
// If we reach here that implies we've at least one valid filter, hence setting the flag
|
|
315
|
-
validFilter = true;
|
|
316
|
-
/** Below are the 2 cases for- Text & Date-Range filter types where we'll construct filter data which will be sent in the dashboardFilterPayload
|
|
317
|
-
* In Constellation DX Components, through Repeating Structures they might be using several APIs to do it. We're doing it here
|
|
318
|
-
*/
|
|
319
|
-
if (isDateRange) {
|
|
320
|
-
dashboardFilterPayload = this.filterBasedOnDateRange(dashboardFilterPayload, filter, relationalOp, selectParam, index);
|
|
321
|
-
} else {
|
|
322
|
-
dashboardFilterPayload.query.filter.filterConditions = {
|
|
323
|
-
...dashboardFilterPayload.query.filter.filterConditions,
|
|
324
|
-
[`T${index++}`]: { ...filter.condition, ignoreCase: true }
|
|
325
|
-
};
|
|
305
|
+
const selectParam = this.displayedColumns$?.map(col => ({ field: col })) || [];
|
|
326
306
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
}
|
|
307
|
+
if (this.displayAs !== 'advancedSearch') {
|
|
308
|
+
const { filterExpression } = data;
|
|
309
|
+
const isDateRange = !!filterExpression?.AND;
|
|
310
|
+
const field = this.getFieldFromFilter(filterExpression, isDateRange);
|
|
332
311
|
|
|
333
|
-
|
|
312
|
+
if (filterExpression !== null && !this.displayedColumns$?.includes(field)) {
|
|
313
|
+
return;
|
|
334
314
|
}
|
|
335
315
|
}
|
|
336
316
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
dashboardFilterPayload = undefined;
|
|
340
|
-
}
|
|
317
|
+
const dashboardFilterPayload = this.buildFilterPayload(selectParam);
|
|
318
|
+
|
|
341
319
|
this.filterPayload = dashboardFilterPayload;
|
|
342
320
|
this.getListData();
|
|
343
321
|
}
|
|
@@ -372,10 +350,22 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
372
350
|
return PCore.getAnalyticsUtils().getDataViewMetadata(refList, this.showDynamicFields);
|
|
373
351
|
}
|
|
374
352
|
|
|
353
|
+
getValue(col) {
|
|
354
|
+
return this.fieldDefs.find(f => f.name === col)?.label;
|
|
355
|
+
}
|
|
356
|
+
|
|
375
357
|
getListData() {
|
|
358
|
+
this.preparePayload();
|
|
376
359
|
const componentConfig = this.pConn$.getComponentConfig();
|
|
377
|
-
|
|
378
|
-
|
|
360
|
+
const columnFields = componentConfig.presets[0].children[0].children;
|
|
361
|
+
const columns = this.getHeaderCells(columnFields, this.fieldDefs);
|
|
362
|
+
this.fields$ = this.configProps$.presets[0].children[0].children;
|
|
363
|
+
this.displayedColumns$ = columns.map(col => {
|
|
364
|
+
return col.id;
|
|
365
|
+
});
|
|
366
|
+
if (this.displayAs === 'advancedSearch' && !this.showRecords) {
|
|
367
|
+
Promise.resolve({ data: null });
|
|
368
|
+
} else if (this.configProps$) {
|
|
379
369
|
const refList = this.configProps$.referenceList;
|
|
380
370
|
const fieldsMetaDataPromise = this.getFieldsMetadata(refList);
|
|
381
371
|
// returns a promise
|
|
@@ -401,17 +391,9 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
401
391
|
const fieldsMetaData = results[0];
|
|
402
392
|
const workListData = results[1];
|
|
403
393
|
|
|
404
|
-
this.fields$ = this.configProps$.presets[0].children[0].children;
|
|
405
|
-
// this is an unresovled version of this.fields$, need unresolved, so can get the property reference
|
|
406
|
-
const columnFields = componentConfig.presets[0].children[0].children;
|
|
407
|
-
|
|
408
394
|
const tableDataResults = !this.bInForm$ ? workListData.data.data : workListData.data;
|
|
409
395
|
|
|
410
|
-
const columns = this.getHeaderCells(columnFields, this.fieldDefs);
|
|
411
396
|
this.fields$ = this.updateFields(this.fields$, fieldsMetaData.data.fields, columns);
|
|
412
|
-
this.displayedColumns$ = columns.map(col => {
|
|
413
|
-
return col.id;
|
|
414
|
-
});
|
|
415
397
|
this.response = tableDataResults;
|
|
416
398
|
this.updatedRefList = this.updateData(tableDataResults, this.fields$);
|
|
417
399
|
if (this.selectionMode === SELECTION_MODE.SINGLE && this.updatedRefList?.length > 0) {
|
|
@@ -423,6 +405,14 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
423
405
|
}
|
|
424
406
|
|
|
425
407
|
this.repeatList$ = new MatTableDataSource(this.updatedRefList);
|
|
408
|
+
|
|
409
|
+
if (this.configProps$?.readonlyContextList?.length > 0) {
|
|
410
|
+
const readonlyIds = new Set(this.configProps$.readonlyContextList.map(element => element[this.rowID]));
|
|
411
|
+
const rowsToSelect = this.repeatList$.data.filter(row => readonlyIds.has(row[this.rowID]));
|
|
412
|
+
if (rowsToSelect.length > 0) {
|
|
413
|
+
this.selection.select(...rowsToSelect);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
426
416
|
this.repeatList$.filterPredicate = this.customFilterPredicate.bind(this);
|
|
427
417
|
|
|
428
418
|
// keeping an original copy to get back after possible sorts, filters and groupBy
|
|
@@ -439,6 +429,33 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
439
429
|
}
|
|
440
430
|
}
|
|
441
431
|
|
|
432
|
+
prepareFilters(data) {
|
|
433
|
+
return Object.entries(data.payload).reduce((acc, [field, value]) => {
|
|
434
|
+
if (value) {
|
|
435
|
+
let comparator = 'EQ';
|
|
436
|
+
const filterRecord = this.listContext.meta.fieldDefs.filter(item => item.id === field);
|
|
437
|
+
if (filterRecord?.[0]?.meta.type === 'TextInput') {
|
|
438
|
+
comparator = 'CONTAINS';
|
|
439
|
+
}
|
|
440
|
+
acc[field] = {
|
|
441
|
+
filterExpression: {
|
|
442
|
+
condition: {
|
|
443
|
+
lhs: {
|
|
444
|
+
field
|
|
445
|
+
},
|
|
446
|
+
comparator,
|
|
447
|
+
rhs: {
|
|
448
|
+
value
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
},
|
|
452
|
+
filterId: field
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
return acc;
|
|
456
|
+
}, {});
|
|
457
|
+
}
|
|
458
|
+
|
|
442
459
|
preparePayload() {
|
|
443
460
|
const { fieldDefs, itemKey, patchQueryFields } = this.listContext.meta;
|
|
444
461
|
this.fieldDefs = fieldDefs;
|
|
@@ -480,6 +497,8 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
480
497
|
`dashboard-component-${'id'}`,
|
|
481
498
|
this.pConn$.getContextName()
|
|
482
499
|
);
|
|
500
|
+
PCore.getPubSubUtils().unsubscribe('update-advanced-search-selections', this.identifier);
|
|
501
|
+
PCore.getPubSubUtils().unsubscribe(PCore.getEvents().getTransientEvent().UPDATE_PROMOTED_FILTERS, this.promotedFiltersId);
|
|
483
502
|
}
|
|
484
503
|
|
|
485
504
|
// ngAfterViewInit() {
|
|
@@ -498,6 +517,7 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
498
517
|
const arReturn = arFields;
|
|
499
518
|
arReturn.forEach((field, i) => {
|
|
500
519
|
field.config = { ...field.config, ...fields[i], name: fields[i].id };
|
|
520
|
+
field.config.label = PCore.getLocaleUtils().getLocaleValue(field.config.label, this.configProps$.localeReference);
|
|
501
521
|
});
|
|
502
522
|
return arReturn;
|
|
503
523
|
}
|
|
@@ -523,13 +543,6 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
523
543
|
}
|
|
524
544
|
}
|
|
525
545
|
|
|
526
|
-
isChecked(rowIn): any {
|
|
527
|
-
const initialVal = false;
|
|
528
|
-
return this.configProps$?.readonlyContextList?.reduce((acc, currRow) => {
|
|
529
|
-
return acc || rowIn[this.rowID] === currRow[this.rowID];
|
|
530
|
-
}, initialVal);
|
|
531
|
-
}
|
|
532
|
-
|
|
533
546
|
fieldOnChange(row) {
|
|
534
547
|
const value = row[this.rowID];
|
|
535
548
|
const reqObj = {};
|
|
@@ -546,32 +559,31 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
546
559
|
this.pConn$?.getListActions?.()?.setSelectedRows([reqObj]);
|
|
547
560
|
}
|
|
548
561
|
|
|
549
|
-
onCheckboxClick(row
|
|
550
|
-
|
|
551
|
-
const
|
|
552
|
-
|
|
553
|
-
if (this.compositeKeys?.length > 1) {
|
|
554
|
-
const index = this.response.findIndex(element => element[this.rowID] === value);
|
|
555
|
-
const selectedRow = this.response[index];
|
|
556
|
-
this.compositeKeys.forEach(element => {
|
|
557
|
-
reqObj[element] = selectedRow[element];
|
|
558
|
-
});
|
|
559
|
-
reqObj.$selected = checked;
|
|
560
|
-
} else {
|
|
561
|
-
reqObj[this.rowID] = value;
|
|
562
|
-
reqObj.$selected = checked;
|
|
563
|
-
}
|
|
564
|
-
this.pConn$?.getListActions()?.setSelectedRows([reqObj]);
|
|
562
|
+
onCheckboxClick(row) {
|
|
563
|
+
this.selection.toggle(row);
|
|
564
|
+
const requiredValue = this.getSelectedValue(row);
|
|
565
|
+
this.pConn$?.getListActions()?.setSelectedRows([requiredValue]);
|
|
565
566
|
}
|
|
566
567
|
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
568
|
+
isAllSelected() {
|
|
569
|
+
const numSelected = this.selection.selected.length;
|
|
570
|
+
const numRows = this.repeatList$.data.length;
|
|
571
|
+
return numSelected === numRows;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
toggleAllRows() {
|
|
575
|
+
if (this.isAllSelected()) {
|
|
576
|
+
this.selection.clear();
|
|
577
|
+
this.pConn$?.getListActions()?.clearSelectedRows();
|
|
578
|
+
return;
|
|
579
|
+
}
|
|
580
|
+
if (this.selection.hasValue() && !this.isAllSelected()) {
|
|
581
|
+
this.pConn$?.getListActions()?.clearSelectedRows();
|
|
582
|
+
}
|
|
583
|
+
this.selection.select(...this.repeatList$.data);
|
|
584
|
+
const requiredValues = this.repeatList$.data.map(row => this.getSelectedValue(row));
|
|
585
|
+
this.pConn$?.getListActions()?.setSelectedRows(requiredValues);
|
|
586
|
+
}
|
|
575
587
|
|
|
576
588
|
_getIconStyle(level): string {
|
|
577
589
|
let sReturn = '';
|
|
@@ -1159,7 +1171,7 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
1159
1171
|
const seen = {};
|
|
1160
1172
|
return a.filter(item => {
|
|
1161
1173
|
const k = key(item);
|
|
1162
|
-
// eslint-disable-next-line no-
|
|
1174
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
1163
1175
|
return seen.hasOwnProperty(k) ? false : (seen[k] = true);
|
|
1164
1176
|
});
|
|
1165
1177
|
}
|
|
@@ -1433,4 +1445,78 @@ export class ListViewComponent implements OnInit, OnDestroy {
|
|
|
1433
1445
|
|
|
1434
1446
|
return select;
|
|
1435
1447
|
}
|
|
1448
|
+
|
|
1449
|
+
private getSelectedValue(row) {
|
|
1450
|
+
const value = row[this.rowID];
|
|
1451
|
+
const checked = this.selection.isSelected(row);
|
|
1452
|
+
const reqObj: any = {};
|
|
1453
|
+
if (this.compositeKeys?.length > 1) {
|
|
1454
|
+
const index = this.response.findIndex(element => element[this.rowID] === value);
|
|
1455
|
+
const selectedRow = this.response[index];
|
|
1456
|
+
this.compositeKeys.forEach(element => {
|
|
1457
|
+
reqObj[element] = selectedRow[element];
|
|
1458
|
+
});
|
|
1459
|
+
reqObj.$selected = checked;
|
|
1460
|
+
} else {
|
|
1461
|
+
reqObj[this.rowID] = value;
|
|
1462
|
+
reqObj.$selected = checked;
|
|
1463
|
+
}
|
|
1464
|
+
return reqObj;
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
private updateFiltersFromData(data) {
|
|
1468
|
+
if (this.displayAs === 'advancedSearch') {
|
|
1469
|
+
this.filters = {};
|
|
1470
|
+
Object.values(data).forEach((value: any) => {
|
|
1471
|
+
this.filters[value.filterId] = value.filterExpression;
|
|
1472
|
+
});
|
|
1473
|
+
} else {
|
|
1474
|
+
const { filterId, filterExpression } = data;
|
|
1475
|
+
this.filters[filterId] = filterExpression;
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
private buildFilterPayload(selectParam: any[]) {
|
|
1480
|
+
const filterConditions = {};
|
|
1481
|
+
let logic = '';
|
|
1482
|
+
let index = 1;
|
|
1483
|
+
const relationalOp = 'AND';
|
|
1484
|
+
|
|
1485
|
+
for (const currentFilter of Object.values(this.filters)) {
|
|
1486
|
+
const filter: any = currentFilter;
|
|
1487
|
+
if (!filter) continue;
|
|
1488
|
+
|
|
1489
|
+
const isDateRange = !!filter.AND;
|
|
1490
|
+
const field = this.getFieldFromFilter(filter, isDateRange);
|
|
1491
|
+
|
|
1492
|
+
if (!this.displayedColumns$?.includes(field)) continue;
|
|
1493
|
+
|
|
1494
|
+
if (logic) {
|
|
1495
|
+
logic += ` ${relationalOp} `;
|
|
1496
|
+
}
|
|
1497
|
+
|
|
1498
|
+
if (isDateRange) {
|
|
1499
|
+
const dateRelationalOp = filter.AND ? 'AND' : 'OR';
|
|
1500
|
+
filterConditions[`T${index}`] = { ...filter[relationalOp][0].condition };
|
|
1501
|
+
filterConditions[`T${index + 1}`] = { ...filter[relationalOp][1].condition };
|
|
1502
|
+
logic += `(T${index} ${dateRelationalOp} T${index + 1})`;
|
|
1503
|
+
index += 2;
|
|
1504
|
+
} else {
|
|
1505
|
+
filterConditions[`T${index}`] = { ...filter.condition, ...(filter.condition.comparator === 'CONTAINS' && { ignoreCase: true }) };
|
|
1506
|
+
logic += `T${index}`;
|
|
1507
|
+
index++;
|
|
1508
|
+
}
|
|
1509
|
+
}
|
|
1510
|
+
|
|
1511
|
+
if (!logic) {
|
|
1512
|
+
return undefined;
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
return {
|
|
1516
|
+
query: {
|
|
1517
|
+
filter: { filterConditions, logic },
|
|
1518
|
+
select: selectParam
|
|
1519
|
+
}
|
|
1520
|
+
};
|
|
1521
|
+
}
|
|
1436
1522
|
}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { getContext, readContextResponse } from './utils';
|
|
2
2
|
|
|
3
|
-
// Remove this and use "real" PCore type once .d.ts is fixed (currently shows 1 error)
|
|
4
|
-
declare const PCore: any;
|
|
5
|
-
|
|
6
3
|
export function init(props) {
|
|
7
4
|
const {
|
|
8
5
|
referenceList,
|
|
@@ -15,7 +12,6 @@ export function init(props) {
|
|
|
15
12
|
ref,
|
|
16
13
|
showDynamicFields,
|
|
17
14
|
isDataObject,
|
|
18
|
-
xRayUid,
|
|
19
15
|
cosmosTableRef
|
|
20
16
|
} = props;
|
|
21
17
|
let { editing, selectionMode } = props;
|
|
@@ -25,9 +21,9 @@ export function init(props) {
|
|
|
25
21
|
let selectionCountThreshold;
|
|
26
22
|
|
|
27
23
|
// promise to fetch metadata
|
|
28
|
-
const metaDataPromise = PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, showDynamicFields);
|
|
24
|
+
const metaDataPromise = PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, showDynamicFields, null);
|
|
29
25
|
|
|
30
|
-
const promisesArray = [metaDataPromise];
|
|
26
|
+
const promisesArray: any = [metaDataPromise];
|
|
31
27
|
|
|
32
28
|
// promise to fetch report configured columns
|
|
33
29
|
const reportColumnsPromise = PCore.getAnalyticsUtils()
|
|
@@ -70,8 +66,7 @@ export function init(props) {
|
|
|
70
66
|
pConn$,
|
|
71
67
|
compositeKeys,
|
|
72
68
|
isSearchable,
|
|
73
|
-
isCacheable: true
|
|
74
|
-
xRayUid
|
|
69
|
+
isCacheable: true
|
|
75
70
|
}).then(async context => {
|
|
76
71
|
return readContextResponse(context, {
|
|
77
72
|
...props,
|
|
@@ -79,7 +74,6 @@ export function init(props) {
|
|
|
79
74
|
selectionCountThreshold,
|
|
80
75
|
ref,
|
|
81
76
|
selectionMode,
|
|
82
|
-
xRayUid,
|
|
83
77
|
cosmosTableRef
|
|
84
78
|
});
|
|
85
79
|
});
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { getDefaultViewMeta } from './DefaultViewMeta';
|
|
2
2
|
|
|
3
|
-
// Remove this and use "real" PCore type once .d.ts is fixed (currently shows 5 errors)
|
|
4
|
-
declare const PCore: any;
|
|
5
|
-
|
|
6
3
|
const USER_REFERENCE = 'UserReference';
|
|
7
4
|
const PAGE = '!P!';
|
|
8
5
|
const PAGELIST = '!PL!';
|
|
@@ -121,7 +118,7 @@ export const isPageListInPath = (propertyName, currentClassID) => {
|
|
|
121
118
|
return false;
|
|
122
119
|
}
|
|
123
120
|
const [first, ...rest] = propertyName.split('.');
|
|
124
|
-
const metadata = PCore.getMetadataUtils().getPropertyMetadata(first, currentClassID);
|
|
121
|
+
const metadata: any = PCore.getMetadataUtils().getPropertyMetadata(first, currentClassID);
|
|
125
122
|
if (metadata?.type === 'Page List') {
|
|
126
123
|
return true;
|
|
127
124
|
}
|
|
@@ -205,7 +202,7 @@ export function getConfigEmbeddedFieldsMeta(configFields, classID) {
|
|
|
205
202
|
if (value.includes('[')) {
|
|
206
203
|
value = value.substring(0, value.indexOf('[')) + value.substring(value.indexOf(']') + 1);
|
|
207
204
|
}
|
|
208
|
-
const meta = PCore.getMetadataUtils().getEmbeddedPropertyMetadata(value, classID);
|
|
205
|
+
const meta: any = PCore.getMetadataUtils().getEmbeddedPropertyMetadata(value, classID);
|
|
209
206
|
meta.fieldID = field;
|
|
210
207
|
configEmbeddedFieldsMeta.push(meta);
|
|
211
208
|
}
|
|
@@ -553,6 +550,27 @@ function populateRenderingOptions(name, config, field) {
|
|
|
553
550
|
config.cellRenderer = formatConstants.Integer;
|
|
554
551
|
}
|
|
555
552
|
}
|
|
553
|
+
function isFLProperty(label) {
|
|
554
|
+
return label?.startsWith('@FL');
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
function getFieldLabel(fieldConfig) {
|
|
558
|
+
const { label, classID, caption } = fieldConfig;
|
|
559
|
+
let fieldLabel = (label ?? caption)?.substring(4);
|
|
560
|
+
const labelSplit = fieldLabel?.split('.');
|
|
561
|
+
const propertyName = labelSplit?.pop();
|
|
562
|
+
const fieldMetaData: any = PCore.getMetadataUtils().getPropertyMetadata(propertyName, classID) ?? {};
|
|
563
|
+
fieldLabel = fieldMetaData.label ?? fieldMetaData.caption ?? propertyName;
|
|
564
|
+
|
|
565
|
+
const definedOnClassID = fieldMetaData.definedOnClassID;
|
|
566
|
+
const localeValue = PCore.getLocaleUtils().getLocaleValue(
|
|
567
|
+
fieldLabel,
|
|
568
|
+
`${definedOnClassID ?? fieldMetaData.classID ?? classID}.${propertyName}`,
|
|
569
|
+
PCore.getLocaleUtils().FIELD_LABELS_BUNDLE_KEY,
|
|
570
|
+
null
|
|
571
|
+
);
|
|
572
|
+
return localeValue || fieldLabel;
|
|
573
|
+
}
|
|
556
574
|
export function initializeColumns(fields: any[] = [], getMappedProperty: any = null) {
|
|
557
575
|
return fields.map((field, originalColIndex) => {
|
|
558
576
|
let name = field.config.value;
|
|
@@ -565,7 +583,9 @@ export function initializeColumns(fields: any[] = [], getMappedProperty: any = n
|
|
|
565
583
|
|
|
566
584
|
let label = field.config.label || field.config.caption;
|
|
567
585
|
const { show = true, displayAs } = field.config;
|
|
568
|
-
if (label
|
|
586
|
+
if (isFLProperty(label)) {
|
|
587
|
+
label = getFieldLabel(field.config);
|
|
588
|
+
} else if (label.startsWith('@')) {
|
|
569
589
|
label = label.substring(3);
|
|
570
590
|
}
|
|
571
591
|
|
|
@@ -656,7 +676,7 @@ export const readContextResponse = async (context, params) => {
|
|
|
656
676
|
const { pConn$, apiContext, children, showDynamicFields, referenceList, isDataObject } = params;
|
|
657
677
|
// let { listContext } = params;
|
|
658
678
|
const { promisesResponseArray, apiContext: otherContext } = context;
|
|
659
|
-
|
|
679
|
+
|
|
660
680
|
const listOfComponents: any[] = [];
|
|
661
681
|
const {
|
|
662
682
|
data: { fields: metaFields, classID, isQueryable }
|
|
@@ -12,7 +12,6 @@ interface MultiReferenceReadOnlyProps {
|
|
|
12
12
|
selector: 'app-multi-reference-readonly',
|
|
13
13
|
templateUrl: './multi-reference-readonly.component.html',
|
|
14
14
|
styleUrls: ['./multi-reference-readonly.component.scss'],
|
|
15
|
-
standalone: true,
|
|
16
15
|
imports: [forwardRef(() => ComponentMapperComponent)]
|
|
17
16
|
})
|
|
18
17
|
export class MultiReferenceReadonlyComponent implements OnInit, OnDestroy {
|
|
@@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
|
7
7
|
selector: 'app-narrow-wide-form',
|
|
8
8
|
templateUrl: './narrow-wide-form.component.html',
|
|
9
9
|
styleUrls: ['./narrow-wide-form.component.scss'],
|
|
10
|
-
standalone: true,
|
|
11
10
|
imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
|
|
12
11
|
})
|
|
13
12
|
export class NarrowWideFormComponent implements OnInit, OnChanges {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<component-mapper name="CaseView" [props]="{ pConn$, formGroup$ }"></component-mapper>
|
|
File without changes
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
|
2
|
+
|
|
3
|
+
import { ObjectPageComponent } from './object-page.component';
|
|
4
|
+
|
|
5
|
+
describe('ObjectPageComponent', () => {
|
|
6
|
+
let component: ObjectPageComponent;
|
|
7
|
+
let fixture: ComponentFixture<ObjectPageComponent>;
|
|
8
|
+
|
|
9
|
+
beforeEach(async () => {
|
|
10
|
+
await TestBed.configureTestingModule({
|
|
11
|
+
imports: [ObjectPageComponent]
|
|
12
|
+
}).compileComponents();
|
|
13
|
+
|
|
14
|
+
fixture = TestBed.createComponent(ObjectPageComponent);
|
|
15
|
+
component = fixture.componentInstance;
|
|
16
|
+
fixture.detectChanges();
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should create', () => {
|
|
20
|
+
expect(component).toBeTruthy();
|
|
21
|
+
});
|
|
22
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Component, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { FormGroup } from '@angular/forms';
|
|
3
|
+
import { ComponentMapperComponent } from '@pega/angular-sdk-components';
|
|
4
|
+
|
|
5
|
+
@Component({
|
|
6
|
+
selector: 'lib-object-page',
|
|
7
|
+
imports: [forwardRef(() => ComponentMapperComponent)],
|
|
8
|
+
templateUrl: './object-page.component.html',
|
|
9
|
+
styleUrl: './object-page.component.scss'
|
|
10
|
+
})
|
|
11
|
+
export class ObjectPageComponent {
|
|
12
|
+
@Input() pConn$: typeof PConnect;
|
|
13
|
+
@Input() formGroup$: FormGroup;
|
|
14
|
+
}
|
|
@@ -8,7 +8,6 @@ import { FormTemplateBase } from '@pega/angular-sdk-components';
|
|
|
8
8
|
selector: 'app-one-column',
|
|
9
9
|
templateUrl: './one-column.component.html',
|
|
10
10
|
styleUrls: ['./one-column.component.scss'],
|
|
11
|
-
standalone: true,
|
|
12
11
|
imports: [CommonModule, forwardRef(() => ComponentMapperComponent)]
|
|
13
12
|
})
|
|
14
13
|
export class OneColumnComponent extends FormTemplateBase implements OnInit, OnChanges {
|