@sapui5/sap.fe.core 1.111.1 → 1.113.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 +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +6 -5
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +12 -11
- package/src/sap/fe/core/AppComponent-dbg.js +35 -9
- package/src/sap/fe/core/AppComponent.js +1 -1
- package/src/sap/fe/core/AppComponent.js.map +1 -1
- package/src/sap/fe/core/AppComponent.ts +66 -9
- package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
- package/src/sap/fe/core/AppStateHandler.js +1 -1
- package/src/sap/fe/core/AppStateHandler.js.map +1 -1
- package/src/sap/fe/core/AppStateHandler.ts +10 -1
- package/src/sap/fe/core/BaseController-dbg.js +1 -1
- package/src/sap/fe/core/BaseController.ts +2 -1
- package/src/sap/fe/core/CommonUtils-dbg.js +202 -533
- package/src/sap/fe/core/CommonUtils.js +1 -1
- package/src/sap/fe/core/CommonUtils.js.map +1 -1
- package/src/sap/fe/core/CommonUtils.ts +260 -681
- package/src/sap/fe/core/ExtensionAPI-dbg.js +4 -1
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +11 -1
- package/src/sap/fe/core/PageController-dbg.js +26 -31
- package/src/sap/fe/core/PageController.js +1 -1
- package/src/sap/fe/core/PageController.js.map +1 -1
- package/src/sap/fe/core/PageController.ts +17 -3
- package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
- package/src/sap/fe/core/ResourceModel.js +6 -0
- package/src/sap/fe/core/ResourceModel.js.map +1 -0
- package/src/sap/fe/core/ResourceModel.ts +67 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +6 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +164 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +170 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +142 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +913 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +313 -373
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +183 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +936 -231
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1023 -255
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +48 -98
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +95 -129
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +23 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +3 -5
- package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +26 -4
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +27 -27
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +35 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +326 -89
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +32 -3
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +4 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +103 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +124 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +78 -149
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +85 -160
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +49 -49
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +52 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +82 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +123 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1508 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1993 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -18
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +9 -22
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +53 -47
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +55 -61
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +78 -13
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +100 -13
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
- package/src/sap/fe/core/controls/CommandExecution.ts +15 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
- package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
- package/src/sap/fe/core/controls/FilterBar.ts +5 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -2
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -0
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +3 -5
- package/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js.map +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +4 -6
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +21 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.ts +23 -1
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +67 -62
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +75 -66
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +81 -20
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.ts +76 -22
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1027 -956
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +13 -19
- package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +37 -40
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +133 -49
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +140 -75
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +7 -6
- package/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +8 -14
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +9 -9
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +17 -18
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +143 -93
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +221 -177
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +23 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -23
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +138 -75
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +223 -110
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +38 -28
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +67 -47
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +54 -24
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +84 -37
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +12 -14
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +16 -11
- package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +8 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +8 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +7 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +11 -9
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +10 -8
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +22 -20
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +19 -16
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +32 -35
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +42 -37
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +12 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -2
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
- package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +3 -7
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.ts +2 -6
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +9 -5
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.ts +11 -4
- package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
- package/src/sap/fe/core/fpm/Component.ts +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +7 -6
- package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +9 -9
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
- package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.ts +140 -185
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +23 -20
- package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.ts +26 -28
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +9 -9
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +8 -8
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +517 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +610 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +37 -73
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +47 -74
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +39 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +35 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +132 -23
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +109 -22
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/SizeHelper-dbg.js +53 -0
- package/src/sap/fe/core/helpers/SizeHelper.js +6 -0
- package/src/sap/fe/core/helpers/SizeHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SizeHelper.ts +51 -0
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +29 -25
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +26 -24
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +151 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.ts +162 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library-dbg.js +2 -2
- package/src/sap/fe/core/library-preload.js +156 -140
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.ts +7 -0
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +67 -15
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -14
- package/src/sap/fe/core/messagebundle.properties +35 -0
- package/src/sap/fe/core/messagebundle_ar.properties +15 -12
- package/src/sap/fe/core/messagebundle_bg.properties +20 -17
- package/src/sap/fe/core/messagebundle_ca.properties +12 -9
- package/src/sap/fe/core/messagebundle_cs.properties +12 -9
- package/src/sap/fe/core/messagebundle_cy.properties +12 -9
- package/src/sap/fe/core/messagebundle_da.properties +12 -9
- package/src/sap/fe/core/messagebundle_de.properties +13 -10
- package/src/sap/fe/core/messagebundle_el.properties +14 -11
- package/src/sap/fe/core/messagebundle_en.properties +4 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +4 -1
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +21 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +23 -3
- package/src/sap/fe/core/messagebundle_es.properties +12 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +12 -9
- package/src/sap/fe/core/messagebundle_et.properties +12 -9
- package/src/sap/fe/core/messagebundle_fi.properties +12 -9
- package/src/sap/fe/core/messagebundle_fr.properties +12 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +13 -10
- package/src/sap/fe/core/messagebundle_hi.properties +12 -9
- package/src/sap/fe/core/messagebundle_hr.properties +12 -9
- package/src/sap/fe/core/messagebundle_hu.properties +12 -9
- package/src/sap/fe/core/messagebundle_id.properties +13 -10
- package/src/sap/fe/core/messagebundle_it.properties +12 -9
- package/src/sap/fe/core/messagebundle_iw.properties +12 -9
- package/src/sap/fe/core/messagebundle_ja.properties +13 -10
- package/src/sap/fe/core/messagebundle_kk.properties +12 -9
- package/src/sap/fe/core/messagebundle_ko.properties +12 -9
- package/src/sap/fe/core/messagebundle_lt.properties +12 -9
- package/src/sap/fe/core/messagebundle_lv.properties +12 -9
- package/src/sap/fe/core/messagebundle_ms.properties +13 -10
- package/src/sap/fe/core/messagebundle_nl.properties +13 -10
- package/src/sap/fe/core/messagebundle_no.properties +12 -9
- package/src/sap/fe/core/messagebundle_pl.properties +12 -9
- package/src/sap/fe/core/messagebundle_pt.properties +12 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +12 -9
- package/src/sap/fe/core/messagebundle_ro.properties +16 -13
- package/src/sap/fe/core/messagebundle_ru.properties +13 -10
- package/src/sap/fe/core/messagebundle_sh.properties +12 -9
- package/src/sap/fe/core/messagebundle_sk.properties +12 -9
- package/src/sap/fe/core/messagebundle_sl.properties +12 -9
- package/src/sap/fe/core/messagebundle_sv.properties +12 -9
- package/src/sap/fe/core/messagebundle_th.properties +12 -9
- package/src/sap/fe/core/messagebundle_tr.properties +12 -9
- package/src/sap/fe/core/messagebundle_uk.properties +12 -9
- package/src/sap/fe/core/messagebundle_vi.properties +13 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +12 -9
- package/src/sap/fe/core/messagebundle_zh_TW.properties +12 -9
- package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
- package/src/sap/fe/core/operationsHelper.js +1 -1
- package/src/sap/fe/core/operationsHelper.js.map +1 -1
- package/src/sap/fe/core/operationsHelper.ts +88 -63
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +10 -5
- package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +22 -8
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +9 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +35 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +7 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +24 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +497 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +26 -6
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +54 -13
- package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -0
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +195 -95
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +210 -96
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +5 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -2
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +19 -29
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -26
- package/src/sap/fe/core/templating/EntityTypeHelper-dbg.js +48 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.js +6 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.js.map +1 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +37 -0
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +3 -3
- package/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FilterHelper.ts +5 -3
- package/src/sap/fe/core/templating/FilterTemplating-dbg.js +7 -8
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +5 -8
- package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +1 -6
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.ts +0 -5
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +13 -46
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +14 -43
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
- package/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +47 -32
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
- package/src/sap/fe/core/type/FiscalDate.ts +2 -1
- package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -1
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
- package/src/sap/fe/core/type/TypeUtil.ts +3 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +0 -91
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
- package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
- package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
- package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
- package/src/sap/fe/core/controls/FileWrapper.js +0 -6
- package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Property } from "@sap-ux/vocabularies-types";
|
|
1
2
|
import Log from "sap/base/Log";
|
|
2
3
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
3
4
|
import {
|
|
@@ -8,12 +9,17 @@ import {
|
|
|
8
9
|
} from "sap/fe/core/controllerextensions/collaboration/ActivityBase";
|
|
9
10
|
import type { Message, User, UserActivity } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
10
11
|
import { Activity, CollaborationUtils } from "sap/fe/core/controllerextensions/collaboration/CollaborationCommon";
|
|
12
|
+
import { FieldSideEffectDictionary } from "sap/fe/core/controllerextensions/SideEffects";
|
|
13
|
+
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
14
|
+
import PageController from "sap/fe/core/PageController";
|
|
11
15
|
import MessageBox from "sap/m/MessageBox";
|
|
12
16
|
import type Control from "sap/ui/core/Control";
|
|
13
17
|
import type View from "sap/ui/core/mvc/View";
|
|
14
18
|
import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
19
|
+
import Context from "sap/ui/model/odata/v4/Context";
|
|
20
|
+
import ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
15
21
|
import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
16
|
-
import
|
|
22
|
+
import ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
17
23
|
|
|
18
24
|
const MYACTIVITY = "/collaboration/myActivity";
|
|
19
25
|
const ACTIVEUSERS = "/collaboration/activeUsers";
|
|
@@ -29,12 +35,14 @@ export const send = function (
|
|
|
29
35
|
control: Control,
|
|
30
36
|
action: Activity,
|
|
31
37
|
content: string | string[] | undefined,
|
|
32
|
-
triggeredActionName?: string
|
|
38
|
+
triggeredActionName?: string,
|
|
39
|
+
refreshListBinding?: boolean,
|
|
40
|
+
actionRequestedProperties?: string[]
|
|
33
41
|
) {
|
|
34
42
|
if (isConnected(control)) {
|
|
35
43
|
const internalModel = control.getModel("internal") as JSONModel;
|
|
36
44
|
const clientContent = Array.isArray(content) ? content.join("|") : content;
|
|
37
|
-
|
|
45
|
+
const requestedProperties = actionRequestedProperties?.join("|");
|
|
38
46
|
const myActivity = internalModel.getProperty(MYACTIVITY);
|
|
39
47
|
if (action === Activity.LiveChange) {
|
|
40
48
|
// To avoid unnecessary traffic we keep track of live changes and send it only once
|
|
@@ -54,16 +62,16 @@ export const send = function (
|
|
|
54
62
|
internalModel.setProperty(MYACTIVITY, null);
|
|
55
63
|
}
|
|
56
64
|
|
|
57
|
-
broadcastCollaborationMessage(action, clientContent, internalModel, triggeredActionName);
|
|
65
|
+
broadcastCollaborationMessage(action, clientContent, internalModel, triggeredActionName, refreshListBinding, requestedProperties);
|
|
58
66
|
}
|
|
59
67
|
};
|
|
60
68
|
|
|
61
|
-
const getWebSocketBaseURL = function (bindingContext:
|
|
69
|
+
const getWebSocketBaseURL = function (bindingContext: Context): string {
|
|
62
70
|
return bindingContext.getModel().getMetaModel().getObject("/@com.sap.vocabularies.Common.v1.WebSocketBaseURL");
|
|
63
71
|
};
|
|
64
72
|
|
|
65
73
|
export const isCollaborationEnabled = function (view: View): boolean {
|
|
66
|
-
const bindingContext = view?.getBindingContext && (view.getBindingContext() as
|
|
74
|
+
const bindingContext = view?.getBindingContext && (view.getBindingContext() as Context);
|
|
67
75
|
return !!(bindingContext && getWebSocketBaseURL(bindingContext));
|
|
68
76
|
};
|
|
69
77
|
|
|
@@ -77,7 +85,7 @@ export const connect = async function (view: View) {
|
|
|
77
85
|
return;
|
|
78
86
|
}
|
|
79
87
|
|
|
80
|
-
const bindingContext = view.getBindingContext() as
|
|
88
|
+
const bindingContext = view.getBindingContext() as Context;
|
|
81
89
|
const webSocketBaseURL = getWebSocketBaseURL(bindingContext);
|
|
82
90
|
const serviceUrl = bindingContext.getModel().getServiceUrl();
|
|
83
91
|
|
|
@@ -93,6 +101,7 @@ export const connect = async function (view: View) {
|
|
|
93
101
|
initializeCollaboration(me, webSocketBaseURL, sDraftUUID, serviceUrl, internalModel, (message: Message) => {
|
|
94
102
|
messageReceive(message, view);
|
|
95
103
|
});
|
|
104
|
+
internalModel.setProperty(MYACTIVITY, null);
|
|
96
105
|
};
|
|
97
106
|
|
|
98
107
|
export const disconnect = function (control: Control) {
|
|
@@ -100,6 +109,12 @@ export const disconnect = function (control: Control) {
|
|
|
100
109
|
endCollaboration(internalModel);
|
|
101
110
|
};
|
|
102
111
|
|
|
112
|
+
/**
|
|
113
|
+
* Callback when a message is received from the websocket.
|
|
114
|
+
*
|
|
115
|
+
* @param message The message received
|
|
116
|
+
* @param view The view that was used initially when connecting the websocket
|
|
117
|
+
*/
|
|
103
118
|
function messageReceive(message: Message, view: View) {
|
|
104
119
|
const internalModel: any = view.getModel("internal");
|
|
105
120
|
let activeUsers: User[] = internalModel.getProperty(ACTIVEUSERS);
|
|
@@ -140,6 +155,7 @@ function messageReceive(message: Message, view: View) {
|
|
|
140
155
|
}
|
|
141
156
|
|
|
142
157
|
break;
|
|
158
|
+
|
|
143
159
|
case Activity.Leave:
|
|
144
160
|
// Removing the active user. Not removing "me" if I had the screen open in another session
|
|
145
161
|
activeUsers = activeUsers.filter((user) => user.id !== sender.id || user.me);
|
|
@@ -160,41 +176,29 @@ function messageReceive(message: Message, view: View) {
|
|
|
160
176
|
break;
|
|
161
177
|
|
|
162
178
|
case Activity.Change:
|
|
163
|
-
|
|
164
|
-
return (view.getModel().getMetaModel() as ODataMetaModel).getMetaPath(path);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
metaPaths.forEach((currentMetaPath, i) => {
|
|
168
|
-
const nesteedMessage = {
|
|
169
|
-
...message,
|
|
170
|
-
clientContent: message?.clientContent?.split("|")[i]
|
|
171
|
-
};
|
|
172
|
-
let currentActivities: any[] = internalModel.getProperty(ACTIVITIES + currentMetaPath) || [];
|
|
173
|
-
activityKey = getActivityKey(nesteedMessage.clientContent);
|
|
174
|
-
currentActivities = currentActivities?.filter && currentActivities.filter((activity) => activity.key !== activityKey);
|
|
175
|
-
if (currentActivities) {
|
|
176
|
-
internalModel.setProperty(ACTIVITIES + currentMetaPath, currentActivities);
|
|
177
|
-
update(view, nesteedMessage, currentMetaPath, Activity.Change);
|
|
178
|
-
}
|
|
179
|
-
});
|
|
179
|
+
updateOnChange(view, message);
|
|
180
180
|
break;
|
|
181
|
+
|
|
181
182
|
case Activity.Create:
|
|
182
183
|
// For create we actually just need to refresh the table
|
|
183
|
-
|
|
184
|
+
updateOnCreate(view, message);
|
|
184
185
|
break;
|
|
186
|
+
|
|
185
187
|
case Activity.Delete:
|
|
186
188
|
// For now also refresh the page but in case of deletion we need to inform the user
|
|
187
|
-
|
|
189
|
+
updateOnDelete(view, message);
|
|
188
190
|
break;
|
|
191
|
+
|
|
189
192
|
case Activity.Activate:
|
|
190
|
-
draftClosedByOtherUser(view, message, CollaborationUtils.getText("C_COLLABORATIONDRAFT_ACTIVATE", sender.name));
|
|
193
|
+
draftClosedByOtherUser(view, message.clientContent, CollaborationUtils.getText("C_COLLABORATIONDRAFT_ACTIVATE", sender.name));
|
|
191
194
|
break;
|
|
195
|
+
|
|
192
196
|
case Activity.Discard:
|
|
193
|
-
draftClosedByOtherUser(view, message, CollaborationUtils.getText("C_COLLABORATIONDRAFT_DISCARD", sender.name));
|
|
197
|
+
draftClosedByOtherUser(view, message.clientContent, CollaborationUtils.getText("C_COLLABORATIONDRAFT_DISCARD", sender.name));
|
|
194
198
|
break;
|
|
195
199
|
|
|
196
200
|
case Activity.Action:
|
|
197
|
-
|
|
201
|
+
updateOnAction(view, message);
|
|
198
202
|
break;
|
|
199
203
|
|
|
200
204
|
case Activity.LiveChange:
|
|
@@ -216,6 +220,7 @@ function messageReceive(message: Message, view: View) {
|
|
|
216
220
|
activities.push(mactivity);
|
|
217
221
|
internalModel.setProperty(ACTIVITIES + metaPath, activities);
|
|
218
222
|
break;
|
|
223
|
+
|
|
219
224
|
case Activity.Undo:
|
|
220
225
|
// The user did a change but reverted it, therefore unblock the control
|
|
221
226
|
activities = internalModel.getProperty(ACTIVITIES + metaPath);
|
|
@@ -228,89 +233,321 @@ function messageReceive(message: Message, view: View) {
|
|
|
228
233
|
}
|
|
229
234
|
}
|
|
230
235
|
|
|
231
|
-
|
|
236
|
+
/**
|
|
237
|
+
* Displays a message that the current draft was closed be another user, and navigates back to a proper view.
|
|
238
|
+
*
|
|
239
|
+
* @param view The view that was used initially when connecting the websocket
|
|
240
|
+
* @param path The path of the context to navigate to
|
|
241
|
+
* @param messageText The message to display
|
|
242
|
+
*/
|
|
243
|
+
function draftClosedByOtherUser(view: View, path: string, messageText: string) {
|
|
232
244
|
disconnect(view);
|
|
233
|
-
MessageBox.information(
|
|
234
|
-
(view.getBindingContext() as
|
|
245
|
+
MessageBox.information(messageText);
|
|
246
|
+
(view.getBindingContext() as Context)
|
|
235
247
|
.getBinding()
|
|
236
248
|
.resetChanges()
|
|
237
249
|
.then(function () {
|
|
238
|
-
navigate(
|
|
250
|
+
navigate(path, view);
|
|
239
251
|
})
|
|
240
252
|
.catch(function () {
|
|
241
253
|
Log.error("Pending Changes could not be reset - still navigating to active instance");
|
|
242
|
-
navigate(
|
|
254
|
+
navigate(path, view);
|
|
243
255
|
});
|
|
244
256
|
}
|
|
245
257
|
|
|
246
|
-
|
|
247
|
-
|
|
258
|
+
/**
|
|
259
|
+
* Updates data when a CHANGE message has been received.
|
|
260
|
+
*
|
|
261
|
+
* @param view The view that was used initially when connecting the websocket
|
|
262
|
+
* @param message The message received from the websocket
|
|
263
|
+
*/
|
|
264
|
+
function updateOnChange(view: View, message: Message) {
|
|
265
|
+
const updatedObjectsPaths = message.clientContent.split("|");
|
|
248
266
|
const metaModel = view.getModel().getMetaModel() as ODataMetaModel;
|
|
267
|
+
const internalModel = view.getModel("internal") as JSONModel;
|
|
268
|
+
|
|
269
|
+
// Remove all locks corresponding to the paths
|
|
270
|
+
updatedObjectsPaths.forEach((updatedPath) => {
|
|
271
|
+
const updatedMetaPath = metaModel.getMetaPath(updatedPath);
|
|
272
|
+
const activityKey = getActivityKey(updatedPath);
|
|
273
|
+
let currentActivities: any[] = internalModel.getProperty(ACTIVITIES + updatedMetaPath) || [];
|
|
274
|
+
currentActivities = currentActivities?.filter && currentActivities.filter((activity) => activity.key !== activityKey);
|
|
275
|
+
if (currentActivities) {
|
|
276
|
+
internalModel.setProperty(ACTIVITIES + updatedMetaPath, currentActivities);
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
|
|
249
280
|
const currentPage = getCurrentPage(view);
|
|
250
|
-
const
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
281
|
+
const currentContext = currentPage.getBindingContext() as Context | undefined;
|
|
282
|
+
const requestPromises = updatedObjectsPaths.map((path) => applyUpdatesForChange(view, path));
|
|
283
|
+
|
|
284
|
+
// Simulate any change so the edit flow shows the draft indicator and sets the page to dirty
|
|
285
|
+
currentPage.getController().editFlow.updateDocument(currentContext, Promise.all(requestPromises));
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Updates data corresponding to a path.
|
|
290
|
+
*
|
|
291
|
+
* @param view The view that was used initially when connecting the websocket
|
|
292
|
+
* @param propertyPathForUpdate Absolute path to the updated property
|
|
293
|
+
* @returns A promise resolved when the data and its related side effects have been received
|
|
294
|
+
*/
|
|
295
|
+
async function applyUpdatesForChange(view: View, propertyPathForUpdate: string): Promise<void> {
|
|
296
|
+
const metaModel = view.getModel().getMetaModel() as ODataMetaModel;
|
|
297
|
+
const metaContext = metaModel.getMetaContext(propertyPathForUpdate);
|
|
298
|
+
const dataModelObject = MetaModelConverter.getInvolvedDataModelObjects(metaContext);
|
|
299
|
+
const targetContextPath = propertyPathForUpdate.substring(0, propertyPathForUpdate.lastIndexOf("/")); // Remove property name
|
|
300
|
+
const targetContext = findContextForUpdate(view, targetContextPath);
|
|
301
|
+
const parentCollectionPath = targetContextPath.substring(0, targetContextPath.lastIndexOf("("));
|
|
302
|
+
const parentContextPath = parentCollectionPath.substring(0, parentCollectionPath.lastIndexOf("/"));
|
|
303
|
+
const parentContext = parentContextPath ? findContextForUpdate(view, parentContextPath) : undefined;
|
|
304
|
+
|
|
305
|
+
if (!targetContext && !parentContext) {
|
|
306
|
+
return; // No context for update
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
try {
|
|
310
|
+
const sideEffectsPromises: Promise<any>[] = [];
|
|
311
|
+
const sideEffectsService = CollaborationUtils.getAppComponent(view).getSideEffectsService();
|
|
312
|
+
|
|
313
|
+
if (targetContext) {
|
|
314
|
+
// We have a target context, so we can retrieve the updated property
|
|
315
|
+
const targetMetaPath = metaModel.getMetaPath(targetContext.getPath());
|
|
316
|
+
const relativeMetaPathForUpdate = metaModel.getMetaPath(propertyPathForUpdate).replace(targetMetaPath, "").slice(1);
|
|
317
|
+
sideEffectsPromises.push(sideEffectsService.requestSideEffects([relativeMetaPathForUpdate], targetContext, SYNCGROUPID));
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Get the fieldGroupIds corresponding to pathForUpdate
|
|
321
|
+
const fieldGroupIds = sideEffectsService.computeFieldGroupIds(
|
|
322
|
+
dataModelObject.targetEntityType.fullyQualifiedName,
|
|
323
|
+
dataModelObject.targetObject.fullyQualifiedName
|
|
324
|
+
);
|
|
325
|
+
|
|
326
|
+
// Execute the side effects for the fieldGroupIds
|
|
327
|
+
if (fieldGroupIds.length) {
|
|
328
|
+
const pageController = view.getController() as PageController;
|
|
329
|
+
const sideEffectsMapForFieldGroup = pageController._sideEffects.getSideEffectsMapForFieldGroups(
|
|
330
|
+
fieldGroupIds,
|
|
331
|
+
targetContext || parentContext
|
|
332
|
+
) as FieldSideEffectDictionary;
|
|
333
|
+
Object.keys(sideEffectsMapForFieldGroup).forEach((sideEffectName) => {
|
|
334
|
+
const sideEffect = sideEffectsMapForFieldGroup[sideEffectName];
|
|
335
|
+
sideEffectsPromises.push(
|
|
336
|
+
pageController._sideEffects.requestSideEffects(sideEffect.sideEffects, sideEffect.context, SYNCGROUPID)
|
|
337
|
+
);
|
|
267
338
|
});
|
|
268
339
|
}
|
|
269
|
-
|
|
270
|
-
|
|
340
|
+
|
|
341
|
+
await Promise.all(sideEffectsPromises);
|
|
342
|
+
} catch (err) {
|
|
343
|
+
Log.error("Failed to update data after change:" + err);
|
|
344
|
+
throw err;
|
|
271
345
|
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Updates data when a DELETE message has been received.
|
|
350
|
+
*
|
|
351
|
+
* @param view The view that was used initially when connecting the websocket
|
|
352
|
+
* @param message The message received from the websocket
|
|
353
|
+
*/
|
|
354
|
+
function updateOnDelete(view: View, message: Message) {
|
|
355
|
+
const currentPage = getCurrentPage(view);
|
|
356
|
+
const currentContext = currentPage.getBindingContext() as Context;
|
|
357
|
+
const currentPath = currentContext.getPath();
|
|
272
358
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
359
|
+
const deletedObjectPaths = message.clientContent.split("|");
|
|
360
|
+
|
|
361
|
+
// check if user currently displays a deleted object or one of its descendants
|
|
362
|
+
const deletedPathInUse = deletedObjectPaths.find((deletedPath) => currentPath.startsWith(deletedPath));
|
|
363
|
+
if (deletedPathInUse) {
|
|
364
|
+
// any other user deleted the object I'm currently looking at. Inform the user we will navigate to root now
|
|
365
|
+
MessageBox.information(CollaborationUtils.getText("C_COLLABORATIONDRAFT_DELETE", message.userDescription), {
|
|
366
|
+
onClose: () => {
|
|
367
|
+
// We retrieve the deleted context as a keep-alive, and disable its keepalive status,
|
|
368
|
+
// so that it is properly destroyed when refreshing data
|
|
369
|
+
const targetContext = currentContext.getModel().getKeepAliveContext(deletedPathInUse);
|
|
370
|
+
targetContext.setKeepAlive(false);
|
|
371
|
+
const requestPromise = applyUpdatesForCollection(view, deletedObjectPaths[0]);
|
|
372
|
+
currentPage.getController().editFlow.updateDocument(currentPage.getBindingContext(), requestPromise);
|
|
373
|
+
(currentPage.getController() as PageController)._routing.navigateBackFromContext(targetContext);
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
} else {
|
|
377
|
+
const requestPromise = applyUpdatesForCollection(view, deletedObjectPaths[0]);
|
|
378
|
+
currentPage.getController().editFlow.updateDocument(currentPage.getBindingContext(), requestPromise);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* Updates data when a CREATE message has been received.
|
|
384
|
+
*
|
|
385
|
+
* @param view The view that was used initially when connecting the websocket
|
|
386
|
+
* @param message The message received from the websocket
|
|
387
|
+
*/
|
|
388
|
+
function updateOnCreate(view: View, message: Message) {
|
|
389
|
+
const currentPage = getCurrentPage(view);
|
|
390
|
+
const createdObjectPaths = message.clientContent.split("|");
|
|
391
|
+
|
|
392
|
+
const requestPromise = applyUpdatesForCollection(view, createdObjectPaths[0]);
|
|
393
|
+
// Simulate a change so the edit flow shows the draft indicator and sets the page to dirty
|
|
394
|
+
currentPage.getController().editFlow.updateDocument(currentPage.getBindingContext(), requestPromise);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Updates data in a collection.
|
|
399
|
+
*
|
|
400
|
+
* @param view The view that was used initially when connecting the websocket
|
|
401
|
+
* @param pathInCollection A path to an entity in the collection
|
|
402
|
+
*/
|
|
403
|
+
async function applyUpdatesForCollection(view: View, pathInCollection: string) {
|
|
404
|
+
const appComponent = CollaborationUtils.getAppComponent(view);
|
|
405
|
+
const parentPath = pathInCollection.substring(0, pathInCollection.lastIndexOf("/"));
|
|
406
|
+
const parentContext = findContextForUpdate(view, parentPath);
|
|
407
|
+
|
|
408
|
+
if (parentContext) {
|
|
409
|
+
try {
|
|
410
|
+
const sideEffectsPromises: Promise<any>[] = [];
|
|
411
|
+
|
|
412
|
+
const metaModel = parentContext.getModel().getMetaModel();
|
|
413
|
+
const metaPathForUpdate = metaModel.getMetaPath(pathInCollection);
|
|
414
|
+
const parentMetaPath = metaModel.getMetaPath(parentContext.getPath());
|
|
415
|
+
const relativePath = metaPathForUpdate.replace(`${parentMetaPath}/`, "");
|
|
416
|
+
|
|
417
|
+
// Reload the collection
|
|
418
|
+
const sideEffectsService = appComponent.getSideEffectsService();
|
|
419
|
+
sideEffectsPromises.push(sideEffectsService.requestSideEffects([relativePath], parentContext, SYNCGROUPID));
|
|
420
|
+
|
|
421
|
+
// Request the side effects for the collection
|
|
422
|
+
sideEffectsPromises.push(sideEffectsService.requestSideEffectsForNavigationProperty(relativePath, parentContext, SYNCGROUPID));
|
|
423
|
+
|
|
424
|
+
await Promise.all(sideEffectsPromises);
|
|
425
|
+
} catch (err) {
|
|
426
|
+
Log.error("Failed to update data after collection update:" + err);
|
|
279
427
|
}
|
|
280
428
|
}
|
|
429
|
+
}
|
|
281
430
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
431
|
+
/**
|
|
432
|
+
* Updates data when a ACTION message has been received.
|
|
433
|
+
*
|
|
434
|
+
* @param view The view that was used initially when connecting the websocket
|
|
435
|
+
* @param message The message received from the websocket
|
|
436
|
+
*/
|
|
437
|
+
function updateOnAction(view: View, message: Message) {
|
|
438
|
+
const currentPage = getCurrentPage(view);
|
|
439
|
+
const pathsForAction = message.clientContent.split("|");
|
|
440
|
+
const actionName = message.clientTriggeredActionName || "";
|
|
441
|
+
const requestedProperties = message.clientRequestedProperties?.split("|");
|
|
442
|
+
const refreshListBinding = message.clientRefreshListBinding === "true";
|
|
443
|
+
|
|
444
|
+
const requestPromises = pathsForAction.map((path) => requestUpdateForAction(view, path, actionName, requestedProperties));
|
|
445
|
+
|
|
446
|
+
if (refreshListBinding) {
|
|
447
|
+
requestPromises.push(applyUpdatesForCollection(view, pathsForAction[0]));
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
// Simulate any change so the edit flow shows the draft indicator and sets the page to dirty
|
|
451
|
+
currentPage.getController().editFlow.updateDocument(currentPage.getBindingContext(), Promise.all(requestPromises));
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/**
|
|
455
|
+
* Updates side-effects data when an action has been triggered on a context.
|
|
456
|
+
*
|
|
457
|
+
* @param view The view that was used initially when connecting the websocket
|
|
458
|
+
* @param pathForAction Path of the context to apply the action to
|
|
459
|
+
* @param actionName Name of the action
|
|
460
|
+
* @param requestedProperties
|
|
461
|
+
* @returns Promise resolved when the side-effects data has been loaded
|
|
462
|
+
*/
|
|
463
|
+
async function requestUpdateForAction(
|
|
464
|
+
view: View,
|
|
465
|
+
pathForAction: string,
|
|
466
|
+
actionName: string,
|
|
467
|
+
requestedProperties?: string[]
|
|
468
|
+
): Promise<void> {
|
|
469
|
+
const targetContext = findContextForUpdate(view, pathForAction);
|
|
470
|
+
if (!targetContext) {
|
|
471
|
+
return;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
const appComponent = CollaborationUtils.getAppComponent(view);
|
|
475
|
+
const sideEffectService = appComponent.getSideEffectsService();
|
|
476
|
+
const sideEffectsFromAction = sideEffectService.getODataActionSideEffects(actionName, targetContext);
|
|
477
|
+
const sideEffectPromises: Promise<any>[] = [];
|
|
478
|
+
if (sideEffectsFromAction) {
|
|
479
|
+
if (sideEffectsFromAction.pathExpressions?.length) {
|
|
480
|
+
sideEffectPromises.push(
|
|
481
|
+
sideEffectService.requestSideEffects(sideEffectsFromAction.pathExpressions, targetContext, SYNCGROUPID)
|
|
300
482
|
);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
if (requestedProperties && requestedProperties.length > 0) {
|
|
486
|
+
//clean-up of the properties to request list:
|
|
487
|
+
const metaModel = view.getModel().getMetaModel() as ODataMetaModel;
|
|
488
|
+
const metaPathForAction = calculateMetaPath(view, pathForAction);
|
|
489
|
+
const dataModelPath = MetaModelConverter.getInvolvedDataModelObjects(metaModel.getContext(metaPathForAction));
|
|
490
|
+
const propertiesToRequest = dataModelPath.targetEntityType.entityProperties
|
|
491
|
+
.map((property: Property) => {
|
|
492
|
+
return property.name;
|
|
493
|
+
})
|
|
494
|
+
.filter((prop) => requestedProperties.includes(prop));
|
|
495
|
+
if (propertiesToRequest.length > 0) {
|
|
496
|
+
sideEffectPromises.push(sideEffectService.requestSideEffects(propertiesToRequest, targetContext, SYNCGROUPID));
|
|
309
497
|
}
|
|
310
498
|
}
|
|
311
499
|
|
|
312
|
-
|
|
313
|
-
|
|
500
|
+
await Promise.all(sideEffectPromises);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Finds a context to apply an update message (CHANGE, CREATE, DELETE or ACTION).
|
|
505
|
+
*
|
|
506
|
+
* @param view The view that was used initially when connecting the websocket
|
|
507
|
+
* @param path The path of the context to be found (shall point to an entity, not a property)
|
|
508
|
+
* @returns A context if it could be found
|
|
509
|
+
*/
|
|
510
|
+
function findContextForUpdate(view: View, path: string): Context | undefined {
|
|
511
|
+
if (!path) {
|
|
512
|
+
return undefined;
|
|
513
|
+
}
|
|
514
|
+
// Find all potential paths
|
|
515
|
+
const targetPaths: string[] = [];
|
|
516
|
+
while (!path.endsWith(")")) {
|
|
517
|
+
targetPaths.unshift(path);
|
|
518
|
+
path = path.substring(0, path.lastIndexOf("/"));
|
|
519
|
+
}
|
|
520
|
+
targetPaths.unshift(path);
|
|
521
|
+
|
|
522
|
+
const parentCollectionPath = path.substring(0, path.lastIndexOf("(")); // Remove the last key
|
|
523
|
+
|
|
524
|
+
let targetContext: Context | undefined;
|
|
525
|
+
let currentContext = getCurrentPage(view).getBindingContext() as Context | undefined;
|
|
526
|
+
while (currentContext && !targetContext) {
|
|
527
|
+
if (targetPaths.indexOf(currentContext.getPath()) >= 0) {
|
|
528
|
+
targetContext = currentContext;
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
currentContext = currentContext.getBinding()?.getContext() as Context | undefined;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if (targetContext) {
|
|
535
|
+
// Found !
|
|
536
|
+
return targetContext;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
// Try to find the target context in a listBinding
|
|
540
|
+
const model = getCurrentPage(view).getBindingContext().getModel() as ODataModel;
|
|
541
|
+
const parentListBinding = model.getAllBindings().find((binding) => {
|
|
542
|
+
const bindingPath = binding.isRelative() ? binding.getResolvedPath() : binding.getPath();
|
|
543
|
+
return binding.isA("sap.ui.model.odata.v4.ODataListBinding") && bindingPath === parentCollectionPath;
|
|
544
|
+
}) as ODataListBinding | undefined;
|
|
545
|
+
// We've found a list binding that could contain the target context --> look for it
|
|
546
|
+
targetContext = parentListBinding?.getAllCurrentContexts().find((context) => {
|
|
547
|
+
return targetPaths.indexOf(context.getPath()) >= 0;
|
|
548
|
+
});
|
|
549
|
+
|
|
550
|
+
return targetContext;
|
|
314
551
|
}
|
|
315
552
|
|
|
316
553
|
function navigate(path: string, view: View) {
|