@sapui5/sap.fe.core 1.100.0 → 1.102.0
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/package.json +4 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AppComponent.js +23 -30
- package/src/sap/fe/core/AppComponent.ts +35 -40
- package/src/sap/fe/core/AppStateHandler.js +8 -8
- package/src/sap/fe/core/AppStateHandler.ts +11 -11
- package/src/sap/fe/core/BaseController.js +9 -9
- package/src/sap/fe/core/BaseController.ts +3 -4
- package/src/sap/fe/core/CommonUtils.js +122 -101
- package/src/sap/fe/core/CommonUtils.ts +239 -193
- package/src/sap/fe/core/ExtensionAPI.js +12 -13
- package/src/sap/fe/core/ExtensionAPI.ts +21 -31
- package/src/sap/fe/core/PageController.js +19 -13
- package/src/sap/fe/core/PageController.ts +40 -34
- package/src/sap/fe/core/TemplateComponent.js +198 -123
- package/src/sap/fe/core/TemplateComponent.ts +109 -121
- package/src/sap/fe/core/TemplateModel.js +7 -9
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
- package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
- package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
- package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
- package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
- package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +34 -16
- package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
- package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
- package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
- package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/Any.js +28 -0
- package/src/sap/fe/core/controls/Any.ts +30 -0
- package/src/sap/fe/core/controls/CommandExecution.js +50 -16
- package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
- package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
- package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
- package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
- package/src/sap/fe/core/controls/FileWrapper.js +360 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
- package/src/sap/fe/core/controls/FilterBar.js +154 -119
- package/src/sap/fe/core/controls/FilterBar.ts +128 -123
- package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
- package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
- package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
- package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
- package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
- package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
- package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
- package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
- package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
- package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
- package/src/sap/fe/core/fpm/Component.js +46 -17
- package/src/sap/fe/core/fpm/Component.ts +11 -16
- package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
- package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
- package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
- package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
- package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
- package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
- package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
- package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
- package/src/sap/fe/core/library.js +13 -5
- package/src/sap/fe/core/library.ts +26 -17
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
- package/src/sap/fe/core/messagebundle.properties +135 -180
- package/src/sap/fe/core/messagebundle_ar.properties +31 -64
- package/src/sap/fe/core/messagebundle_bg.properties +31 -64
- package/src/sap/fe/core/messagebundle_ca.properties +31 -64
- package/src/sap/fe/core/messagebundle_cs.properties +31 -64
- package/src/sap/fe/core/messagebundle_cy.properties +32 -65
- package/src/sap/fe/core/messagebundle_da.properties +31 -64
- package/src/sap/fe/core/messagebundle_de.properties +29 -62
- package/src/sap/fe/core/messagebundle_el.properties +32 -65
- package/src/sap/fe/core/messagebundle_en.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
- package/src/sap/fe/core/messagebundle_es.properties +31 -64
- package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
- package/src/sap/fe/core/messagebundle_et.properties +31 -64
- package/src/sap/fe/core/messagebundle_fi.properties +29 -62
- package/src/sap/fe/core/messagebundle_fr.properties +36 -69
- package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
- package/src/sap/fe/core/messagebundle_hi.properties +29 -62
- package/src/sap/fe/core/messagebundle_hr.properties +32 -65
- package/src/sap/fe/core/messagebundle_hu.properties +30 -63
- package/src/sap/fe/core/messagebundle_id.properties +32 -65
- package/src/sap/fe/core/messagebundle_it.properties +31 -64
- package/src/sap/fe/core/messagebundle_iw.properties +31 -64
- package/src/sap/fe/core/messagebundle_ja.properties +29 -62
- package/src/sap/fe/core/messagebundle_kk.properties +31 -64
- package/src/sap/fe/core/messagebundle_ko.properties +31 -64
- package/src/sap/fe/core/messagebundle_lt.properties +31 -64
- package/src/sap/fe/core/messagebundle_lv.properties +32 -65
- package/src/sap/fe/core/messagebundle_ms.properties +31 -64
- package/src/sap/fe/core/messagebundle_nl.properties +31 -64
- package/src/sap/fe/core/messagebundle_no.properties +31 -64
- package/src/sap/fe/core/messagebundle_pl.properties +34 -67
- package/src/sap/fe/core/messagebundle_pt.properties +32 -65
- package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
- package/src/sap/fe/core/messagebundle_ro.properties +33 -66
- package/src/sap/fe/core/messagebundle_ru.properties +33 -66
- package/src/sap/fe/core/messagebundle_sh.properties +31 -64
- package/src/sap/fe/core/messagebundle_sk.properties +31 -64
- package/src/sap/fe/core/messagebundle_sl.properties +29 -62
- package/src/sap/fe/core/messagebundle_sv.properties +30 -63
- package/src/sap/fe/core/messagebundle_th.properties +31 -64
- package/src/sap/fe/core/messagebundle_tr.properties +31 -64
- package/src/sap/fe/core/messagebundle_uk.properties +32 -65
- package/src/sap/fe/core/messagebundle_vi.properties +31 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
- package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
- package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
- package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
- package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +0 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
- package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
- package/src/sap/fe/core/templating/FilterHelper.js +4 -4
- package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
- package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
- package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
- package/src/sap/fe/core/templating/UIFormatters.js +133 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +8 -7
- package/src/sap/fe/core/AnnotationHelper.js +0 -312
- package/src/sap/fe/core/AnnotationHelper.ts +0 -315
- package/src/sap/fe/core/RouterProxy.js +0 -926
- package/src/sap/fe/core/TransactionHelper.js +0 -1562
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
- package/src/sap/fe/core/actions/draft.js +0 -523
- package/src/sap/fe/core/actions/messageHandling.js +0 -567
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
|
@@ -8,50 +8,611 @@
|
|
|
8
8
|
* @private
|
|
9
9
|
* @alias sap.fe.core.controls.filterbar.VisualFilterContainer
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
11
|
+
import Log from "sap/base/Log";
|
|
12
|
+
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
13
|
+
import ValueListHelper from "sap/fe/macros/internal/valuehelp/ValueListHelper";
|
|
14
|
+
import ComboBox from "sap/m/ComboBox";
|
|
15
|
+
import Select from "sap/m/Select";
|
|
16
|
+
import Control from "sap/ui/core/Control";
|
|
17
|
+
import Core from "sap/ui/core/Core";
|
|
18
|
+
import Field from "sap/ui/mdc/Field";
|
|
19
|
+
import InParameter from "sap/ui/mdc/field/InParameter";
|
|
20
|
+
import OutParameter from "sap/ui/mdc/field/OutParameter";
|
|
21
|
+
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
22
|
+
import Context from "sap/ui/model/odata/v4/Context";
|
|
23
|
+
|
|
24
|
+
const MassEditHandlers: any = {
|
|
25
|
+
/**
|
|
26
|
+
* Called for property change in the transient context.
|
|
27
|
+
*
|
|
28
|
+
* @function
|
|
29
|
+
* @param {any} newValue New value of the property.
|
|
30
|
+
* @param {string} dataProperty Final context returned after the paginator action
|
|
31
|
+
* @param {string} mdcFieldId Final context returned after the paginator action
|
|
32
|
+
*/
|
|
33
|
+
contextPropertyChange: function (newValue: any, dataProperty: string, mdcFieldId: string) {
|
|
34
|
+
// Called for
|
|
35
|
+
// 1. Out Parameters.
|
|
36
|
+
// 2. Transient context property change.
|
|
37
|
+
|
|
38
|
+
const source = Core.byId(mdcFieldId) as Field;
|
|
39
|
+
const transCtx = source && (source.getBindingContext() as Context);
|
|
40
|
+
const fieldInfoModel = source && (source.getModel("fieldsInfo") as JSONModel);
|
|
41
|
+
const values =
|
|
42
|
+
fieldInfoModel.getProperty("/values/" + dataProperty) || fieldInfoModel.getProperty("/unitData/" + dataProperty) || [];
|
|
43
|
+
|
|
44
|
+
if (transCtx && (values.inputType === "InputWithValueHelp" || values.inputType === "InputWithUnit") && !values.valueListInfo) {
|
|
45
|
+
MassEditHandlers._setValueListInfo(transCtx, source, fieldInfoModel, dataProperty);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const isDialogOpen = fieldInfoModel && fieldInfoModel.getProperty("/isOpen");
|
|
49
|
+
if (!isDialogOpen || !source.getVisible()) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
MassEditHandlers._updateSelectKey(source, dataProperty, newValue);
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Called for change in the MDC field.
|
|
58
|
+
* This is called on selection done through VHD.
|
|
59
|
+
* This is not called on change of the dropdown as we are using a custom MassEditSelect control and not general Select.
|
|
60
|
+
*
|
|
61
|
+
* @function
|
|
62
|
+
* @param {object} event Event object for change.
|
|
63
|
+
* @param {string} propertyName Property path.
|
|
64
|
+
*/
|
|
65
|
+
handleMDCFieldChange: function (event: any, propertyName: string) {
|
|
66
|
+
// Called for
|
|
67
|
+
// 1. VHD property change.
|
|
68
|
+
|
|
69
|
+
const source = event && event.getSource();
|
|
70
|
+
const changePromise = event && event.getParameter("promise");
|
|
71
|
+
const comboBox = source.getContent();
|
|
72
|
+
if (!comboBox || !propertyName) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
changePromise
|
|
77
|
+
.then(MassEditHandlers._updateSelectKeyForMDCFieldChange.bind(MassEditHandlers, source, propertyName))
|
|
78
|
+
.catch((err: any) => {
|
|
79
|
+
Log.warning("VHD selection couldn't be populated in the mass edit field." + err);
|
|
80
|
+
});
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Called for selection change through the drop down.
|
|
85
|
+
*
|
|
86
|
+
* @function
|
|
87
|
+
* @param {object} event Event object for change.
|
|
88
|
+
*/
|
|
89
|
+
handleSelectionChange: function (event: any) {
|
|
90
|
+
// Called for Manual selection from dropdown(comboBox or select)
|
|
91
|
+
// 1. VHD select.
|
|
92
|
+
// 2. Any value change in the control.
|
|
93
|
+
|
|
94
|
+
const source = (event && event.getSource()) as any;
|
|
95
|
+
const key = source.getSelectedKey() as string;
|
|
96
|
+
const params = source && key && key.split("/");
|
|
97
|
+
let propertyName;
|
|
98
|
+
|
|
99
|
+
if (params[0] === "UseValueHelpValue") {
|
|
100
|
+
const prevItem = event.getParameter("previousSelectedItem");
|
|
101
|
+
const selectKey = prevItem.getKey();
|
|
102
|
+
propertyName = params.slice(1).join("/");
|
|
103
|
+
MassEditHandlers._onVHSelect(source, propertyName, selectKey);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const fieldInfoModel = source && (source.getModel("fieldsInfo") as JSONModel);
|
|
108
|
+
propertyName = MassEditHandlers._getPropertyNameFromKey(key);
|
|
109
|
+
MassEditHandlers._updateSuggestionForFieldsWithInParameters(
|
|
110
|
+
fieldInfoModel,
|
|
111
|
+
propertyName,
|
|
112
|
+
key.startsWith("Default/") || key.startsWith("ClearFieldValue/"),
|
|
113
|
+
true
|
|
114
|
+
);
|
|
115
|
+
MassEditHandlers._updateSuggestionForFieldsWithOutParameters(
|
|
116
|
+
fieldInfoModel,
|
|
117
|
+
propertyName,
|
|
118
|
+
key.startsWith("Default/") || key.startsWith("ClearFieldValue/"),
|
|
119
|
+
false
|
|
120
|
+
);
|
|
121
|
+
MassEditHandlers._updateResults(source, params, true);
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Update selections to results and the suggests in drop downs.
|
|
126
|
+
*
|
|
127
|
+
* @function
|
|
128
|
+
* @param {MDCField} source MDC field that was changed.
|
|
129
|
+
* @param {string} propertyName Property path.
|
|
130
|
+
* @param {any} value New value.
|
|
131
|
+
*/
|
|
132
|
+
_updateSelectKeyForMDCFieldChange: function (source: any, propertyName: string, value: any): void {
|
|
133
|
+
const transCtx = source && source.getBindingContext();
|
|
134
|
+
const fieldInfoModel = source && (source.getModel("fieldsInfo") as JSONModel);
|
|
135
|
+
const values =
|
|
136
|
+
fieldInfoModel.getProperty("/values/" + propertyName) || fieldInfoModel.getProperty("/unitData/" + propertyName) || [];
|
|
137
|
+
|
|
138
|
+
if (transCtx && (values.inputType === "InputWithValueHelp" || values.inputType === "InputWithUnit") && !values.valueListInfo) {
|
|
139
|
+
MassEditHandlers._setValueListInfo(transCtx, source, fieldInfoModel, propertyName);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
MassEditHandlers._updateSuggestionForFieldsWithOutParameters(fieldInfoModel, propertyName, false, true);
|
|
143
|
+
MassEditHandlers._updateSuggestionForFieldsWithInParameters(fieldInfoModel, propertyName, false, true);
|
|
144
|
+
|
|
145
|
+
const formattedValue = source.getFormFormattedValue();
|
|
146
|
+
MassEditHandlers._updateSelectKey(source, propertyName, value, formattedValue);
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Update suggests for all drop downs with InParameter as the propertyName.
|
|
151
|
+
*
|
|
152
|
+
* @function
|
|
153
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
154
|
+
* @param {string} propertyName Property path.
|
|
155
|
+
* @param {boolean} resetValues Should the values be reset to original state.
|
|
156
|
+
* @param {boolean} keepExistingSelection Should the existing selection before update remain.
|
|
157
|
+
*/
|
|
158
|
+
_updateSuggestionForFieldsWithInParameters: function (
|
|
159
|
+
fieldInfoModel: JSONModel,
|
|
160
|
+
propertyName: string,
|
|
161
|
+
resetValues: boolean,
|
|
162
|
+
keepExistingSelection: boolean
|
|
163
|
+
): void {
|
|
164
|
+
const values = fieldInfoModel.getProperty("/values");
|
|
165
|
+
const unitData = fieldInfoModel.getProperty("/unitData");
|
|
166
|
+
const fieldPaths = Object.keys(values);
|
|
167
|
+
const unitFieldPaths = Object.keys(unitData);
|
|
168
|
+
|
|
169
|
+
fieldPaths.forEach(
|
|
170
|
+
MassEditHandlers._updateInParameterSuggetions.bind(
|
|
171
|
+
MassEditHandlers,
|
|
172
|
+
fieldInfoModel,
|
|
173
|
+
"/values/",
|
|
174
|
+
propertyName,
|
|
175
|
+
resetValues,
|
|
176
|
+
keepExistingSelection
|
|
177
|
+
)
|
|
178
|
+
);
|
|
179
|
+
unitFieldPaths.forEach(
|
|
180
|
+
MassEditHandlers._updateInParameterSuggetions.bind(
|
|
181
|
+
MassEditHandlers,
|
|
182
|
+
fieldInfoModel,
|
|
183
|
+
"/unitData/",
|
|
184
|
+
propertyName,
|
|
185
|
+
resetValues,
|
|
186
|
+
keepExistingSelection
|
|
187
|
+
)
|
|
188
|
+
);
|
|
189
|
+
},
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Update suggests for a drop down with InParameter as the srcPropertyName.
|
|
193
|
+
*
|
|
194
|
+
* @function
|
|
195
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
196
|
+
* @param {string} pathPrefix Path in the runtime model.
|
|
197
|
+
* @param {string} srcPropertyName The InParameter Property path.
|
|
198
|
+
* @param {boolean} resetValues Should the values be reset to original state.
|
|
199
|
+
* @param {boolean} keepExistingSelection Should the existing selection before update remain.
|
|
200
|
+
* @param {string} propertyName Property path that needs update of suggestions.
|
|
201
|
+
*/
|
|
202
|
+
_updateInParameterSuggetions: function (
|
|
203
|
+
fieldInfoModel: JSONModel,
|
|
204
|
+
pathPrefix: string,
|
|
205
|
+
srcPropertyName: string,
|
|
206
|
+
resetValues: boolean,
|
|
207
|
+
keepExistingSelection: boolean,
|
|
208
|
+
propertyName: string
|
|
209
|
+
) {
|
|
210
|
+
const valueListInfo = fieldInfoModel.getProperty(pathPrefix + propertyName + "/valueListInfo");
|
|
211
|
+
if (valueListInfo && srcPropertyName != propertyName) {
|
|
212
|
+
const inParameters = valueListInfo.inParameters;
|
|
213
|
+
if (inParameters && inParameters.length > 0 && inParameters.includes(srcPropertyName)) {
|
|
214
|
+
MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, pathPrefix + propertyName, resetValues, keepExistingSelection);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Update suggests for all OutParameter's drop downs of the propertyName.
|
|
221
|
+
*
|
|
222
|
+
* @function
|
|
223
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
224
|
+
* @param {string} propertyName Property path.
|
|
225
|
+
* @param {boolean} resetValues Should the values be reset to original state.
|
|
226
|
+
* @param {boolean} keepExistingSelection Should the existing selection before update remain.
|
|
227
|
+
*/
|
|
228
|
+
_updateSuggestionForFieldsWithOutParameters: function (
|
|
229
|
+
fieldInfoModel: JSONModel,
|
|
230
|
+
propertyName: string,
|
|
231
|
+
resetValues: boolean,
|
|
232
|
+
keepExistingSelection: boolean
|
|
233
|
+
): void {
|
|
234
|
+
const valueListInfo =
|
|
235
|
+
fieldInfoModel.getProperty("/values/" + propertyName + "/valueListInfo") ||
|
|
236
|
+
fieldInfoModel.getProperty("/unitData/" + propertyName + "/valueListInfo");
|
|
237
|
+
|
|
238
|
+
if (valueListInfo && valueListInfo.outParameters) {
|
|
239
|
+
const outParameters = valueListInfo.outParameters;
|
|
240
|
+
MassEditHandlers._updateOutParameterSuggetions(outParameters, fieldInfoModel, resetValues, keepExistingSelection);
|
|
241
|
+
const pathPrefix =
|
|
242
|
+
(fieldInfoModel.getProperty(`/values/${propertyName}`) && `/values/${propertyName}`) ||
|
|
243
|
+
(fieldInfoModel.getProperty(`/unitData/${propertyName}`) && `/unitData/${propertyName}`);
|
|
244
|
+
if (pathPrefix) {
|
|
245
|
+
MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, pathPrefix, false, true);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Update suggests for a drop down with InParameter as the srcPropertyName.
|
|
252
|
+
*
|
|
253
|
+
* @function
|
|
254
|
+
* @param {string} outParameters String arrary of OutParameter property paths.
|
|
255
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
256
|
+
* @param {boolean} resetValues Should the values be reset to original state.
|
|
257
|
+
* @param {boolean} keepExistingSelection Should the existing selection before update remain.
|
|
258
|
+
*/
|
|
259
|
+
_updateOutParameterSuggetions: function (
|
|
260
|
+
outParameters: string[],
|
|
261
|
+
fieldInfoModel: JSONModel,
|
|
262
|
+
resetValues: boolean,
|
|
263
|
+
keepExistingSelection: boolean
|
|
264
|
+
) {
|
|
265
|
+
const values = fieldInfoModel.getProperty("/values");
|
|
266
|
+
const unitData = fieldInfoModel.getProperty("/unitData");
|
|
267
|
+
const fieldPaths = Object.keys(values);
|
|
268
|
+
const unitFieldPaths = Object.keys(unitData);
|
|
269
|
+
|
|
270
|
+
outParameters.forEach((outParameter: string) => {
|
|
271
|
+
if (fieldPaths.includes(outParameter)) {
|
|
272
|
+
MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, "/values/" + outParameter, resetValues, keepExistingSelection);
|
|
273
|
+
} else if (unitFieldPaths.includes(outParameter)) {
|
|
274
|
+
MassEditHandlers._updateFieldPathSuggestions(
|
|
275
|
+
fieldInfoModel,
|
|
276
|
+
"/unitData/" + outParameter,
|
|
277
|
+
resetValues,
|
|
278
|
+
keepExistingSelection
|
|
279
|
+
);
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
},
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Update suggests for a drop down of a field.
|
|
286
|
+
*
|
|
287
|
+
* @function
|
|
288
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
289
|
+
* @param {string} fieldPathAbsolute Complete runtime property path.
|
|
290
|
+
* @param {boolean} resetValues Should the values be reset to original state.
|
|
291
|
+
* @param {boolean} keepExistingSelection Should the existing selection before update remain.
|
|
292
|
+
*/
|
|
293
|
+
_updateFieldPathSuggestions: function (
|
|
294
|
+
fieldInfoModel: JSONModel,
|
|
295
|
+
fieldPathAbsolute: string,
|
|
296
|
+
resetValues: boolean,
|
|
297
|
+
keepExistingSelection: boolean
|
|
298
|
+
) {
|
|
299
|
+
const options = fieldInfoModel.getProperty(fieldPathAbsolute);
|
|
300
|
+
const defaultOptions = options.defaultOptions;
|
|
301
|
+
const selectedKey = fieldInfoModel.getProperty(fieldPathAbsolute + "/selectedKey");
|
|
302
|
+
const existingSelection = keepExistingSelection && options.find((option: any) => option.key === selectedKey);
|
|
303
|
+
if (resetValues) {
|
|
304
|
+
const selectOptions = options.selectOptions;
|
|
305
|
+
options.length = 0;
|
|
306
|
+
defaultOptions.forEach((defaultOption: any) => options.push(defaultOption));
|
|
307
|
+
selectOptions.forEach((selectOption: any) => options.push(selectOption));
|
|
308
|
+
} else {
|
|
309
|
+
options.length = 0;
|
|
310
|
+
defaultOptions.forEach((defaultOption: any) => options.push(defaultOption));
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
fieldInfoModel.setProperty(fieldPathAbsolute, options);
|
|
314
|
+
|
|
315
|
+
if (existingSelection && !options.includes(existingSelection)) {
|
|
316
|
+
options.push(existingSelection);
|
|
317
|
+
fieldInfoModel.setProperty(fieldPathAbsolute + "/selectedKey", selectedKey);
|
|
318
|
+
}
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* Update In and Out Parameters in the MED.
|
|
323
|
+
*
|
|
324
|
+
* @function
|
|
325
|
+
* @param {Context} transCtx The transient context of the MED.
|
|
326
|
+
* @param {MDCField} source MDC field.
|
|
327
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
328
|
+
* @param {string} propertyName Property path.
|
|
329
|
+
*/
|
|
330
|
+
_setValueListInfo: function (transCtx: Context, source: Field, fieldInfoModel: JSONModel, propertyName: string): void {
|
|
331
|
+
const propPath =
|
|
332
|
+
(fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
|
|
333
|
+
(fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
|
|
334
|
+
|
|
335
|
+
if (fieldInfoModel.getProperty(`${propPath}${propertyName}/valueListInfo`)) {
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
const fieldValueHelp = MassEditHandlers._getValueHelp(transCtx, source);
|
|
339
|
+
if (fieldValueHelp && fieldValueHelp.getDialogContent().getTable()) {
|
|
340
|
+
const inParameters = (fieldValueHelp.getInParameters() || []).map((inParam: InParameter) => inParam.getFieldPath());
|
|
341
|
+
const outParameters = (fieldValueHelp.getInParameters() || []).map((outParam: OutParameter) => outParam.getFieldPath());
|
|
342
|
+
const info: any = {
|
|
343
|
+
inParameters: inParameters.map((inParam: any) => inParam.getFieldPath()),
|
|
344
|
+
outParameters: outParameters.map((outParam: any) => outParam.getFieldPath())
|
|
345
|
+
};
|
|
346
|
+
fieldInfoModel.setProperty(`${propPath}${propertyName}/valueListInfo`, info);
|
|
347
|
+
if (info.outParameters.length > 0) {
|
|
348
|
+
MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, `/values/${propertyName}`, false, true);
|
|
349
|
+
}
|
|
350
|
+
} else {
|
|
351
|
+
MassEditHandlers._requestValueList(transCtx, source, fieldInfoModel, propertyName);
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Request and update In and Out Parameters in the MED.
|
|
357
|
+
*
|
|
358
|
+
* @function
|
|
359
|
+
* @param {Context} transCtx The transient context of the MED.
|
|
360
|
+
* @param {MDCField} source MDC field.
|
|
361
|
+
* @param {JSONModel} fieldInfoModel Runtime model with parameters store information.
|
|
362
|
+
* @param {string} propertyName Property path.
|
|
363
|
+
*/
|
|
364
|
+
_requestValueList: function (transCtx: Context, source: Field, fieldInfoModel: JSONModel, propertyName: string): void {
|
|
365
|
+
const metaPath = ModelHelper.getMetaPathForContext(transCtx);
|
|
366
|
+
const propertyPath = (metaPath && metaPath + "/" + propertyName) as string;
|
|
367
|
+
const dependents = (source as any)?.getDependents();
|
|
368
|
+
const fieldHelp = source?.getFieldHelp();
|
|
369
|
+
const fieldValueHelp = dependents?.find((dependent: any) => dependent.getId() === fieldHelp);
|
|
370
|
+
if (!fieldValueHelp?.getBindingContext()) {
|
|
371
|
+
fieldValueHelp?.setBindingContext(transCtx);
|
|
372
|
+
}
|
|
373
|
+
const metaModel = transCtx.getModel().getMetaModel();
|
|
374
|
+
ValueListHelper.createVHUIModel(propertyPath, fieldValueHelp);
|
|
375
|
+
const valueListInfo = ValueListHelper.getValueListInfo(fieldValueHelp, metaModel, propertyPath) as Promise<any>;
|
|
376
|
+
|
|
377
|
+
valueListInfo
|
|
378
|
+
.then((vLinfo: any) => {
|
|
379
|
+
const propPath =
|
|
380
|
+
(fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
|
|
381
|
+
(fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
|
|
382
|
+
const info: any = {
|
|
383
|
+
inParameters: vLinfo.inParameters.map((inParam: any) => inParam.getFieldPath()),
|
|
384
|
+
outParameters: vLinfo.outParameters.map((outParam: any) => outParam.getFieldPath())
|
|
385
|
+
};
|
|
386
|
+
fieldInfoModel.setProperty(`${propPath}${propertyName}/valueListInfo`, info);
|
|
387
|
+
if (info.outParameters.length > 0) {
|
|
388
|
+
MassEditHandlers._updateFieldPathSuggestions(fieldInfoModel, `/values/${propertyName}`, false, true);
|
|
389
|
+
}
|
|
390
|
+
})
|
|
391
|
+
.catch(() => {
|
|
392
|
+
Log.warning(`Mass Edit: Couldn't load valueList info for ${propertyPath}`);
|
|
393
|
+
});
|
|
394
|
+
},
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Get field help control from MDC field.
|
|
398
|
+
*
|
|
399
|
+
* @function
|
|
400
|
+
* @param {Context} transCtx The transient context of the MED.
|
|
401
|
+
* @param {MDCField} source MDC field.
|
|
402
|
+
* @returns Field Help control.
|
|
403
|
+
*/
|
|
404
|
+
_getValueHelp: function (transCtx: Context, source: any): any {
|
|
405
|
+
const dependents = source?.getDependents();
|
|
406
|
+
const fieldHelp = source?.getFieldHelp();
|
|
407
|
+
const fieldValueHelp = dependents?.find((dependent: any) => dependent.getId() === fieldHelp);
|
|
408
|
+
return fieldValueHelp;
|
|
409
|
+
},
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Colled on drop down selection of VHD option.
|
|
413
|
+
*
|
|
414
|
+
* @function
|
|
415
|
+
* @param {MassEditSelect} source Custom Mass Edit Select control.
|
|
416
|
+
* @param {string} propertyName Property path.
|
|
417
|
+
* @param {string} selectKey Previous key before the VHD was selected.
|
|
418
|
+
*/
|
|
419
|
+
_onVHSelect: function (source: any, propertyName: string, selectKey: string): void {
|
|
420
|
+
// Called for
|
|
421
|
+
// 1. VHD selected.
|
|
422
|
+
|
|
423
|
+
const fieldInfoModel = source && source.getModel("fieldsInfo");
|
|
424
|
+
const propPath =
|
|
425
|
+
(fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
|
|
426
|
+
(fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
|
|
427
|
+
const transCtx = source.getBindingContext();
|
|
428
|
+
const fieldValueHelp = MassEditHandlers._getValueHelp(transCtx, source.getParent());
|
|
429
|
+
if (!fieldValueHelp?.getBindingContext()) {
|
|
430
|
+
fieldValueHelp?.setBindingContext(transCtx);
|
|
431
|
+
}
|
|
432
|
+
source.fireValueHelpRequest();
|
|
433
|
+
|
|
434
|
+
fieldInfoModel.setProperty(propPath + propertyName + "/selectedKey", selectKey);
|
|
435
|
+
},
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Gets Property name from selection key.
|
|
439
|
+
*
|
|
440
|
+
* @function
|
|
441
|
+
* @param {string} key Selection key.
|
|
442
|
+
* @returns Property name.
|
|
443
|
+
*/
|
|
444
|
+
_getPropertyNameFromKey: function (key: string) {
|
|
445
|
+
let propertyName = "";
|
|
446
|
+
if (key.startsWith("Default/") || key.startsWith("ClearFieldValue/") || key.startsWith("UseValueHelpValue/")) {
|
|
447
|
+
propertyName = key.substring(key.indexOf("/") + 1);
|
|
448
|
+
} else {
|
|
449
|
+
propertyName = key.substring(0, key.lastIndexOf("/"));
|
|
450
|
+
}
|
|
451
|
+
return propertyName;
|
|
452
|
+
},
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Update selection to Custom Mass Edit Select from MDC field.
|
|
456
|
+
*
|
|
457
|
+
* @function
|
|
458
|
+
* @param {MDCField} source MDC field.
|
|
459
|
+
* @param {string} propertyName Property path.
|
|
460
|
+
* @param {string} value Value to update.
|
|
461
|
+
* @param {string} fullText Full text to use.
|
|
462
|
+
*/
|
|
463
|
+
_updateSelectKey: function (source: Field, propertyName: string, value: any, fullText?: any): void {
|
|
464
|
+
// Called for
|
|
465
|
+
// 1. VHD property change
|
|
466
|
+
// 2. Out Parameters.
|
|
467
|
+
// 3. Transient context property change.
|
|
468
|
+
|
|
469
|
+
const massEditSelect = (source.getContent() as any) as Select;
|
|
470
|
+
if (!massEditSelect || !propertyName) {
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
let key: string = massEditSelect.getSelectedKey();
|
|
474
|
+
if ((key.startsWith("Default/") || key.startsWith("ClearFieldValue/")) && !value) {
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
const formattedText = MassEditHandlers._valueExists(fullText) ? fullText : value;
|
|
479
|
+
const fieldInfoModel = source && ((source as any).getModel("fieldsInfo") as JSONModel);
|
|
480
|
+
const values =
|
|
481
|
+
fieldInfoModel.getProperty("/values/" + propertyName) || fieldInfoModel.getProperty("/unitData/" + propertyName) || [];
|
|
482
|
+
const propPath =
|
|
483
|
+
(fieldInfoModel.getProperty("/values/" + propertyName) && "/values/") ||
|
|
484
|
+
(fieldInfoModel.getProperty("/unitData/" + propertyName) && "/unitData/");
|
|
485
|
+
|
|
486
|
+
const relatedField = values.find((fieldData: any) => fieldData?.textInfo?.value === value || fieldData.text === value);
|
|
487
|
+
|
|
488
|
+
if (relatedField) {
|
|
489
|
+
if (
|
|
490
|
+
fullText &&
|
|
491
|
+
relatedField.textInfo &&
|
|
492
|
+
relatedField.textInfo.descriptionPath &&
|
|
493
|
+
(relatedField.text != formattedText || relatedField.textInfo.fullText != formattedText)
|
|
494
|
+
) {
|
|
495
|
+
// Update the full text only when provided.
|
|
496
|
+
relatedField.text = formattedText;
|
|
497
|
+
relatedField.textInfo.fullText = formattedText;
|
|
498
|
+
relatedField.textInfo.description = source.getAdditionalValue();
|
|
499
|
+
}
|
|
500
|
+
if (relatedField.key === key) {
|
|
501
|
+
fieldInfoModel.setProperty(propPath + propertyName + "/selectedKey", key);
|
|
502
|
+
return;
|
|
503
|
+
}
|
|
504
|
+
key = relatedField.key;
|
|
505
|
+
} else if ([undefined, null, ""].indexOf(value) === -1) {
|
|
506
|
+
key = propertyName + "/" + value;
|
|
507
|
+
const selectionInfo = {
|
|
508
|
+
text: formattedText,
|
|
509
|
+
key,
|
|
510
|
+
textInfo: {
|
|
511
|
+
description: source.getAdditionalValue(),
|
|
512
|
+
descriptionPath: values && values.textInfo && values.textInfo.descriptionPath,
|
|
513
|
+
fullText: formattedText,
|
|
514
|
+
textArrangement: source.getDisplay(),
|
|
515
|
+
value: source.getValue(),
|
|
516
|
+
valuePath: propertyName
|
|
517
|
+
}
|
|
518
|
+
};
|
|
519
|
+
values.push(selectionInfo);
|
|
520
|
+
values.selectOptions = values.selectOptions || [];
|
|
521
|
+
values.selectOptions.push(selectionInfo);
|
|
522
|
+
fieldInfoModel.setProperty(propPath + propertyName, values);
|
|
523
|
+
} else {
|
|
524
|
+
key = "Default/" + propertyName;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
fieldInfoModel.setProperty(propPath + propertyName + "/selectedKey", key);
|
|
528
|
+
MassEditHandlers._updateResults(massEditSelect);
|
|
529
|
+
},
|
|
530
|
+
|
|
531
|
+
/**
|
|
532
|
+
* Get Value from Drop down.
|
|
533
|
+
*
|
|
534
|
+
* @function
|
|
535
|
+
* @param {Control} source Drop down control.
|
|
536
|
+
* @returns {string} Value of selection.
|
|
537
|
+
*/
|
|
538
|
+
_getValue: function (source: Control) {
|
|
539
|
+
return source.getMetadata().getName() === "sap.fe.core.controls.MassEditSelect"
|
|
540
|
+
? (source as Select).getSelectedItem()?.getText()
|
|
541
|
+
: (source as ComboBox).getValue();
|
|
542
|
+
},
|
|
543
|
+
|
|
544
|
+
_getValueOnEmpty: function (oSource: any, fieldsInfoModel: JSONModel, value: any, sPropertyName: string) {
|
|
545
|
+
if (!value) {
|
|
546
|
+
const values =
|
|
547
|
+
fieldsInfoModel.getProperty(`/values/${sPropertyName}`) || fieldsInfoModel.getProperty(`/unitData/${sPropertyName}`) || [];
|
|
548
|
+
if (values.unitProperty) {
|
|
549
|
+
value = 0;
|
|
550
|
+
oSource.setValue(value);
|
|
551
|
+
} else if (values.inputType === "CheckBox") {
|
|
552
|
+
value = null;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
return value;
|
|
556
|
+
},
|
|
557
|
+
|
|
558
|
+
_valueExists: function (value: any) {
|
|
559
|
+
return value != undefined && value != null;
|
|
560
|
+
},
|
|
561
|
+
|
|
562
|
+
/**
|
|
563
|
+
* Updates selections to runtime model.
|
|
564
|
+
*
|
|
565
|
+
* @function
|
|
566
|
+
* @param {Control} oSource Drop down control.
|
|
567
|
+
* @param {Array} aParams Parts of key in runtime model.
|
|
568
|
+
* @param {boolean} updateTransCtx Should transient context be updated with the value.
|
|
569
|
+
*/
|
|
570
|
+
_updateResults: function (oSource: any, aParams: Array<string> = [], updateTransCtx: boolean) {
|
|
571
|
+
// Called for
|
|
572
|
+
// 1. VHD property change.
|
|
573
|
+
// 2. Out parameter.
|
|
574
|
+
// 3. transient context property change.
|
|
575
|
+
const fieldsInfoModel = oSource && oSource.getModel("fieldsInfo");
|
|
576
|
+
const oFieldsInfoData = fieldsInfoModel && fieldsInfoModel.getData();
|
|
577
|
+
let value = MassEditHandlers._getValue(oSource as Control);
|
|
578
|
+
aParams = aParams.length > 0 ? aParams : oSource && oSource.getSelectedKey() && oSource.getSelectedKey().split("/");
|
|
579
|
+
|
|
23
580
|
let oDataObject;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (aParams[0] === "ValueHelp") {
|
|
27
|
-
} */
|
|
581
|
+
const sPropertyName = oSource.getId().substring(oSource.getId().lastIndexOf(":") + 1);
|
|
582
|
+
|
|
28
583
|
if (aParams[0] === "Default") {
|
|
29
|
-
oDataObject = {
|
|
584
|
+
oDataObject = {
|
|
585
|
+
keyValue: aParams[1],
|
|
586
|
+
value: aParams[0]
|
|
587
|
+
};
|
|
30
588
|
} else if (aParams[0] === "ClearFieldValue") {
|
|
31
|
-
|
|
589
|
+
value = "";
|
|
590
|
+
value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
|
|
591
|
+
oDataObject = {
|
|
592
|
+
keyValue: aParams[1],
|
|
593
|
+
value: value
|
|
594
|
+
};
|
|
32
595
|
} else if (!aParams) {
|
|
33
|
-
|
|
596
|
+
value = MassEditHandlers._getValueOnEmpty(oSource, fieldsInfoModel, value, sPropertyName);
|
|
34
597
|
oDataObject = {
|
|
35
598
|
keyValue: sPropertyName,
|
|
36
|
-
value:
|
|
599
|
+
value: value
|
|
37
600
|
};
|
|
38
601
|
} else {
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
const iValueIndex = oFieldsInfoData.values[aParams[0]].findIndex(function(data: any) {
|
|
46
|
-
return typeof data.text === "boolean" && data.text === Boolean(oSource.getValue());
|
|
602
|
+
const propertyName = aParams.slice(0, -1).join("/");
|
|
603
|
+
const propertyValues =
|
|
604
|
+
fieldsInfoModel.getProperty("/values/" + propertyName) || fieldsInfoModel.getProperty("/unitData/" + propertyName) || [];
|
|
605
|
+
|
|
606
|
+
const relatedField = (propertyValues || []).find(function (oFieldData: any) {
|
|
607
|
+
return oFieldData?.textInfo?.value === value || oFieldData.text === value;
|
|
47
608
|
});
|
|
48
|
-
oDataObject =
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
609
|
+
oDataObject = {
|
|
610
|
+
keyValue: propertyName,
|
|
611
|
+
value:
|
|
612
|
+
relatedField.textInfo && MassEditHandlers._valueExists(relatedField.textInfo.value)
|
|
613
|
+
? relatedField.textInfo.value
|
|
614
|
+
: relatedField.text
|
|
615
|
+
};
|
|
55
616
|
}
|
|
56
617
|
let bExistingElementindex = -1;
|
|
57
618
|
for (let i = 0; i < oFieldsInfoData.results.length; i++) {
|
|
@@ -64,6 +625,14 @@ const MassEditHandlers = {
|
|
|
64
625
|
} else {
|
|
65
626
|
oFieldsInfoData.results.push(oDataObject);
|
|
66
627
|
}
|
|
628
|
+
if (updateTransCtx) {
|
|
629
|
+
const transCtx = oSource.getBindingContext();
|
|
630
|
+
if (aParams[0] === "Default" || aParams[0] === "ClearFieldValue") {
|
|
631
|
+
transCtx.setProperty(oDataObject.keyValue, null);
|
|
632
|
+
} else if (oDataObject) {
|
|
633
|
+
transCtx.setProperty(oDataObject.keyValue, oDataObject.value);
|
|
634
|
+
}
|
|
635
|
+
}
|
|
67
636
|
}
|
|
68
637
|
};
|
|
69
638
|
|