@sapui5/sap.fe.core 1.111.0 → 1.112.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 +4 -4
- 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 +11 -11
- package/src/sap/fe/core/AppComponent-dbg.js +27 -5
- 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 +58 -3
- 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 +152 -365
- 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 +201 -478
- package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -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 +9 -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 +163 -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 +169 -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 +147 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -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} +279 -335
- 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 +181 -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 +890 -220
- 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 +974 -239
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
- 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 +71 -61
- 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 +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
- 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 +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
- 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/TransactionHelper-dbg.js +45 -31
- 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 +52 -42
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -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 +43 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -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 +114 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -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 +1985 -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 -11
- 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 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
- 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 +44 -47
- 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 +12 -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 +32 -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 +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
- 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 +17 -1
- 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 +16 -0
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
- 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 +65 -51
- 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 +65 -16
- 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 +62 -18
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
- 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 +8 -8
- 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 +28 -26
- 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 +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
- 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 +15 -15
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
- 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 +161 -137
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
- 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 +10 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
- 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 +130 -86
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
- 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 +62 -45
- 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 +34 -13
- 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 +54 -20
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
- 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 +9 -8
- 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 +8 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
- 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 +9 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
- 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 +35 -35
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
- 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 +7 -1
- 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 +2 -2
- 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 +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -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 +6 -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 +6 -6
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
- 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 +20 -18
- 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 +22 -23
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
- 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 +4 -4
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -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 +408 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
- 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 +26 -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 +19 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
- 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 +70 -17
- 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/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -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 +12 -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 +127 -125
- 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/messagebundle.properties +33 -0
- package/src/sap/fe/core/messagebundle_ar.properties +12 -10
- package/src/sap/fe/core/messagebundle_bg.properties +11 -9
- package/src/sap/fe/core/messagebundle_ca.properties +11 -9
- package/src/sap/fe/core/messagebundle_cs.properties +11 -9
- package/src/sap/fe/core/messagebundle_cy.properties +11 -9
- package/src/sap/fe/core/messagebundle_da.properties +11 -9
- package/src/sap/fe/core/messagebundle_de.properties +3 -1
- package/src/sap/fe/core/messagebundle_el.properties +11 -9
- package/src/sap/fe/core/messagebundle_en.properties +3 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
- package/src/sap/fe/core/messagebundle_es.properties +11 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
- package/src/sap/fe/core/messagebundle_et.properties +11 -9
- package/src/sap/fe/core/messagebundle_fi.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -0
- package/src/sap/fe/core/messagebundle_hr.properties +11 -9
- package/src/sap/fe/core/messagebundle_hu.properties +11 -9
- package/src/sap/fe/core/messagebundle_id.properties +3 -1
- package/src/sap/fe/core/messagebundle_it.properties +11 -9
- package/src/sap/fe/core/messagebundle_iw.properties +11 -9
- package/src/sap/fe/core/messagebundle_ja.properties +11 -9
- package/src/sap/fe/core/messagebundle_kk.properties +11 -9
- package/src/sap/fe/core/messagebundle_ko.properties +2 -0
- package/src/sap/fe/core/messagebundle_lt.properties +11 -9
- package/src/sap/fe/core/messagebundle_lv.properties +2 -0
- package/src/sap/fe/core/messagebundle_ms.properties +12 -10
- package/src/sap/fe/core/messagebundle_nl.properties +12 -10
- package/src/sap/fe/core/messagebundle_no.properties +11 -9
- package/src/sap/fe/core/messagebundle_pl.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt.properties +11 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
- package/src/sap/fe/core/messagebundle_ro.properties +3 -1
- package/src/sap/fe/core/messagebundle_ru.properties +3 -1
- package/src/sap/fe/core/messagebundle_sh.properties +11 -9
- package/src/sap/fe/core/messagebundle_sk.properties +11 -9
- package/src/sap/fe/core/messagebundle_sl.properties +11 -9
- package/src/sap/fe/core/messagebundle_sv.properties +2 -0
- package/src/sap/fe/core/messagebundle_th.properties +11 -9
- package/src/sap/fe/core/messagebundle_tr.properties +11 -9
- package/src/sap/fe/core/messagebundle_uk.properties +11 -9
- package/src/sap/fe/core/messagebundle_vi.properties +12 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
- 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 +4 -3
- 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 +15 -5
- 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 +3 -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 +29 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -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 +502 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
- 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 +41 -12
- 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/DataModelPathHelper-dbg.js +185 -86
- 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 +190 -82
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
- 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 +1 -3
- 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/PropertyHelper-dbg.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
- 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 -932
- 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/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,33 +1,24 @@
|
|
|
1
1
|
import type * as Edm from "@sap-ux/vocabularies-types/Edm";
|
|
2
|
-
import type {
|
|
3
|
-
FilterRestrictionsType,
|
|
4
|
-
NavigationPropertyRestrictionTypes,
|
|
5
|
-
NavigationRestrictionsType,
|
|
6
|
-
SearchRestrictionsType
|
|
7
|
-
} from "@sap-ux/vocabularies-types/vocabularies/Capabilities";
|
|
2
|
+
import type { FilterRestrictionsType } from "@sap-ux/vocabularies-types/vocabularies/Capabilities";
|
|
8
3
|
import type { SemanticObjectMappingType, SemanticObjectUnavailableActions } from "@sap-ux/vocabularies-types/vocabularies/Common";
|
|
9
4
|
import { CommonAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/Common";
|
|
10
5
|
import type { TextArrangement } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
11
|
-
import type ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
12
6
|
import Log from "sap/base/Log";
|
|
13
7
|
import uniqueSort from "sap/base/util/array/uniqueSort";
|
|
14
8
|
import mergeObjects from "sap/base/util/merge";
|
|
15
9
|
import type AppComponent from "sap/fe/core/AppComponent";
|
|
10
|
+
import type { ComponentData } from "sap/fe/core/AppComponent";
|
|
16
11
|
import ConverterContext from "sap/fe/core/converters/ConverterContext";
|
|
17
|
-
import { IssueCategory, IssueCategoryType, IssueSeverity } from "sap/fe/core/converters/helpers/IssueManager";
|
|
18
12
|
import * as MetaModelConverter from "sap/fe/core/converters/MetaModelConverter";
|
|
19
|
-
import
|
|
20
|
-
import { compileExpression, not, or, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
13
|
+
import { compileExpression, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
21
14
|
import type { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
22
15
|
import ModelHelper from "sap/fe/core/helpers/ModelHelper";
|
|
23
16
|
import SemanticDateOperators from "sap/fe/core/helpers/SemanticDateOperators";
|
|
24
17
|
import { generate } from "sap/fe/core/helpers/StableIdHelper";
|
|
25
18
|
import type PageController from "sap/fe/core/PageController";
|
|
26
19
|
import type { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
|
|
27
|
-
import Diagnostics from "sap/fe/core/support/Diagnostics";
|
|
28
|
-
import { DefaultTypeForEdmType, isTypeFilterable } from "sap/fe/core/type/EDM";
|
|
20
|
+
import type Diagnostics from "sap/fe/core/support/Diagnostics";
|
|
29
21
|
import TypeUtil from "sap/fe/core/type/TypeUtil";
|
|
30
|
-
import metaModelUtil from "sap/fe/macros/ODataMetaModelUtil";
|
|
31
22
|
import type SelectionVariant from "sap/fe/navigation/SelectionVariant";
|
|
32
23
|
import type { SelectOption, SemanticDateConfiguration } from "sap/fe/navigation/SelectionVariant";
|
|
33
24
|
import type Button from "sap/m/Button";
|
|
@@ -39,7 +30,6 @@ import type { AggregationBindingInfo } from "sap/ui/base/ManagedObject";
|
|
|
39
30
|
import Component from "sap/ui/core/Component";
|
|
40
31
|
import type ComponentContainer from "sap/ui/core/ComponentContainer";
|
|
41
32
|
import type Control from "sap/ui/core/Control";
|
|
42
|
-
import Core from "sap/ui/core/Core";
|
|
43
33
|
import type UI5Element from "sap/ui/core/Element";
|
|
44
34
|
import Fragment from "sap/ui/core/Fragment";
|
|
45
35
|
import type Controller from "sap/ui/core/mvc/Controller";
|
|
@@ -48,14 +38,16 @@ import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
|
|
|
48
38
|
import XMLTemplateProcessor from "sap/ui/core/XMLTemplateProcessor";
|
|
49
39
|
import Device, { system } from "sap/ui/Device";
|
|
50
40
|
import type ActionToolbarAction from "sap/ui/mdc/actiontoolbar/ActionToolbarAction";
|
|
51
|
-
import type Chart from "sap/ui/mdc/Chart";
|
|
41
|
+
import type { default as Chart, default as MDCChart } from "sap/ui/mdc/Chart";
|
|
52
42
|
import type { ConditionObject } from "sap/ui/mdc/condition/Condition";
|
|
53
43
|
import FilterOperatorUtil from "sap/ui/mdc/condition/FilterOperatorUtil";
|
|
54
44
|
import RangeOperator from "sap/ui/mdc/condition/RangeOperator";
|
|
55
45
|
import type FilterBar from "sap/ui/mdc/FilterBar";
|
|
56
46
|
import type DelegateMixin from "sap/ui/mdc/mixin/DelegateMixin";
|
|
57
47
|
import type Table from "sap/ui/mdc/Table";
|
|
48
|
+
import type MDCTable from "sap/ui/mdc/valuehelp/content/MDCTable";
|
|
58
49
|
import type Context from "sap/ui/model/Context";
|
|
50
|
+
import Filter from "sap/ui/model/Filter";
|
|
59
51
|
import type JSONModel from "sap/ui/model/json/JSONModel";
|
|
60
52
|
import type ODataV4Context from "sap/ui/model/odata/v4/Context";
|
|
61
53
|
import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
|
|
@@ -63,29 +55,29 @@ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
|
|
|
63
55
|
import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
64
56
|
import type ObjectPageDynamicHeaderTitle from "sap/uxap/ObjectPageDynamicHeaderTitle";
|
|
65
57
|
import type ObjectPageLayout from "sap/uxap/ObjectPageLayout";
|
|
66
|
-
import type { V4Context } from "types/extension_types";
|
|
67
58
|
import type {
|
|
68
59
|
ExpandPathType,
|
|
69
|
-
MetaModelEntitySetAnnotation,
|
|
70
60
|
MetaModelEntityType,
|
|
71
61
|
MetaModelEnum,
|
|
72
62
|
MetaModelNavProperty,
|
|
73
63
|
MetaModelProperty,
|
|
74
64
|
MetaModelType
|
|
75
|
-
} from "
|
|
65
|
+
} from "types/metamodel_types";
|
|
76
66
|
import AnyElement from "./controls/AnyElement";
|
|
67
|
+
import * as MetaModelFunction from "./helpers/MetaModelFunction";
|
|
77
68
|
import { getConditions } from "./templating/FilterHelper";
|
|
78
69
|
|
|
79
|
-
type InternalResourceBundle = ResourceBundle & {
|
|
80
|
-
aCustomBundles: InternalResourceBundle[];
|
|
81
|
-
};
|
|
82
|
-
|
|
83
70
|
type ConditionType = {
|
|
84
71
|
operator: string;
|
|
85
72
|
values: Array<unknown> | undefined;
|
|
86
73
|
validated?: string;
|
|
87
74
|
};
|
|
88
75
|
|
|
76
|
+
type MyInboxIntent = {
|
|
77
|
+
semanticObject: string;
|
|
78
|
+
action: string;
|
|
79
|
+
};
|
|
80
|
+
|
|
89
81
|
function normalizeSearchTerm(sSearchTerm: string) {
|
|
90
82
|
if (!sSearchTerm) {
|
|
91
83
|
return undefined;
|
|
@@ -103,47 +95,7 @@ function normalizeSearchTerm(sSearchTerm: string) {
|
|
|
103
95
|
}, undefined);
|
|
104
96
|
}
|
|
105
97
|
|
|
106
|
-
function
|
|
107
|
-
let sDataType = oNavigationContext.getProperty("$Type");
|
|
108
|
-
// if $kind exists, it's not a DataField and we have the final type already
|
|
109
|
-
if (!oNavigationContext.getProperty("$kind")) {
|
|
110
|
-
switch (sDataType) {
|
|
111
|
-
case "com.sap.vocabularies.UI.v1.DataFieldForAction":
|
|
112
|
-
case "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":
|
|
113
|
-
sDataType = undefined;
|
|
114
|
-
break;
|
|
115
|
-
|
|
116
|
-
case "com.sap.vocabularies.UI.v1.DataField":
|
|
117
|
-
case "com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":
|
|
118
|
-
case "com.sap.vocabularies.UI.v1.DataFieldWithUrl":
|
|
119
|
-
case "com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":
|
|
120
|
-
case "com.sap.vocabularies.UI.v1.DataFieldWithAction":
|
|
121
|
-
sDataType = oNavigationContext.getProperty("Value/$Path/$Type");
|
|
122
|
-
break;
|
|
123
|
-
|
|
124
|
-
case "com.sap.vocabularies.UI.v1.DataFieldForAnnotation":
|
|
125
|
-
default:
|
|
126
|
-
const sAnnotationPath = oNavigationContext.getProperty("Target/$AnnotationPath");
|
|
127
|
-
if (sAnnotationPath) {
|
|
128
|
-
if (sAnnotationPath.indexOf("com.sap.vocabularies.Communication.v1.Contact") > -1) {
|
|
129
|
-
sDataType = oNavigationContext.getProperty("Target/$AnnotationPath/fn/$Path/$Type");
|
|
130
|
-
} else if (sAnnotationPath.indexOf("com.sap.vocabularies.UI.v1.DataPoint") > -1) {
|
|
131
|
-
sDataType = oNavigationContext.getProperty("Value/$Path/$Type");
|
|
132
|
-
} else {
|
|
133
|
-
// e.g. FieldGroup or Chart
|
|
134
|
-
sDataType = undefined;
|
|
135
|
-
}
|
|
136
|
-
} else {
|
|
137
|
-
sDataType = undefined;
|
|
138
|
-
}
|
|
139
|
-
break;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
return sDataType;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
async function waitForContextRequested(bindingContext: V4Context) {
|
|
98
|
+
async function waitForContextRequested(bindingContext: ODataV4Context) {
|
|
147
99
|
const model = bindingContext.getModel();
|
|
148
100
|
const metaModel = model.getMetaModel();
|
|
149
101
|
const entityPath = metaModel.getMetaPath(bindingContext.getPath());
|
|
@@ -163,190 +115,8 @@ function fnHasTransientContexts(oListBinding: ODataListBinding) {
|
|
|
163
115
|
return bHasTransientContexts;
|
|
164
116
|
}
|
|
165
117
|
|
|
166
|
-
|
|
167
|
-
let oSearchRestrictions;
|
|
168
|
-
let oNavigationSearchRestrictions;
|
|
169
|
-
const navigationText = "$NavigationPropertyBinding";
|
|
170
|
-
const searchRestrictionsTerm = "@Org.OData.Capabilities.V1.SearchRestrictions";
|
|
171
|
-
const entityTypePathParts = sFullPath.replaceAll("%2F", "/").split("/").filter(ModelHelper.filterOutNavPropBinding);
|
|
172
|
-
const entitySetPath = ModelHelper.getEntitySetPath(sFullPath, oMetaModelContext);
|
|
173
|
-
const entitySetPathParts = entitySetPath.split("/").filter(ModelHelper.filterOutNavPropBinding);
|
|
174
|
-
const isContainment = oMetaModelContext.getObject(`/${entityTypePathParts.join("/")}/$ContainsTarget`);
|
|
175
|
-
const containmentNavPath = isContainment && entityTypePathParts[entityTypePathParts.length - 1];
|
|
176
|
-
|
|
177
|
-
//LEAST PRIORITY - Search restrictions directly at Entity Set
|
|
178
|
-
//e.g. FR in "NS.EntityContainer/SalesOrderManage" ContextPath: /SalesOrderManage
|
|
179
|
-
if (!isContainment) {
|
|
180
|
-
oSearchRestrictions = oMetaModelContext.getObject(`${entitySetPath}${searchRestrictionsTerm}`) as
|
|
181
|
-
| MetaModelType<SearchRestrictionsType>
|
|
182
|
-
| undefined;
|
|
183
|
-
}
|
|
184
|
-
if (entityTypePathParts.length > 1) {
|
|
185
|
-
const navPath = isContainment ? containmentNavPath : entitySetPathParts[entitySetPathParts.length - 1];
|
|
186
|
-
// In case of containment we take entitySet provided as parent. And in case of normal we would remove the last navigation from entitySetPath.
|
|
187
|
-
const parentEntitySetPath = isContainment ? entitySetPath : `/${entitySetPathParts.slice(0, -1).join(`/${navigationText}/`)}`;
|
|
188
|
-
|
|
189
|
-
//HIGHEST priority - Navigation restrictions
|
|
190
|
-
//e.g. Parent "/Customer" with NavigationPropertyPath="Set" ContextPath: Customer/Set
|
|
191
|
-
const oNavigationRestrictions = CommonUtils.getNavigationRestrictions(
|
|
192
|
-
oMetaModelContext,
|
|
193
|
-
parentEntitySetPath,
|
|
194
|
-
navPath.replaceAll("%2F", "/")
|
|
195
|
-
);
|
|
196
|
-
oNavigationSearchRestrictions = oNavigationRestrictions && oNavigationRestrictions["SearchRestrictions"];
|
|
197
|
-
}
|
|
198
|
-
return oNavigationSearchRestrictions || oSearchRestrictions;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
function getNavigationRestrictions(oMetaModelContext: ODataMetaModel, sEntitySetPath: string, sNavigationPath: string) {
|
|
202
|
-
const oNavigationRestrictions = oMetaModelContext.getObject(`${sEntitySetPath}@Org.OData.Capabilities.V1.NavigationRestrictions`) as
|
|
203
|
-
| MetaModelType<NavigationRestrictionsType>
|
|
204
|
-
| undefined;
|
|
205
|
-
const aRestrictedProperties = oNavigationRestrictions && oNavigationRestrictions.RestrictedProperties;
|
|
206
|
-
return (
|
|
207
|
-
aRestrictedProperties &&
|
|
208
|
-
aRestrictedProperties.find(function (oRestrictedProperty) {
|
|
209
|
-
return (
|
|
210
|
-
oRestrictedProperty &&
|
|
211
|
-
oRestrictedProperty.NavigationProperty &&
|
|
212
|
-
oRestrictedProperty.NavigationProperty.$NavigationPropertyPath === sNavigationPath
|
|
213
|
-
);
|
|
214
|
-
})
|
|
215
|
-
);
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
function _isInNonFilterableProperties(metamodelContext: ODataMetaModel, sEntitySetPath: string, sContextPath: string) {
|
|
219
|
-
let bIsNotFilterable = false;
|
|
220
|
-
const oAnnotation = metamodelContext.getObject(`${sEntitySetPath}@Org.OData.Capabilities.V1.FilterRestrictions`) as
|
|
221
|
-
| MetaModelType<FilterRestrictionsType>
|
|
222
|
-
| undefined;
|
|
223
|
-
if (oAnnotation && oAnnotation.NonFilterableProperties) {
|
|
224
|
-
bIsNotFilterable = oAnnotation.NonFilterableProperties.some(function (property) {
|
|
225
|
-
return (
|
|
226
|
-
(property as unknown as ExpandPathType<Edm.NavigationPropertyPath>).$NavigationPropertyPath === sContextPath ||
|
|
227
|
-
property.$PropertyPath === sContextPath
|
|
228
|
-
);
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
return bIsNotFilterable;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
function _isCustomAggregate(metamodelContext: ODataMetaModel, sEntitySetPath: string, sContextPath: string) {
|
|
235
|
-
let bCustomAggregate = false;
|
|
236
|
-
const bApplySupported = metamodelContext?.getObject(sEntitySetPath + "@Org.OData.Aggregation.V1.ApplySupported") ? true : false;
|
|
237
|
-
if (bApplySupported) {
|
|
238
|
-
const oAnnotations = metamodelContext.getObject(`${sEntitySetPath}@`);
|
|
239
|
-
const oCustomAggreggates = metaModelUtil.getAllCustomAggregates(oAnnotations);
|
|
240
|
-
const aCustomAggregates = oCustomAggreggates ? Object.keys(oCustomAggreggates) : undefined;
|
|
241
|
-
if (aCustomAggregates && aCustomAggregates?.indexOf(sContextPath) > -1) {
|
|
242
|
-
bCustomAggregate = true;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return bCustomAggregate;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
// TODO rework this!
|
|
249
|
-
function _isContextPathFilterable(oModelContext: ODataMetaModel, sEntitySetPath: string, sContexPath: string) {
|
|
250
|
-
const sFullPath = `${sEntitySetPath}/${sContexPath}`,
|
|
251
|
-
aESParts = sFullPath.split("/").splice(0, 2),
|
|
252
|
-
aContext = sFullPath.split("/").splice(2);
|
|
253
|
-
let bIsNotFilterable = false,
|
|
254
|
-
sContext = "";
|
|
255
|
-
|
|
256
|
-
sEntitySetPath = aESParts.join("/");
|
|
257
|
-
|
|
258
|
-
bIsNotFilterable = aContext.some(function (item: string, index: number, array: string[]) {
|
|
259
|
-
if (sContext.length > 0) {
|
|
260
|
-
sContext += `/${item}`;
|
|
261
|
-
} else {
|
|
262
|
-
sContext = item;
|
|
263
|
-
}
|
|
264
|
-
if (index === array.length - 2) {
|
|
265
|
-
// In case of "/Customer/Set/Property" this is to check navigation restrictions of "Customer" for non-filterable properties in "Set"
|
|
266
|
-
const oNavigationRestrictions = getNavigationRestrictions(oModelContext, sEntitySetPath, item);
|
|
267
|
-
const oFilterRestrictions = oNavigationRestrictions && oNavigationRestrictions.FilterRestrictions;
|
|
268
|
-
const aNonFilterableProperties = oFilterRestrictions && oFilterRestrictions.NonFilterableProperties;
|
|
269
|
-
const sTargetPropertyPath = array[array.length - 1];
|
|
270
|
-
if (
|
|
271
|
-
aNonFilterableProperties &&
|
|
272
|
-
aNonFilterableProperties.find(function (oPropertyPath) {
|
|
273
|
-
return oPropertyPath.$PropertyPath === sTargetPropertyPath;
|
|
274
|
-
})
|
|
275
|
-
) {
|
|
276
|
-
return true;
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
if (index === array.length - 1) {
|
|
280
|
-
//last path segment
|
|
281
|
-
bIsNotFilterable = _isInNonFilterableProperties(oModelContext, sEntitySetPath, sContext);
|
|
282
|
-
} else if (oModelContext.getObject(`${sEntitySetPath}/$NavigationPropertyBinding/${item}`)) {
|
|
283
|
-
//check existing context path and initialize it
|
|
284
|
-
bIsNotFilterable = _isInNonFilterableProperties(oModelContext, sEntitySetPath, sContext);
|
|
285
|
-
sContext = "";
|
|
286
|
-
//set the new EntitySet
|
|
287
|
-
sEntitySetPath = `/${oModelContext.getObject(`${sEntitySetPath}/$NavigationPropertyBinding/${item}`)}`;
|
|
288
|
-
}
|
|
289
|
-
return bIsNotFilterable === true;
|
|
290
|
-
});
|
|
291
|
-
return bIsNotFilterable;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
// TODO check used places and rework this
|
|
295
|
-
function isPropertyFilterable(
|
|
296
|
-
metaModelContext: ODataMetaModel,
|
|
297
|
-
sEntitySetPath: string,
|
|
298
|
-
sProperty: string,
|
|
299
|
-
bSkipHiddenFilter?: boolean
|
|
300
|
-
): boolean | CompiledBindingToolkitExpression {
|
|
301
|
-
if (typeof sProperty !== "string") {
|
|
302
|
-
throw new Error("sProperty parameter must be a string");
|
|
303
|
-
}
|
|
304
|
-
let bIsFilterable;
|
|
118
|
+
// there is no navigation in entitySet path and property path
|
|
305
119
|
|
|
306
|
-
// Parameters should be rendered as filterfields
|
|
307
|
-
if (metaModelContext.getObject(`${sEntitySetPath}/@com.sap.vocabularies.Common.v1.ResultContext`)?.valueOf() === true) {
|
|
308
|
-
return true;
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
const oNavigationContext = metaModelContext.createBindingContext(`${sEntitySetPath}/${sProperty}`) as Context;
|
|
312
|
-
|
|
313
|
-
if (!bSkipHiddenFilter) {
|
|
314
|
-
if (
|
|
315
|
-
oNavigationContext.getProperty("@com.sap.vocabularies.UI.v1.Hidden") === true ||
|
|
316
|
-
oNavigationContext.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter") === true
|
|
317
|
-
) {
|
|
318
|
-
return false;
|
|
319
|
-
}
|
|
320
|
-
const sHiddenPath = oNavigationContext.getProperty("@com.sap.vocabularies.UI.v1.Hidden/$Path");
|
|
321
|
-
const sHiddenFilterPath = oNavigationContext.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter/$Path");
|
|
322
|
-
|
|
323
|
-
if (sHiddenPath && sHiddenFilterPath) {
|
|
324
|
-
return compileExpression(not(or(pathInModel(sHiddenPath), pathInModel(sHiddenFilterPath))));
|
|
325
|
-
} else if (sHiddenPath) {
|
|
326
|
-
return compileExpression(not(pathInModel(sHiddenPath)));
|
|
327
|
-
} else if (sHiddenFilterPath) {
|
|
328
|
-
return compileExpression(not(pathInModel(sHiddenFilterPath)));
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// there is no navigation in entitySet path and property path
|
|
333
|
-
bIsFilterable =
|
|
334
|
-
sEntitySetPath.split("/").length === 2 && sProperty.indexOf("/") < 0
|
|
335
|
-
? !_isInNonFilterableProperties(metaModelContext, sEntitySetPath, sProperty) &&
|
|
336
|
-
!_isCustomAggregate(metaModelContext, sEntitySetPath, sProperty)
|
|
337
|
-
: !_isContextPathFilterable(metaModelContext, sEntitySetPath, sProperty);
|
|
338
|
-
// check if type can be used for filtering
|
|
339
|
-
if (bIsFilterable && oNavigationContext) {
|
|
340
|
-
const sPropertyDataType = getPropertyDataType(oNavigationContext);
|
|
341
|
-
if (sPropertyDataType) {
|
|
342
|
-
bIsFilterable = sPropertyDataType ? isTypeFilterable(sPropertyDataType as keyof typeof DefaultTypeForEdmType) : false;
|
|
343
|
-
} else {
|
|
344
|
-
bIsFilterable = false;
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
return bIsFilterable;
|
|
349
|
-
}
|
|
350
120
|
function getShellServices(oControl: Control | Component): IShellServices {
|
|
351
121
|
return getAppComponent(oControl).getShellServices();
|
|
352
122
|
}
|
|
@@ -454,6 +224,29 @@ function _getRelatedIntents(
|
|
|
454
224
|
}
|
|
455
225
|
}
|
|
456
226
|
|
|
227
|
+
/**
|
|
228
|
+
* @description This function fetches the related intents when semantic object and action are passed from feEnvironment.getIntent() only in case of My Inbox integration
|
|
229
|
+
* @param semanticObjectAndAction This specifies the semantic object and action for fetching the intents
|
|
230
|
+
* @param oBindingContext This sepcifies the binding context for updating related apps
|
|
231
|
+
* @param appComponentSOItems This is a list of semantic items used for updating the related apps button
|
|
232
|
+
* @param aLinks This is an array comprising of related intents
|
|
233
|
+
*/
|
|
234
|
+
|
|
235
|
+
function _getRelatedIntentsWithSemanticObjectsAndAction(
|
|
236
|
+
semanticObjectAndAction: MyInboxIntent,
|
|
237
|
+
oBindingContext: Context,
|
|
238
|
+
appComponentSOItems: SemanticItem[],
|
|
239
|
+
aLinks: LinkDefinition[]
|
|
240
|
+
) {
|
|
241
|
+
if (aLinks.length > 0) {
|
|
242
|
+
const actions = [semanticObjectAndAction.action];
|
|
243
|
+
const excludedActions: [] = [];
|
|
244
|
+
const soMappings: [] = [];
|
|
245
|
+
const targetParams = { navigationContexts: oBindingContext, semanticObjectMapping: soMappings };
|
|
246
|
+
_getRelatedAppsMenuItems(aLinks, excludedActions, targetParams, appComponentSOItems, actions);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
|
|
457
250
|
type SemanticObjectConfig = {
|
|
458
251
|
additionalSemanticObjects: Record<string, SemanticObject>;
|
|
459
252
|
};
|
|
@@ -468,7 +261,8 @@ async function updateRelateAppsModel(
|
|
|
468
261
|
oObjectPageLayout: ObjectPageLayout,
|
|
469
262
|
aSemKeys: { $PropertyPath: string }[],
|
|
470
263
|
oMetaModel: ODataMetaModel,
|
|
471
|
-
oMetaPath: string
|
|
264
|
+
oMetaPath: string,
|
|
265
|
+
appComponent: AppComponent
|
|
472
266
|
): Promise<RelatedAppsConfig[]> {
|
|
473
267
|
const oShellServiceHelper: IShellServices = getShellServices(oObjectPageLayout);
|
|
474
268
|
const oParam: Record<string, unknown> = {};
|
|
@@ -525,6 +319,21 @@ async function updateRelateAppsModel(
|
|
|
525
319
|
);
|
|
526
320
|
}
|
|
527
321
|
}
|
|
322
|
+
|
|
323
|
+
// appComponentSOItems is updated in case of My Inbox integration when semantic object and action are passed from feEnvironment.getIntent() method
|
|
324
|
+
// In other cases it remains as an empty list
|
|
325
|
+
// We concat this list towards the end with aManifestSOItems
|
|
326
|
+
|
|
327
|
+
const appComponentSOItems: SemanticItem[] = [];
|
|
328
|
+
const componentData: ComponentData = appComponent.getComponentData();
|
|
329
|
+
if (componentData.feEnvironment && componentData.feEnvironment.getIntent()) {
|
|
330
|
+
const intent: MyInboxIntent = componentData.feEnvironment.getIntent();
|
|
331
|
+
semanticObjectIntents = await Promise.resolve(
|
|
332
|
+
_getSOIntents(oShellServiceHelper, oObjectPageLayout, intent.semanticObject, oParam)
|
|
333
|
+
);
|
|
334
|
+
_getRelatedIntentsWithSemanticObjectsAndAction(intent, oBindingContext, appComponentSOItems, semanticObjectIntents);
|
|
335
|
+
}
|
|
336
|
+
|
|
528
337
|
const internalModelContext = oObjectPageLayout.getBindingContext("internal") as InternalModelContext;
|
|
529
338
|
const aLinks = await fnGetParseShellHashAndGetLinks();
|
|
530
339
|
if (aLinks) {
|
|
@@ -551,7 +360,7 @@ async function updateRelateAppsModel(
|
|
|
551
360
|
_getRelatedAppsMenuItems(aLinks, aExcludedActions, oTargetParams, aAnnotationsSOItems);
|
|
552
361
|
|
|
553
362
|
aManifestSOItems.forEach(function ({ targetSemObject }) {
|
|
554
|
-
if (aAnnotationsSOItems[0]
|
|
363
|
+
if (aAnnotationsSOItems[0]?.targetSemObject === targetSemObject) {
|
|
555
364
|
isSemanticObjectHasSameTargetInManifest = true;
|
|
556
365
|
}
|
|
557
366
|
});
|
|
@@ -559,15 +368,14 @@ async function updateRelateAppsModel(
|
|
|
559
368
|
// remove all actions from current hash application if manifest contains empty allowedActions
|
|
560
369
|
if (
|
|
561
370
|
oManifestData.additionalSemanticObjects &&
|
|
371
|
+
aAnnotationsSOItems[0] &&
|
|
562
372
|
oManifestData.additionalSemanticObjects[aAnnotationsSOItems[0].targetSemObject] &&
|
|
563
373
|
oManifestData.additionalSemanticObjects[aAnnotationsSOItems[0].targetSemObject].allowedActions?.length === 0
|
|
564
374
|
) {
|
|
565
375
|
isSemanticObjectHasSameTargetInManifest = true;
|
|
566
376
|
}
|
|
567
|
-
|
|
568
|
-
aRelatedAppsMenuItems = isSemanticObjectHasSameTargetInManifest
|
|
569
|
-
? aManifestSOItems
|
|
570
|
-
: aManifestSOItems.concat(aAnnotationsSOItems);
|
|
377
|
+
const soItems = aManifestSOItems.concat(appComponentSOItems);
|
|
378
|
+
aRelatedAppsMenuItems = isSemanticObjectHasSameTargetInManifest ? soItems : soItems.concat(aAnnotationsSOItems);
|
|
571
379
|
// If no app in list, related apps button will be hidden
|
|
572
380
|
internalModelContext.setProperty("relatedApps/visibility", aRelatedAppsMenuItems.length > 0);
|
|
573
381
|
internalModelContext.setProperty("relatedApps/items", aRelatedAppsMenuItems);
|
|
@@ -621,9 +429,9 @@ function _getSemanticObjectAnnotations(oEntityAnnotations: Record<string, unknow
|
|
|
621
429
|
return oSemanticObjectAnnotations;
|
|
622
430
|
}
|
|
623
431
|
|
|
624
|
-
function fnUpdateRelatedAppsDetails(oObjectPageLayout: ObjectPageLayout) {
|
|
432
|
+
function fnUpdateRelatedAppsDetails(oObjectPageLayout: ObjectPageLayout, appComponent: AppComponent) {
|
|
625
433
|
const oMetaModel = oObjectPageLayout.getModel().getMetaModel() as ODataMetaModel;
|
|
626
|
-
const oBindingContext = oObjectPageLayout.getBindingContext() as
|
|
434
|
+
const oBindingContext = oObjectPageLayout.getBindingContext() as ODataV4Context;
|
|
627
435
|
const path = (oBindingContext && oBindingContext.getPath()) || "";
|
|
628
436
|
const oMetaPath = oMetaModel.getMetaPath(path);
|
|
629
437
|
// Semantic Key Vocabulary
|
|
@@ -636,13 +444,21 @@ function fnUpdateRelatedAppsDetails(oObjectPageLayout: ObjectPageLayout) {
|
|
|
636
444
|
oBindingContext
|
|
637
445
|
.requestObject()
|
|
638
446
|
.then(async function (requestedObject: Record<string, unknown> | undefined) {
|
|
639
|
-
return updateRelateAppsModel(
|
|
447
|
+
return CommonUtils.updateRelateAppsModel(
|
|
448
|
+
oBindingContext,
|
|
449
|
+
requestedObject,
|
|
450
|
+
oObjectPageLayout,
|
|
451
|
+
aSemKeys,
|
|
452
|
+
oMetaModel,
|
|
453
|
+
oMetaPath,
|
|
454
|
+
appComponent
|
|
455
|
+
);
|
|
640
456
|
})
|
|
641
457
|
.catch(function (oError: unknown) {
|
|
642
458
|
Log.error("Cannot update the related app details", oError as string);
|
|
643
459
|
});
|
|
644
460
|
} else {
|
|
645
|
-
return updateRelateAppsModel(oBindingContext, oEntry, oObjectPageLayout, aSemKeys, oMetaModel, oMetaPath);
|
|
461
|
+
return CommonUtils.updateRelateAppsModel(oBindingContext, oEntry, oObjectPageLayout, aSemKeys, oMetaModel, oMetaPath, appComponent);
|
|
646
462
|
}
|
|
647
463
|
}
|
|
648
464
|
|
|
@@ -726,7 +542,7 @@ type UnknownODataObject = {
|
|
|
726
542
|
function removeSensitiveData(aAttributes: UnknownODataObject[], oMetaModel: ODataMetaModel) {
|
|
727
543
|
const aOutAttributes = [];
|
|
728
544
|
for (let i = 0; i < aAttributes.length; i++) {
|
|
729
|
-
const sEntitySet = aAttributes[i].entitySet
|
|
545
|
+
const sEntitySet = aAttributes[i].entitySet!,
|
|
730
546
|
oAttribute = aAttributes[i].contextData;
|
|
731
547
|
|
|
732
548
|
delete oAttribute["@odata.context"];
|
|
@@ -860,6 +676,7 @@ function fnUpdateDataFieldForIBNButtonsVisibility(aIBNActions: Control[], oView:
|
|
|
860
676
|
}
|
|
861
677
|
);
|
|
862
678
|
}
|
|
679
|
+
return;
|
|
863
680
|
})
|
|
864
681
|
.catch(function (oError: unknown) {
|
|
865
682
|
Log.error("Cannot retrieve the links from the shell service", oError as string);
|
|
@@ -881,49 +698,8 @@ function fnUpdateDataFieldForIBNButtonsVisibility(aIBNActions: Control[], oView:
|
|
|
881
698
|
}
|
|
882
699
|
}
|
|
883
700
|
|
|
884
|
-
function
|
|
885
|
-
|
|
886
|
-
if (oResourceBundle) {
|
|
887
|
-
if (sEntitySetName) {
|
|
888
|
-
// There are console errors logged when making calls to getText for keys that are not defined in the resource bundle
|
|
889
|
-
// for instance keys which are supposed to be provided by the application, e.g, <key>|<entitySet> to override instance specific text
|
|
890
|
-
// hence check if text exists (using "hasText") in the resource bundle before calling "getText"
|
|
891
|
-
|
|
892
|
-
// "hasText" only checks for the key in the immediate resource bundle and not it's custom bundles
|
|
893
|
-
// hence we need to do this recurrsively to check if the key exists in any of the bundles the forms the FE resource bundle
|
|
894
|
-
const bResourceKeyExists = checkIfResourceKeyExists(
|
|
895
|
-
(oResourceBundle as InternalResourceBundle).aCustomBundles,
|
|
896
|
-
`${sFrameworkKey}|${sEntitySetName}`
|
|
897
|
-
);
|
|
898
|
-
|
|
899
|
-
// if resource key with entity set name for instance specific text overriding is provided by the application
|
|
900
|
-
// then use the same key otherwise use the Framework key
|
|
901
|
-
sResourceKey = bResourceKeyExists ? `${sFrameworkKey}|${sEntitySetName}` : sFrameworkKey;
|
|
902
|
-
}
|
|
903
|
-
return oResourceBundle.getText(sResourceKey, parameters);
|
|
904
|
-
}
|
|
905
|
-
|
|
906
|
-
// do not allow override so get text from the internal bundle directly
|
|
907
|
-
oResourceBundle = Core.getLibraryResourceBundle("sap.fe.core");
|
|
908
|
-
return oResourceBundle.getText(sResourceKey, parameters);
|
|
909
|
-
}
|
|
910
|
-
|
|
911
|
-
function checkIfResourceKeyExists(aCustomBundles: InternalResourceBundle[], sKey: string) {
|
|
912
|
-
if (aCustomBundles.length) {
|
|
913
|
-
for (let i = aCustomBundles.length - 1; i >= 0; i--) {
|
|
914
|
-
const sValue = aCustomBundles[i].hasText(sKey);
|
|
915
|
-
// text found return true
|
|
916
|
-
if (sValue) {
|
|
917
|
-
return true;
|
|
918
|
-
}
|
|
919
|
-
checkIfResourceKeyExists(aCustomBundles[i].aCustomBundles, sKey);
|
|
920
|
-
}
|
|
921
|
-
}
|
|
922
|
-
return false;
|
|
923
|
-
}
|
|
924
|
-
|
|
925
|
-
function getActionPath(actionContext: Context, bReturnOnlyPath: boolean, sActionName?: string, bCheckStaticValue?: boolean) {
|
|
926
|
-
sActionName = !sActionName ? actionContext.getObject(actionContext.getPath()).toString() : sActionName;
|
|
701
|
+
function getActionPath(actionContext: Context, bReturnOnlyPath: boolean, inActionName?: string, bCheckStaticValue?: boolean) {
|
|
702
|
+
const sActionName: string = !inActionName ? actionContext.getObject(actionContext.getPath()).toString() : inActionName;
|
|
927
703
|
let sContextPath = actionContext.getPath().split("/@")[0];
|
|
928
704
|
const sEntityTypeName = (actionContext.getObject(sContextPath) as MetaModelEntityType).$Type;
|
|
929
705
|
const sEntityName = getEntitySetName(actionContext.getModel() as ODataMetaModel, sEntityTypeName);
|
|
@@ -1010,7 +786,7 @@ export type _RequestedProperty = {
|
|
|
1010
786
|
sDynamicActionEnabledPath: string;
|
|
1011
787
|
};
|
|
1012
788
|
async function requestProperty(
|
|
1013
|
-
oSelectedContext:
|
|
789
|
+
oSelectedContext: ODataV4Context,
|
|
1014
790
|
sAction: string,
|
|
1015
791
|
sProperty: string,
|
|
1016
792
|
sDynamicActionEnabledPath: string
|
|
@@ -1020,13 +796,13 @@ async function requestProperty(
|
|
|
1020
796
|
? requestSingletonProperty(sProperty, oSelectedContext.getModel())
|
|
1021
797
|
: _requestObject(sAction, oSelectedContext, sProperty);
|
|
1022
798
|
|
|
1023
|
-
return oPromise.then(
|
|
1024
|
-
return
|
|
799
|
+
return oPromise.then(function (vPropertyValue: unknown) {
|
|
800
|
+
return {
|
|
1025
801
|
vPropertyValue: vPropertyValue,
|
|
1026
802
|
oSelectedContext: oSelectedContext,
|
|
1027
803
|
sAction: sAction,
|
|
1028
804
|
sDynamicActionEnabledPath: sDynamicActionEnabledPath
|
|
1029
|
-
}
|
|
805
|
+
};
|
|
1030
806
|
});
|
|
1031
807
|
}
|
|
1032
808
|
|
|
@@ -1051,6 +827,7 @@ async function setContextsBasedOnOperationAvailable(
|
|
|
1051
827
|
});
|
|
1052
828
|
setDynamicActionContexts(oInternalModelContext, aResults[0].sAction, aApplicableContexts, aNotApplicableContexts);
|
|
1053
829
|
}
|
|
830
|
+
return;
|
|
1054
831
|
})
|
|
1055
832
|
.catch(function (oError: unknown) {
|
|
1056
833
|
Log.trace("Cannot retrieve property value from path", oError as string);
|
|
@@ -1331,7 +1108,7 @@ function addSelectOptionsToConditions(
|
|
|
1331
1108
|
aValidOperators: string[],
|
|
1332
1109
|
aSemanticDateOperators: string[] = [];
|
|
1333
1110
|
|
|
1334
|
-
if (isParameter ||
|
|
1111
|
+
if (isParameter || MetaModelFunction.isPropertyFilterable(metaModelContext, sContextPath, sConditionProp, true)) {
|
|
1335
1112
|
const oPropertyMetadata = oValidProperties[sConditionProp];
|
|
1336
1113
|
aSelectOptions = oSelectionVariant.getSelectOption(sSelectOptionProp) as SelectOption[];
|
|
1337
1114
|
const settings = getFilterConfigurationSetting(oViewData, sConditionProp);
|
|
@@ -1833,156 +1610,6 @@ function addDefaultDisplayCurrency(
|
|
|
1833
1610
|
}
|
|
1834
1611
|
}
|
|
1835
1612
|
|
|
1836
|
-
function getNonComputedVisibleFields(metaModelContext: ODataMetaModel, sPath: string, oView?: View) {
|
|
1837
|
-
const aTechnicalKeys = metaModelContext.getObject(`${sPath}/`).$Key;
|
|
1838
|
-
const aNonComputedVisibleFields: unknown[] = [];
|
|
1839
|
-
const aImmutableVisibleFields: unknown[] = [];
|
|
1840
|
-
const oEntityType = metaModelContext.getObject(`${sPath}/`);
|
|
1841
|
-
for (const item in oEntityType) {
|
|
1842
|
-
if (oEntityType[item].$kind && oEntityType[item].$kind === "Property") {
|
|
1843
|
-
const oAnnotations = (metaModelContext.getObject(`${sPath}/${item}@`) || {}) as Record<string, unknown>,
|
|
1844
|
-
bIsKey = aTechnicalKeys.indexOf(item) > -1,
|
|
1845
|
-
bIsImmutable = oAnnotations["@Org.OData.Core.V1.Immutable"],
|
|
1846
|
-
bIsNonComputed = !oAnnotations["@Org.OData.Core.V1.Computed"],
|
|
1847
|
-
bIsVisible = !oAnnotations["@com.sap.vocabularies.UI.v1.Hidden"],
|
|
1848
|
-
bIsComputedDefaultValue = oAnnotations["@Org.OData.Core.V1.ComputedDefaultValue"],
|
|
1849
|
-
bIsKeyComputedDefaultValueWithText =
|
|
1850
|
-
bIsKey && oEntityType[item].$Type === "Edm.Guid"
|
|
1851
|
-
? bIsComputedDefaultValue && oAnnotations["@com.sap.vocabularies.Common.v1.Text"]
|
|
1852
|
-
: false;
|
|
1853
|
-
if (
|
|
1854
|
-
(bIsKeyComputedDefaultValueWithText || (bIsKey && oEntityType[item].$Type !== "Edm.Guid")) &&
|
|
1855
|
-
bIsNonComputed &&
|
|
1856
|
-
bIsVisible
|
|
1857
|
-
) {
|
|
1858
|
-
aNonComputedVisibleFields.push(item);
|
|
1859
|
-
} else if (bIsImmutable && bIsNonComputed && bIsVisible) {
|
|
1860
|
-
aImmutableVisibleFields.push(item);
|
|
1861
|
-
}
|
|
1862
|
-
|
|
1863
|
-
if (!bIsNonComputed && bIsComputedDefaultValue && oView) {
|
|
1864
|
-
const oDiagnostics = getAppComponent(oView).getDiagnostics();
|
|
1865
|
-
const sMessage = "Core.ComputedDefaultValue is ignored as Core.Computed is already set to true";
|
|
1866
|
-
oDiagnostics.addIssue(
|
|
1867
|
-
IssueCategory.Annotation,
|
|
1868
|
-
IssueSeverity.Medium,
|
|
1869
|
-
sMessage,
|
|
1870
|
-
IssueCategoryType,
|
|
1871
|
-
IssueCategoryType?.Annotations?.IgnoredAnnotation
|
|
1872
|
-
);
|
|
1873
|
-
}
|
|
1874
|
-
}
|
|
1875
|
-
}
|
|
1876
|
-
const aRequiredProperties = CommonUtils.getRequiredPropertiesFromInsertRestrictions(sPath, metaModelContext);
|
|
1877
|
-
if (aRequiredProperties.length) {
|
|
1878
|
-
aRequiredProperties.forEach(function (sProperty: string) {
|
|
1879
|
-
const oAnnotations = metaModelContext.getObject(`${sPath}/${sProperty}@`) as Record<string, unknown>,
|
|
1880
|
-
bIsVisible = !oAnnotations || !oAnnotations["@com.sap.vocabularies.UI.v1.Hidden"];
|
|
1881
|
-
if (bIsVisible && aNonComputedVisibleFields.indexOf(sProperty) === -1 && aImmutableVisibleFields.indexOf(sProperty) === -1) {
|
|
1882
|
-
aNonComputedVisibleFields.push(sProperty);
|
|
1883
|
-
}
|
|
1884
|
-
});
|
|
1885
|
-
}
|
|
1886
|
-
return aNonComputedVisibleFields.concat(aImmutableVisibleFields);
|
|
1887
|
-
}
|
|
1888
|
-
|
|
1889
|
-
function getRequiredProperties(sPath: string, metaModelContext: ODataMetaModel, bCheckUpdateRestrictions = false) {
|
|
1890
|
-
const aRequiredProperties: string[] = [];
|
|
1891
|
-
let aRequiredPropertiesWithPaths: { $PropertyPath: string }[] = [];
|
|
1892
|
-
const navigationText = "$NavigationPropertyBinding";
|
|
1893
|
-
let oEntitySetAnnotations;
|
|
1894
|
-
if (sPath.endsWith("$")) {
|
|
1895
|
-
// if sPath comes with a $ in the end, removing it as it is of no significance
|
|
1896
|
-
sPath = sPath.replace("/$", "");
|
|
1897
|
-
}
|
|
1898
|
-
const entityTypePathParts = sPath.replaceAll("%2F", "/").split("/").filter(ModelHelper.filterOutNavPropBinding);
|
|
1899
|
-
const entitySetPath = ModelHelper.getEntitySetPath(sPath, metaModelContext);
|
|
1900
|
-
const entitySetPathParts = entitySetPath.split("/").filter(ModelHelper.filterOutNavPropBinding);
|
|
1901
|
-
const isContainment = metaModelContext.getObject(`/${entityTypePathParts.join("/")}/$ContainsTarget`);
|
|
1902
|
-
const containmentNavPath = isContainment && entityTypePathParts[entityTypePathParts.length - 1];
|
|
1903
|
-
|
|
1904
|
-
//Restrictions directly at Entity Set
|
|
1905
|
-
//e.g. FR in "NS.EntityContainer/SalesOrderManage" ContextPath: /SalesOrderManage
|
|
1906
|
-
if (!isContainment) {
|
|
1907
|
-
oEntitySetAnnotations = metaModelContext.getObject(`${entitySetPath}@`);
|
|
1908
|
-
}
|
|
1909
|
-
if (entityTypePathParts.length > 1) {
|
|
1910
|
-
const navPath = isContainment ? containmentNavPath : entitySetPathParts[entitySetPathParts.length - 1];
|
|
1911
|
-
const parentEntitySetPath = isContainment ? entitySetPath : `/${entitySetPathParts.slice(0, -1).join(`/${navigationText}/`)}`;
|
|
1912
|
-
//Navigation restrictions
|
|
1913
|
-
//e.g. Parent "/Customer" with NavigationPropertyPath="Set" ContextPath: Customer/Set
|
|
1914
|
-
const oNavRest = CommonUtils.getNavigationRestrictions(metaModelContext, parentEntitySetPath, navPath.replaceAll("%2F", "/"));
|
|
1915
|
-
|
|
1916
|
-
if (oNavRest !== undefined && CommonUtils.hasRestrictedPropertiesInAnnotations(oNavRest, true, bCheckUpdateRestrictions)) {
|
|
1917
|
-
aRequiredPropertiesWithPaths = bCheckUpdateRestrictions
|
|
1918
|
-
? oNavRest["UpdateRestrictions"]!.RequiredProperties || []
|
|
1919
|
-
: oNavRest["InsertRestrictions"]!.RequiredProperties || [];
|
|
1920
|
-
}
|
|
1921
|
-
if (
|
|
1922
|
-
(!aRequiredPropertiesWithPaths || !aRequiredPropertiesWithPaths.length) &&
|
|
1923
|
-
CommonUtils.hasRestrictedPropertiesInAnnotations(oEntitySetAnnotations, false, bCheckUpdateRestrictions)
|
|
1924
|
-
) {
|
|
1925
|
-
aRequiredPropertiesWithPaths = CommonUtils.getRequiredPropertiesFromAnnotations(
|
|
1926
|
-
oEntitySetAnnotations,
|
|
1927
|
-
bCheckUpdateRestrictions
|
|
1928
|
-
);
|
|
1929
|
-
}
|
|
1930
|
-
} else if (CommonUtils.hasRestrictedPropertiesInAnnotations(oEntitySetAnnotations, false, bCheckUpdateRestrictions)) {
|
|
1931
|
-
aRequiredPropertiesWithPaths = CommonUtils.getRequiredPropertiesFromAnnotations(oEntitySetAnnotations, bCheckUpdateRestrictions);
|
|
1932
|
-
}
|
|
1933
|
-
aRequiredPropertiesWithPaths.forEach(function (oRequiredProperty) {
|
|
1934
|
-
const sProperty = oRequiredProperty.$PropertyPath;
|
|
1935
|
-
aRequiredProperties.push(sProperty);
|
|
1936
|
-
});
|
|
1937
|
-
return aRequiredProperties;
|
|
1938
|
-
}
|
|
1939
|
-
|
|
1940
|
-
function getRequiredPropertiesFromInsertRestrictions(sPath: string, oMetaModelContext: ODataMetaModel) {
|
|
1941
|
-
return CommonUtils.getRequiredProperties(sPath, oMetaModelContext);
|
|
1942
|
-
}
|
|
1943
|
-
|
|
1944
|
-
function getRequiredPropertiesFromUpdateRestrictions(sPath: string, oMetaModelContext: ODataMetaModel) {
|
|
1945
|
-
return CommonUtils.getRequiredProperties(sPath, oMetaModelContext, true);
|
|
1946
|
-
}
|
|
1947
|
-
|
|
1948
|
-
function getRequiredPropertiesFromAnnotations(oAnnotations: MetaModelEntitySetAnnotation, bCheckUpdateRestrictions = false) {
|
|
1949
|
-
if (bCheckUpdateRestrictions) {
|
|
1950
|
-
return oAnnotations["@Org.OData.Capabilities.V1.UpdateRestrictions"]?.RequiredProperties || [];
|
|
1951
|
-
}
|
|
1952
|
-
return oAnnotations["@Org.OData.Capabilities.V1.InsertRestrictions"]?.RequiredProperties || [];
|
|
1953
|
-
}
|
|
1954
|
-
|
|
1955
|
-
function hasRestrictedPropertiesInAnnotations(
|
|
1956
|
-
oAnnotations: MetaModelType<NavigationPropertyRestrictionTypes> | MetaModelEntitySetAnnotation | undefined,
|
|
1957
|
-
bIsNavigationRestrictions = false,
|
|
1958
|
-
bCheckUpdateRestrictions = false
|
|
1959
|
-
) {
|
|
1960
|
-
if (bIsNavigationRestrictions) {
|
|
1961
|
-
const oNavAnnotations = oAnnotations as MetaModelType<NavigationPropertyRestrictionTypes>;
|
|
1962
|
-
if (bCheckUpdateRestrictions) {
|
|
1963
|
-
return oNavAnnotations && oNavAnnotations["UpdateRestrictions"] && oNavAnnotations["UpdateRestrictions"].RequiredProperties
|
|
1964
|
-
? true
|
|
1965
|
-
: false;
|
|
1966
|
-
}
|
|
1967
|
-
return oNavAnnotations && oNavAnnotations["InsertRestrictions"] && oNavAnnotations["InsertRestrictions"].RequiredProperties
|
|
1968
|
-
? true
|
|
1969
|
-
: false;
|
|
1970
|
-
} else if (bCheckUpdateRestrictions) {
|
|
1971
|
-
const oEntityAnnotation = oAnnotations as MetaModelEntitySetAnnotation;
|
|
1972
|
-
return oEntityAnnotation &&
|
|
1973
|
-
oEntityAnnotation["@Org.OData.Capabilities.V1.UpdateRestrictions"] &&
|
|
1974
|
-
oEntityAnnotation["@Org.OData.Capabilities.V1.UpdateRestrictions"].RequiredProperties
|
|
1975
|
-
? true
|
|
1976
|
-
: false;
|
|
1977
|
-
}
|
|
1978
|
-
const oEntityAnnotation = oAnnotations as MetaModelEntitySetAnnotation;
|
|
1979
|
-
return oEntityAnnotation &&
|
|
1980
|
-
oEntityAnnotation["@Org.OData.Capabilities.V1.InsertRestrictions"] &&
|
|
1981
|
-
oEntityAnnotation["@Org.OData.Capabilities.V1.InsertRestrictions"].RequiredProperties
|
|
1982
|
-
? true
|
|
1983
|
-
: false;
|
|
1984
|
-
}
|
|
1985
|
-
|
|
1986
1613
|
type UserDefaultParameter = {
|
|
1987
1614
|
$Name: string;
|
|
1988
1615
|
getPath?(): string;
|
|
@@ -2030,8 +1657,7 @@ async function setUserDefaults(
|
|
|
2030
1657
|
} else if (oStartupParameters[sParameterName]) {
|
|
2031
1658
|
oModel.setProperty(sPropertyName, oStartupParameters[sParameterName][0]);
|
|
2032
1659
|
} else if (aExtendedParameters.length > 0) {
|
|
2033
|
-
for (const
|
|
2034
|
-
const oExtendedParameter = aExtendedParameters[i];
|
|
1660
|
+
for (const oExtendedParameter of aExtendedParameters) {
|
|
2035
1661
|
if (oExtendedParameter.PropertyName === sParameterName) {
|
|
2036
1662
|
const oRange = oExtendedParameter.Ranges.length
|
|
2037
1663
|
? oExtendedParameter.Ranges[oExtendedParameter.Ranges.length - 1]
|
|
@@ -2298,6 +1924,7 @@ async function fnUpdateSemanticTargetsModel(
|
|
|
2298
1924
|
);
|
|
2299
1925
|
return oFinalSemanticObjects;
|
|
2300
1926
|
}
|
|
1927
|
+
return;
|
|
2301
1928
|
})
|
|
2302
1929
|
.catch(function (oError: unknown) {
|
|
2303
1930
|
Log.error("fnUpdateSemanticTargetsModel: Cannot read links", oError as string);
|
|
@@ -2355,9 +1982,9 @@ function fnGetSemanticTargetsFromPageModel(oController: PageController, sPageMod
|
|
|
2355
1982
|
return list;
|
|
2356
1983
|
}
|
|
2357
1984
|
if (obj instanceof Array) {
|
|
2358
|
-
|
|
2359
|
-
list = list.concat(_fnfindValuesHelper(
|
|
2360
|
-
}
|
|
1985
|
+
obj.forEach((item) => {
|
|
1986
|
+
list = list.concat(_fnfindValuesHelper(item, key, []));
|
|
1987
|
+
});
|
|
2361
1988
|
return list;
|
|
2362
1989
|
}
|
|
2363
1990
|
if (obj[key]) {
|
|
@@ -2530,7 +2157,7 @@ function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaMode
|
|
|
2530
2157
|
const entitySetPath = ModelHelper.getEntitySetPath(entityPath, oContext);
|
|
2531
2158
|
const entitySetPathParts = entitySetPath.split("/").filter(ModelHelper.filterOutNavPropBinding);
|
|
2532
2159
|
const isContainment = oContext.getObject(`${entityTypePath}$ContainsTarget`);
|
|
2533
|
-
const containmentNavPath = isContainment && entityTypePathParts[entityTypePathParts.length - 1];
|
|
2160
|
+
const containmentNavPath = !!isContainment && entityTypePathParts[entityTypePathParts.length - 1];
|
|
2534
2161
|
|
|
2535
2162
|
//LEAST PRIORITY - Filter restrictions directly at Entity Set
|
|
2536
2163
|
//e.g. FR in "NS.EntityContainer/SalesOrderManage" ContextPath: /SalesOrderManage
|
|
@@ -2546,7 +2173,7 @@ function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaMode
|
|
|
2546
2173
|
}
|
|
2547
2174
|
|
|
2548
2175
|
if (entityTypePathParts.length > 1) {
|
|
2549
|
-
const navPath = isContainment ? containmentNavPath : entitySetPathParts[entitySetPathParts.length - 1];
|
|
2176
|
+
const navPath = isContainment ? (containmentNavPath as string) : entitySetPathParts[entitySetPathParts.length - 1];
|
|
2550
2177
|
// In case of containment we take entitySet provided as parent. And in case of normal we would remove the last navigation from entitySetPath.
|
|
2551
2178
|
const parentEntitySetPath = isContainment ? entitySetPath : `/${entitySetPathParts.slice(0, -1).join(`/${navigationText}/`)}`;
|
|
2552
2179
|
//THIRD HIGHEST PRIORITY - Reading property path restrictions - Annotation at main entity but directly on navigation property path
|
|
@@ -2591,7 +2218,7 @@ function getFilterRestrictionsByPath(entityPath: string, oContext: ODataMetaMode
|
|
|
2591
2218
|
|
|
2592
2219
|
//SECOND HIGHEST priority - Navigation restrictions
|
|
2593
2220
|
//e.g. Parent "/Customer" with NavigationPropertyPath="Set" ContextPath: Customer/Set
|
|
2594
|
-
const oNavRestrictions =
|
|
2221
|
+
const oNavRestrictions = MetaModelFunction.getNavigationRestrictions(oContext, parentEntitySetPath, navPath.replaceAll("%2F", "/"));
|
|
2595
2222
|
const oNavFilterRest = oNavRestrictions && (oNavRestrictions["FilterRestrictions"] as MetaModelType<FilterRestrictionsType>);
|
|
2596
2223
|
const navResReqProps = getFilterRestrictions(oNavFilterRest, "RequiredProperties") || [];
|
|
2597
2224
|
oRet.RequiredProperties = uniqueSort(oRet.RequiredProperties.concat(navResReqProps));
|
|
@@ -2660,7 +2287,7 @@ async function templateControlFragment(
|
|
|
2660
2287
|
.then(async function (oFragment: Element): Promise<Element | Control | Control[]> {
|
|
2661
2288
|
const oControl = oFragment.firstElementChild;
|
|
2662
2289
|
if (!!oOptions.isXML && oControl) {
|
|
2663
|
-
return
|
|
2290
|
+
return oControl;
|
|
2664
2291
|
}
|
|
2665
2292
|
return Fragment.load({
|
|
2666
2293
|
id: oOptions.id,
|
|
@@ -2673,7 +2300,7 @@ async function templateControlFragment(
|
|
|
2673
2300
|
|
|
2674
2301
|
function getSingletonPath(path: string, metaModel: ODataMetaModel): string | undefined {
|
|
2675
2302
|
const parts = path.split("/").filter(Boolean),
|
|
2676
|
-
propertyName = parts.pop()
|
|
2303
|
+
propertyName = parts.pop()!,
|
|
2677
2304
|
navigationPath = parts.join("/"),
|
|
2678
2305
|
entitySet = navigationPath && metaModel.getObject(`/${navigationPath}`);
|
|
2679
2306
|
if (entitySet?.$kind === "Singleton") {
|
|
@@ -2722,6 +2349,7 @@ function addEventToBindingInfo(oControl: Control, sEventName: string, fHandler:
|
|
|
2722
2349
|
.then(function () {
|
|
2723
2350
|
oBindingInfo = oControl.getControlDelegate()._getChart(oControl).getBindingInfo("data");
|
|
2724
2351
|
setBindingInfo();
|
|
2352
|
+
return;
|
|
2725
2353
|
})
|
|
2726
2354
|
.catch(function (sError: unknown) {
|
|
2727
2355
|
Log.error(sError as string);
|
|
@@ -2786,14 +2414,118 @@ function _fntranslatedTextFromExpBindingString(expBinding: string, control: Cont
|
|
|
2786
2414
|
function isSmallDevice() {
|
|
2787
2415
|
return !system.desktop || Device.resize.width <= 320;
|
|
2788
2416
|
}
|
|
2417
|
+
/**
|
|
2418
|
+
* Get filter information for a SelectionVariant annotation.
|
|
2419
|
+
*
|
|
2420
|
+
* @param oControl The table/chart instance
|
|
2421
|
+
* @param selectionVariantPath Relative SelectionVariant annotation path
|
|
2422
|
+
* @param isChart
|
|
2423
|
+
* @returns Information on filters
|
|
2424
|
+
* filters: array of sap.ui.model.filters
|
|
2425
|
+
* text: Text property of the SelectionVariant
|
|
2426
|
+
* @private
|
|
2427
|
+
* @ui5-restricted
|
|
2428
|
+
*/
|
|
2429
|
+
interface ISelectionOption {
|
|
2430
|
+
PropertyName: { $PropertyPath: string };
|
|
2431
|
+
Ranges: {
|
|
2432
|
+
[key: string]: {
|
|
2433
|
+
Option: { $EnumMember: String };
|
|
2434
|
+
Low: unknown;
|
|
2435
|
+
High: unknown;
|
|
2436
|
+
};
|
|
2437
|
+
};
|
|
2438
|
+
}
|
|
2439
|
+
function getFiltersInfoForSV(oControl: Control | MDCChart | MDCTable, selectionVariantPath: string, isChart?: boolean) {
|
|
2440
|
+
const sEntityTypePath = oControl.data("entityType"),
|
|
2441
|
+
oMetaModel = CommonUtils.getAppComponent(oControl as Control).getMetaModel(),
|
|
2442
|
+
mPropertyFilters: Record<string, Filter[]> = {},
|
|
2443
|
+
aFilters = [],
|
|
2444
|
+
aPaths: string[] = [];
|
|
2445
|
+
let sText = "";
|
|
2446
|
+
let oSelectionVariant = oMetaModel.getObject(`${sEntityTypePath}${selectionVariantPath}`);
|
|
2447
|
+
// for chart the structure varies hence read it from main object
|
|
2448
|
+
if (isChart) {
|
|
2449
|
+
oSelectionVariant = oSelectionVariant.SelectionVariant;
|
|
2450
|
+
}
|
|
2451
|
+
if (oSelectionVariant) {
|
|
2452
|
+
sText = oSelectionVariant.Text;
|
|
2453
|
+
(oSelectionVariant.SelectOptions || [])
|
|
2454
|
+
.filter(function (oSelectOption: ISelectionOption) {
|
|
2455
|
+
return oSelectOption && oSelectOption.PropertyName && oSelectOption.PropertyName.$PropertyPath;
|
|
2456
|
+
})
|
|
2457
|
+
.forEach(function (oSelectOption: ISelectionOption) {
|
|
2458
|
+
const sPath = oSelectOption.PropertyName.$PropertyPath;
|
|
2459
|
+
if (!aPaths.includes(sPath)) {
|
|
2460
|
+
aPaths.push(sPath);
|
|
2461
|
+
}
|
|
2462
|
+
for (const j in oSelectOption.Ranges) {
|
|
2463
|
+
const oRange = oSelectOption.Ranges[j];
|
|
2464
|
+
mPropertyFilters[sPath] = (mPropertyFilters[sPath] || []).concat(
|
|
2465
|
+
new Filter(sPath, oRange.Option?.$EnumMember?.split("/").pop() as undefined, oRange.Low, oRange.High)
|
|
2466
|
+
);
|
|
2467
|
+
}
|
|
2468
|
+
});
|
|
2469
|
+
|
|
2470
|
+
for (const sPropertyPath in mPropertyFilters) {
|
|
2471
|
+
aFilters.push(
|
|
2472
|
+
new Filter({
|
|
2473
|
+
filters: mPropertyFilters[sPropertyPath],
|
|
2474
|
+
and: false
|
|
2475
|
+
})
|
|
2476
|
+
);
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2479
|
+
|
|
2480
|
+
return {
|
|
2481
|
+
properties: aPaths,
|
|
2482
|
+
filters: aFilters,
|
|
2483
|
+
text: sText
|
|
2484
|
+
};
|
|
2485
|
+
}
|
|
2789
2486
|
|
|
2790
2487
|
function getConverterContextForPath(sMetaPath: string, oMetaModel: ODataMetaModel, sEntitySet: string, oDiagnostics: Diagnostics) {
|
|
2791
2488
|
const oContext = oMetaModel.createBindingContext(sMetaPath) as ODataV4Context;
|
|
2792
2489
|
return ConverterContext?.createConverterContextForMacro(sEntitySet, oContext || oMetaModel, oDiagnostics, mergeObjects, undefined);
|
|
2793
2490
|
}
|
|
2794
2491
|
|
|
2492
|
+
/**
|
|
2493
|
+
* This function returns an ID which should be used in the internal chart for the measure or dimension.
|
|
2494
|
+
* For standard cases, this is just the ID of the property.
|
|
2495
|
+
* If it is necessary to use another ID internally inside the chart (e.g. on duplicate property IDs) this method can be overwritten.
|
|
2496
|
+
* In this case, <code>getPropertyFromNameAndKind</code> needs to be overwritten as well.
|
|
2497
|
+
*
|
|
2498
|
+
* @param name ID of the property
|
|
2499
|
+
* @param kind Type of the property (measure or dimension)
|
|
2500
|
+
* @returns Internal ID for the sap.chart.Chart
|
|
2501
|
+
* @private
|
|
2502
|
+
* @ui5-restricted
|
|
2503
|
+
*/
|
|
2504
|
+
function getInternalChartNameFromPropertyNameAndKind(name: string, kind: string) {
|
|
2505
|
+
return name.replace("_fe_" + kind + "_", "");
|
|
2506
|
+
}
|
|
2507
|
+
|
|
2508
|
+
/**
|
|
2509
|
+
* This function returns an array of chart properties by remvoing _fe_groupable prefix.
|
|
2510
|
+
*
|
|
2511
|
+
* @param {Array} aFilters Chart filter properties
|
|
2512
|
+
* @returns Chart properties without prefixes
|
|
2513
|
+
* @private
|
|
2514
|
+
* @ui5-restricted
|
|
2515
|
+
*/
|
|
2516
|
+
interface IFilterProp {
|
|
2517
|
+
sPath: string;
|
|
2518
|
+
}
|
|
2519
|
+
function getChartPropertiesWithoutPrefixes(aFilters: IFilterProp[]) {
|
|
2520
|
+
aFilters.forEach((element: IFilterProp) => {
|
|
2521
|
+
if (element.sPath && element.sPath.includes("fe_groupable")) {
|
|
2522
|
+
element.sPath = CommonUtils.getInternalChartNameFromPropertyNameAndKind(element.sPath, "groupable");
|
|
2523
|
+
}
|
|
2524
|
+
});
|
|
2525
|
+
return aFilters;
|
|
2526
|
+
}
|
|
2527
|
+
|
|
2795
2528
|
const CommonUtils = {
|
|
2796
|
-
isPropertyFilterable: isPropertyFilterable,
|
|
2797
2529
|
isFieldControlPathInapplicable: isFieldControlPathInapplicable,
|
|
2798
2530
|
removeSensitiveData: removeSensitiveData,
|
|
2799
2531
|
fireButtonPress: fnFireButtonPress,
|
|
@@ -2807,7 +2539,6 @@ const CommonUtils = {
|
|
|
2807
2539
|
getContextPathProperties: fnGetContextPathProperties,
|
|
2808
2540
|
getParameterInfo: getParameterInfo,
|
|
2809
2541
|
updateDataFieldForIBNButtonsVisibility: fnUpdateDataFieldForIBNButtonsVisibility,
|
|
2810
|
-
getTranslatedText: getTranslatedText,
|
|
2811
2542
|
getEntitySetName: getEntitySetName,
|
|
2812
2543
|
getActionPath: getActionPath,
|
|
2813
2544
|
computeDisplayMode: computeDisplayMode,
|
|
@@ -2819,7 +2550,6 @@ const CommonUtils = {
|
|
|
2819
2550
|
addExternalStateFiltersToSelectionVariant: addExternalStateFiltersToSelectionVariant,
|
|
2820
2551
|
addPageContextToSelectionVariant: addPageContextToSelectionVariant,
|
|
2821
2552
|
addDefaultDisplayCurrency: addDefaultDisplayCurrency,
|
|
2822
|
-
getNonComputedVisibleFields: getNonComputedVisibleFields,
|
|
2823
2553
|
setUserDefaults: setUserDefaults,
|
|
2824
2554
|
getShellServices: getShellServices,
|
|
2825
2555
|
getHash: getHash,
|
|
@@ -2831,10 +2561,7 @@ const CommonUtils = {
|
|
|
2831
2561
|
getSemanticTargetsFromPageModel: fnGetSemanticTargetsFromPageModel,
|
|
2832
2562
|
getSemanticObjectsFromPath: fnGetSemanticObjectsFromPath,
|
|
2833
2563
|
updateSemanticTargets: fnUpdateSemanticTargetsModel,
|
|
2834
|
-
getPropertyDataType: getPropertyDataType,
|
|
2835
2564
|
waitForContextRequested: waitForContextRequested,
|
|
2836
|
-
getNavigationRestrictions: getNavigationRestrictions,
|
|
2837
|
-
getSearchRestrictions: getSearchRestrictions,
|
|
2838
2565
|
getFilterRestrictionsByPath: getFilterRestrictionsByPath,
|
|
2839
2566
|
getSpecificAllowedExpression: getSpecificAllowedExpression,
|
|
2840
2567
|
getAdditionalParamsForCreate: getAdditionalParamsForCreate,
|
|
@@ -2849,12 +2576,6 @@ const CommonUtils = {
|
|
|
2849
2576
|
AllowedExpressionsPrio: ["SingleValue", "MultiValue", "SingleRange", "MultiRange", "SearchExpression", "MultiRangeOrSearchExpression"],
|
|
2850
2577
|
normalizeSearchTerm: normalizeSearchTerm,
|
|
2851
2578
|
getSingletonPath: getSingletonPath,
|
|
2852
|
-
getRequiredPropertiesFromUpdateRestrictions: getRequiredPropertiesFromUpdateRestrictions,
|
|
2853
|
-
getRequiredPropertiesFromInsertRestrictions: getRequiredPropertiesFromInsertRestrictions,
|
|
2854
|
-
hasRestrictedPropertiesInAnnotations: hasRestrictedPropertiesInAnnotations,
|
|
2855
|
-
getRequiredPropertiesFromAnnotations: getRequiredPropertiesFromAnnotations,
|
|
2856
|
-
getRequiredProperties: getRequiredProperties,
|
|
2857
|
-
checkIfResourceKeyExists: checkIfResourceKeyExists,
|
|
2858
2579
|
setContextsBasedOnOperationAvailable: setContextsBasedOnOperationAvailable,
|
|
2859
2580
|
setDynamicActionContexts: setDynamicActionContexts,
|
|
2860
2581
|
requestProperty: requestProperty,
|
|
@@ -2866,7 +2587,9 @@ const CommonUtils = {
|
|
|
2866
2587
|
createSemanticDatesFromConditions: createSemanticDatesFromConditions,
|
|
2867
2588
|
updateRelateAppsModel: updateRelateAppsModel,
|
|
2868
2589
|
getSemanticObjectAnnotations: _getSemanticObjectAnnotations,
|
|
2869
|
-
|
|
2590
|
+
getFiltersInfoForSV: getFiltersInfoForSV,
|
|
2591
|
+
getInternalChartNameFromPropertyNameAndKind: getInternalChartNameFromPropertyNameAndKind,
|
|
2592
|
+
getChartPropertiesWithoutPrefixes: getChartPropertiesWithoutPrefixes,
|
|
2870
2593
|
isSmallDevice,
|
|
2871
2594
|
getConverterContextForPath
|
|
2872
2595
|
};
|