@sap/open.fe 1.96.0 → 1.97.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/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +57 -42
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +4 -4
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
- package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +59 -274
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +52 -64
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +18 -22
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +80 -4
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +42 -23
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +36 -21
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +9 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +20 -50
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +222 -102
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +33 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +109 -111
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +8 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +10 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +67 -40
- package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +57 -18
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +51 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -19
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +139 -18
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +9 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +4 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +18 -7
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +17 -12
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +27 -4
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +211 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +32 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +51 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +10 -9
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +232 -228
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +15 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +19 -9
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +11 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +200 -121
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +30 -19
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +80 -7
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +42 -2
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +4 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +13 -10
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +7 -4
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +119 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +285 -4
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +121 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +147 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +51 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +109 -17
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +66 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelper.cds +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelperMainEntitySortableFalse.cds +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableGetSelectionMode.cds +8 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +38 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +483 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +376 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.ts +105 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.js +103 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.ts +106 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.js +118 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.ts +118 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.ts +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +118 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +70 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.js +89 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.ts +73 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +4 -2
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +15 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +9 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +30 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +3 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +3 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +17 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +6 -15
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +14 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +12 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +15 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +10 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +81 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +13 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +5 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +1 -7
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +46 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +6 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +17 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +26 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +4 -13
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +10 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +5 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +72 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +12 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +93 -91
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +21 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +149 -110
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +3 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +70 -29
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +53 -36
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +3 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +844 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +833 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +495 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +440 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +469 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +448 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +94 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +70 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +12 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +11 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +61 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.js +46 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.ts +30 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +11 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.js +66 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.ts +35 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +48 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +56 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +68 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +65 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +82 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +23 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldHelper.spec.ts.snap +47 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +52 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormElement.spec.ts.snap +25 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +0 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +69 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +451 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldHelper.xml +68 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +13 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +152 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +116 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +115 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.js +86 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.ts +54 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/__snapshots__/FormElement.spec.ts.snap +33 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +154 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +128 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +7 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +23 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +108 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +4 -4
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +3 -3
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +1 -1
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +91 -60
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +31 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +5 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +18 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +114 -85
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +8 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +23 -3
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +15 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +6 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +6 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +63 -9
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +54 -32
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +24 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +8 -9
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +23 -30
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +51 -60
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +95 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +66 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +134 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +94 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +61 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/ObjectPageHeaderForm.spec.ts.snap +53 -0
- package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/FCLView-dbg.js +0 -6
- package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +14 -3
- package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +85 -8
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +54 -2
- package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +0 -11
- package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +0 -38
- package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +0 -12
- package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +22 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +14 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +21 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +9 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +18 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +25 -5
- package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +9 -0
- package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +38 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +33 -4
- package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +23 -16
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/resources.json +36 -34
- package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.96.json +0 -49
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.96.json +0 -189
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldRuntime.qunit.js +0 -73
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.96.json +0 -160
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/relnote/changes-1.96.json +0 -17
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +0 -26
- package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -6
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.96.json +0 -153
|
@@ -15,6 +15,7 @@ sap.ui.define(
|
|
|
15
15
|
"sap/ui/model/json/JSONModel",
|
|
16
16
|
"sap/base/Log",
|
|
17
17
|
"sap/fe/core/CommonUtils",
|
|
18
|
+
"sap/fe/core/helpers/KeepAliveHelper",
|
|
18
19
|
"sap/base/util/merge"
|
|
19
20
|
],
|
|
20
21
|
function(
|
|
@@ -28,6 +29,7 @@ sap.ui.define(
|
|
|
28
29
|
JSONModel,
|
|
29
30
|
Log,
|
|
30
31
|
CommonUtils,
|
|
32
|
+
KeepAliveHelper,
|
|
31
33
|
mergeObjects
|
|
32
34
|
) {
|
|
33
35
|
"use strict";
|
|
@@ -202,7 +204,11 @@ sap.ui.define(
|
|
|
202
204
|
var mViewRefreshStrategies = oView.getViewData().refreshStrategyOnAppRestore || {};
|
|
203
205
|
mergeObjects(mRefreshStrategies, mViewRefreshStrategies);
|
|
204
206
|
}
|
|
205
|
-
var mRefreshStrategy =
|
|
207
|
+
var mRefreshStrategy = KeepAliveHelper.getRefreshStrategyForIntent(
|
|
208
|
+
mRefreshStrategies,
|
|
209
|
+
sSemanticObject,
|
|
210
|
+
sAction
|
|
211
|
+
);
|
|
206
212
|
if (mRefreshStrategy) {
|
|
207
213
|
oInternalModel.setProperty("/refreshStrategyOnAppRestore", mRefreshStrategy);
|
|
208
214
|
}
|
|
@@ -763,10 +769,10 @@ sap.ui.define(
|
|
|
763
769
|
|
|
764
770
|
if (oContext) {
|
|
765
771
|
if (oContext.isA && oContext.isA("sap.ui.model.odata.v4.Context")) {
|
|
766
|
-
sMetaPath =
|
|
772
|
+
sMetaPath = ModelHelper.getMetaPathForContext(oContext);
|
|
767
773
|
oContext = [oContext];
|
|
768
774
|
} else {
|
|
769
|
-
sMetaPath =
|
|
775
|
+
sMetaPath = ModelHelper.getMetaPathForContext(oContext[0]);
|
|
770
776
|
}
|
|
771
777
|
oDefaultRefreshStrategy[sMetaPath] = "self";
|
|
772
778
|
oRefreshStrategies["_feDefault"] = oDefaultRefreshStrategy;
|
package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js
CHANGED
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/navigation/SelectionVariant","sap/fe/core/helpers/ModelHelper","sap/ui/core/util/XMLPreprocessor","sap/ui/core/XMLTemplateProcessor","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/base/Log","sap/fe/core/CommonUtils","sap/base/util/merge"],function(C,O,S,M,X,a,F,J,L,b,m){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalInternalBasedNavigation",{metadata:{methods:{navigate:{"final":true,"public":true},getEntitySet:{"final":false,"public":false},navigateOutbound:{"final":true,"public":true},navigateWithConfirmationDialog:{"final":true,"public":true},getNavigationMode:{"final":false,"public":true,overrideExecution:O.Instead},prepareContextForExternalNavigation:{"final":true,"public":true},removeSensitiveData:{"final":true,"public":true},prepareFiltersForExternalNavigation:{"final":true,"public":true},getOutboundParams:{"final":true,"public":true}}},navigate:function(s,A,n){var t=this;var _=function(c){var N=n&&n.navigationContexts,d=N&&!Array.isArray(N)?[N]:N,v=n&&n.semanticObjectMapping,e=n&&n.additionalNavigationParameters,T={semanticObject:s,action:A},V=t.base.getView(),f=V.getController();if(c){t._oView.setBindingContext(c);}if(s&&A){var g=[],h=new S();if(d&&d.length){d.map(function(q){if(q.isA&&q.isA("sap.ui.model.odata.v4.Context")){var u=q.getObject(),w=t._oMetaModel.getMetaPath(q.getPath());u=t.removeSensitiveData(u,w);var x=t.prepareContextForExternalNavigation(u,q);T["propertiesWithoutConflict"]=x.propertiesWithoutConflict;g.push(x.semanticAttributes);}else if(!(q&&Array.isArray(q.data))&&typeof q==="object"){g.push(t.removeSensitiveData(q.data,q.metaPath));}else if(q&&Array.isArray(q.data)){g=t.removeSensitiveData(q.data,q.metaPath);}});}if(g&&g.length){h=t._oNavigationService.mixAttributesAndSelectionVariant(g,h.toJSONString());}var i=t._oView.getModel(),E=t.getEntitySet(),j=E?t._oNavigationService.constructContextUrl(E,i):undefined;if(j){h.setFilterContextUrl(j);}if(e){t._applyOutboundParams(h,e);}f.intentBasedNavigation.adaptNavigationContext(h,T);if(v){t._applySemanticObjectMappings(h,v);}t._removeTechnicalParameters(h);var k=f._intentBasedNavigation.getNavigationMode();var r=(n&&n.refreshStrategies)||{},I=V.getModel("internal");if(I){if(V&&V.getViewData().refreshStrategyOnAppRestore){var l=V.getViewData().refreshStrategyOnAppRestore||{};m(r,l);}var R=
|
|
6
|
+
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/navigation/SelectionVariant","sap/fe/core/helpers/ModelHelper","sap/ui/core/util/XMLPreprocessor","sap/ui/core/XMLTemplateProcessor","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/base/Log","sap/fe/core/CommonUtils","sap/fe/core/helpers/KeepAliveHelper","sap/base/util/merge"],function(C,O,S,M,X,a,F,J,L,b,K,m){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalInternalBasedNavigation",{metadata:{methods:{navigate:{"final":true,"public":true},getEntitySet:{"final":false,"public":false},navigateOutbound:{"final":true,"public":true},navigateWithConfirmationDialog:{"final":true,"public":true},getNavigationMode:{"final":false,"public":true,overrideExecution:O.Instead},prepareContextForExternalNavigation:{"final":true,"public":true},removeSensitiveData:{"final":true,"public":true},prepareFiltersForExternalNavigation:{"final":true,"public":true},getOutboundParams:{"final":true,"public":true}}},navigate:function(s,A,n){var t=this;var _=function(c){var N=n&&n.navigationContexts,d=N&&!Array.isArray(N)?[N]:N,v=n&&n.semanticObjectMapping,e=n&&n.additionalNavigationParameters,T={semanticObject:s,action:A},V=t.base.getView(),f=V.getController();if(c){t._oView.setBindingContext(c);}if(s&&A){var g=[],h=new S();if(d&&d.length){d.map(function(q){if(q.isA&&q.isA("sap.ui.model.odata.v4.Context")){var u=q.getObject(),w=t._oMetaModel.getMetaPath(q.getPath());u=t.removeSensitiveData(u,w);var x=t.prepareContextForExternalNavigation(u,q);T["propertiesWithoutConflict"]=x.propertiesWithoutConflict;g.push(x.semanticAttributes);}else if(!(q&&Array.isArray(q.data))&&typeof q==="object"){g.push(t.removeSensitiveData(q.data,q.metaPath));}else if(q&&Array.isArray(q.data)){g=t.removeSensitiveData(q.data,q.metaPath);}});}if(g&&g.length){h=t._oNavigationService.mixAttributesAndSelectionVariant(g,h.toJSONString());}var i=t._oView.getModel(),E=t.getEntitySet(),j=E?t._oNavigationService.constructContextUrl(E,i):undefined;if(j){h.setFilterContextUrl(j);}if(e){t._applyOutboundParams(h,e);}f.intentBasedNavigation.adaptNavigationContext(h,T);if(v){t._applySemanticObjectMappings(h,v);}t._removeTechnicalParameters(h);var k=f._intentBasedNavigation.getNavigationMode();var r=(n&&n.refreshStrategies)||{},I=V.getModel("internal");if(I){if(V&&V.getViewData().refreshStrategyOnAppRestore){var l=V.getViewData().refreshStrategyOnAppRestore||{};m(r,l);}var R=K.getRefreshStrategyForIntent(r,s,A);if(R){I.setProperty("/refreshStrategyOnAppRestore",R);}}var p=function(){sap.ui.require(["sap/m/MessageBox"],function(q){var u=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");q.show(u.getText("C_COMMON_HELPER_NAVIGATION_ERROR_MESSAGE"),{title:u.getText("C_COMMON_NAVIGATION_ERROR_TITLE")});});};t._oNavigationService.navigate(s,A,h.toJSONString(),null,p,null,k);}else{throw new Error("Semantic Object/action is not provided");}};var B=this.base.getView().getBindingContext();var o=B&&B.getModel().getMetaModel();if(this.getView().getViewData().converterType==="ObjectPage"&&o&&!M.isStickySessionSupported(o)){b.fnProcessDataLossOrDraftDiscardConfirmation(_.bind(this),Function.prototype,this.base.getView().getBindingContext(),this.base.getView().getController());}else{_();}},prepareContextForExternalNavigation:function(s,c){function _(u,v){for(var x in u){if(u[x]===null||typeof u[x]!=="object"){if(!d[x]){d[x]=[];}d[x].push(v);}else{var N=u[x];_(N,v+"/"+x);}}}var d={},e=c.getPath(),o=c.getModel().getMetaModel(),f=o.getMetaPath(e),g=f.split("/").filter(Boolean);_(s,f);var h=g[0],j=o.getObject("/"+h+"/@sapui.name"),p={};var k,l,n;for(var D in d){var q=d[D],w;if(q.length>1){for(var i=0;i<=q.length-1;i++){var P=q[i],r=P.replace(P===f?f:f+"/","");r=(r===""?r:r+"/")+D;var E=o.getObject(P+"/@sapui.name");if(E===j){k=r;}if(P===f){l=r;}n=r;s[(f+"/"+r).split("/").filter(function(v){return v!="";}).join(".")]=c.getProperty(r);}w=k||l||n;s[D]=c.getProperty(w);k=undefined;l=undefined;n=undefined;}else{var P=q[0],r=P.replace(P===f?f:f+"/","");r=(r===""?r:r+"/")+D;s[D]=c.getProperty(r);p[D]=(f+"/"+r).split("/").filter(function(v){return v!="";}).join(".");}}for(var t in s){if(s[t]!==null&&typeof s[t]==="object"){delete s[t];}}return{semanticAttributes:s,propertiesWithoutConflict:p};},prepareFiltersForExternalNavigation:function(f,r,p){function _(j,l){for(var k in j){if(j[k]){if(k.includes("/")){l=k;var n=k.split("/");k=n[n.length-1];}else{l=r;}if(!d[k]){d[k]=[];}d[k].push(l);}}}var d={};_(f,r);var o={};var s,c,e,w,P;for(var D in d){var g=d[D];if(g.length>1){for(var i=0;i<=g.length-1;i++){var h=g[i];if(h===r){e=r+"/"+D;P=D;s=D;if(p&&p.includes(D)){f["$Parameter."+D]=f[D];}}else{P=h;e=(r+"/"+h).replaceAll("*","");c=h;}f[e.split("/").filter(function(v){return v!="";}).join(".")]=f[P];delete f[h];}w=s||c;f[D]=f[w];}else{var h=g[0],e=h===r?r+"/"+D:(r+"/"+h).replaceAll("*","");o[D]=e.split("/").filter(function(v){return v!="";}).join(".");if(p&&p.includes(D)){f["$Parameter."+D]=f[D];}}}return{filterConditions:f,filterConditionsWithoutConflict:o};},getNavigationMode:function(){return"inplace";},navigateWithConfirmationDialog:function(s,A,n){var t=this;if(n.notApplicableContexts&&n.notApplicableContexts.length>=1){var o;var c={onClose:function(){o.close();},onContinue:function(){n.navigationContexts=n.applicableContexts;o.close();t.navigate(s,A,n);}};var f=function(){var j,k=n.notApplicableContexts.length,N=[];for(var i=0;i<n.notApplicableContexts.length;i++){j=n.notApplicableContexts[i].getObject();N.push(j);}var l=new J(N);var T=new J({total:k,label:n.label});o.setModel(l,"notApplicable");o.setModel(T,"totals");o.open();};var d="sap.fe.core.controls.ActionPartial";var D=a.loadTemplate(d,"fragment");var e=this._oView.getModel();var g=e.getMetaModel();var h=n.notApplicableContexts[0].getCanonicalPath();var E=h.substr(0,h.indexOf("("))+"/";Promise.resolve(X.process(D,{name:d},{bindingContexts:{entityType:g.createBindingContext(E)},models:{entityType:g,metaModel:g}})).then(function(i){return F.load({definition:i,controller:c});}).then(function(p){o=p;t.getView().addDependent(p);f();}).catch(function(){L.error("Error");});}else{t.navigate(s,A,n);}},_removeTechnicalParameters:function(s){s.removeSelectOption("@odata.context");s.removeSelectOption("@odata.metadataEtag");s.removeSelectOption("SAP__Messages");},getEntitySet:function(){return this._oView.getViewData().entitySet;},removeSensitiveData:function(A,s){var p=Object.keys(A);if(p.length){delete A["@odata.context"];delete A["@odata.metadataEtag"];delete A["SAP__Messages"];for(var j=0;j<p.length;j++){if(A[p[j]]&&typeof A[p[j]]==="object"){this.removeSensitiveData(A[p[j]],s+"/"+p[j]);}var P=p[j],c=this._oMetaModel.getObject(s+"/"+P+"@");if(c){if(c["@com.sap.vocabularies.PersonalData.v1.IsPotentiallySensitive"]||c["@com.sap.vocabularies.UI.v1.ExcludeFromNavigationContext"]||c["@com.sap.vocabularies.Analytics.v1.Measure"]){delete A[P];}else if(c["@com.sap.vocabularies.Common.v1.FieldControl"]){var f=c["@com.sap.vocabularies.Common.v1.FieldControl"];if(f["$EnumMember"]&&f["$EnumMember"].split("/")[1]==="Inapplicable"){delete A[P];}else if(f["$Path"]&&this._isFieldControlPathInapplicable(f["$Path"],A)){delete A[P];}}}}}return A;},_isFieldControlPathInapplicable:function(f,A){var i=false,p=f.split("/");if(p.length>1){i=A[p[0]]&&A[p[0]].hasOwnProperty(p[1])&&A[p[0]][p[1]]===0;}else{i=A[f]===0;}return i;},_applySemanticObjectMappings:function(s,v){var o=typeof v==="string"?JSON.parse(v):v;for(var i=0;i<o.length;i++){var l=(o[i]["LocalProperty"]&&o[i]["LocalProperty"]["$PropertyPath"])||(o[i]["@com.sap.vocabularies.Common.v1.LocalProperty"]&&o[i]["@com.sap.vocabularies.Common.v1.LocalProperty"]["$Path"]);var c=o[i]["SemanticObjectProperty"]||o[i]["@com.sap.vocabularies.Common.v1.SemanticObjectProperty"];if(s.getSelectOption(l)){var d=s.getSelectOption(l);s.removeSelectOption(l);s.massAddSelectOption(c,d);}}return s;},navigateOutbound:function(o,n){var c=this.base.getAppComponent().getManifestEntry("sap.app"),d=c.crossNavigation&&c.crossNavigation.outbounds[o];if(!d){L.error("Outbound is not defined in manifest!!");return;}var s=d.semanticObject,A=d.action,e=d.parameters&&this.getOutboundParams(d.parameters);if(n){var N=[];Object.keys(n).forEach(function(k){if(Array.isArray(n[k])){var v=n[k];for(var i=0;i<v.length;i++){var p={};p[k]=v[i];N.push(p);}}else{var p={};p[k]=n[k];N.push(p);}});}if(N||e){n={navigationContexts:{data:N||e}};}this.base._intentBasedNavigation.navigate(s,A,n);},_applyOutboundParams:function(s,o){var p=Object.keys(o);var c=s.getSelectOptionsPropertyNames();p.forEach(function(k){if(!c.includes(k)){s.addSelectOption(k,"I","EQ",o[k]);}});return s;},getOutboundParams:function(o){var p={};if(o){var P=Object.keys(o)||[];if(P.length>0){P.forEach(function(k){var c=o[k];if(c.value&&c.value.value&&c.value.format==="plain"){if(!p[k]){p[k]=c.value.value;}}});}}return p;},onChevronPressNavigateOutBound:function(c,o,d,s){var e=c.getAppComponent().getRoutingService().getOutbounds(),D=e[o],f;if(D&&D.semanticObject&&D.action){var r={intents:{}},g={},h;if(d){if(d.isA&&d.isA("sap.ui.model.odata.v4.Context")){h=M.getMetaPathForContext(d);d=[d];}else{h=M.getMetaPathForContext(d[0]);}g[h]="self";r["_feDefault"]=g;}if(s){var k=D.semanticObject+"-"+D.action;r.intents[k]={};r.intents[k][s]="self";}if(D&&D.parameters){var p=D.parameters&&this.getOutboundParams(D.parameters);if(Object.keys(p).length>0){f=p;}}c._intentBasedNavigation.navigate(D.semanticObject,D.action,{navigationContexts:d,refreshStrategies:r,additionalNavigationParameters:f});return Promise.resolve();}else{throw new Error("outbound target "+o+" not found in cross navigation definition of manifest");}},override:{onInit:function(){this._oAppComponent=this.base.getAppComponent();this._oMetaModel=this._oAppComponent.getModel().getMetaModel();this._oNavigationService=this._oAppComponent.getNavigationService();this._oView=this.base.getView();}}});});
|
|
@@ -155,7 +155,8 @@ sap.ui.define(
|
|
|
155
155
|
checkNoHashChange: mParameters.checkNoHashChange,
|
|
156
156
|
editable: mParameters.editable,
|
|
157
157
|
bPersistOPScroll: mParameters.bPersistOPScroll,
|
|
158
|
-
updateFCLLevel: mParameters.updateFCLLevel
|
|
158
|
+
updateFCLLevel: mParameters.updateFCLLevel,
|
|
159
|
+
bForceFocus: mParameters.bForceFocus
|
|
159
160
|
});
|
|
160
161
|
})
|
|
161
162
|
.catch(function(oError) {
|
|
@@ -242,11 +243,11 @@ sap.ui.define(
|
|
|
242
243
|
navigateToMessagePage: function(sErrorMessage, mParameters) {
|
|
243
244
|
mParameters = mParameters || {};
|
|
244
245
|
if (this._oRouterProxy.getHash().indexOf("i-action=create") > -1) {
|
|
245
|
-
this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());
|
|
246
|
+
return this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());
|
|
246
247
|
} else {
|
|
247
248
|
mParameters.FCLLevel = this._getFCLLevel();
|
|
248
249
|
|
|
249
|
-
this._oAppComponent.getRootViewController().displayMessagePage(sErrorMessage, mParameters);
|
|
250
|
+
return this._oAppComponent.getRootViewController().displayMessagePage(sErrorMessage, mParameters);
|
|
250
251
|
}
|
|
251
252
|
},
|
|
252
253
|
|
|
@@ -880,59 +881,28 @@ sap.ui.define(
|
|
|
880
881
|
return this._oTargetInformation.FCLLevel;
|
|
881
882
|
},
|
|
882
883
|
|
|
883
|
-
overflowToolbarButtonHover: function() {
|
|
884
|
-
this.sCurrentFocusedControlId = sap.ui.getCore().getCurrentFocusedControlId();
|
|
885
|
-
},
|
|
886
884
|
/**
|
|
887
|
-
*
|
|
885
|
+
* Switches the FCL layout betwen column and full-screen.
|
|
888
886
|
*
|
|
889
887
|
* @ui5-restricted
|
|
890
888
|
*/
|
|
891
|
-
enterFullScreen: function() {
|
|
892
|
-
var oSource = this.base.getView();
|
|
893
|
-
var oContext = oSource.getBindingContext(),
|
|
894
|
-
sNextLayout = oSource.getModel("fclhelper").getProperty("/actionButtonsInfo/fullScreen");
|
|
895
|
-
|
|
896
|
-
var oRouterProxy = this._oRouterProxy;
|
|
897
|
-
var sCurrentFocusedControlId = this.sCurrentFocusedControlId;
|
|
898
|
-
this.base._routing
|
|
899
|
-
.navigateToContext(oContext, { sLayout: sNextLayout })
|
|
900
|
-
.then(function() {
|
|
901
|
-
var oLastHistoryEntry = oRouterProxy.getLastHistoryEntry();
|
|
902
|
-
oLastHistoryEntry.oLastFocusControl = Object.assign({}, oLastHistoryEntry.oLastFocusControl, {
|
|
903
|
-
controlId: sCurrentFocusedControlId,
|
|
904
|
-
focusInfo: { id: sCurrentFocusedControlId }
|
|
905
|
-
});
|
|
906
|
-
})
|
|
907
|
-
.catch(function() {
|
|
908
|
-
Log.warning("cannot set focus on last focused control");
|
|
909
|
-
});
|
|
910
|
-
},
|
|
911
889
|
|
|
912
|
-
|
|
913
|
-
* Exits fullscreen mode for the current column of a FCL.
|
|
914
|
-
*
|
|
915
|
-
* @ui5-restricted
|
|
916
|
-
*/
|
|
917
|
-
exitFullScreen: function() {
|
|
890
|
+
switchFullScreen: function() {
|
|
918
891
|
var oSource = this.base.getView();
|
|
919
|
-
var
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
.catch(function() {
|
|
934
|
-
Log.warning("cannot set focus on last focused control");
|
|
935
|
-
});
|
|
892
|
+
var oFCLHelperModel = oSource.getModel("fclhelper"),
|
|
893
|
+
bIsFullScreen = oFCLHelperModel.getProperty("/actionButtonsInfo/isFullScreen"),
|
|
894
|
+
sNextLayout = oFCLHelperModel.getProperty(
|
|
895
|
+
bIsFullScreen ? "/actionButtonsInfo/exitFullScreen" : "/actionButtonsInfo/fullScreen"
|
|
896
|
+
),
|
|
897
|
+
oRootViewController = this._oAppComponent.getRootViewController();
|
|
898
|
+
|
|
899
|
+
var oContext = oRootViewController.getRightmostContext
|
|
900
|
+
? oRootViewController.getRightmostContext()
|
|
901
|
+
: oSource.getBindingContext();
|
|
902
|
+
|
|
903
|
+
this.base._routing.navigateToContext(oContext, { sLayout: sNextLayout }).catch(function() {
|
|
904
|
+
Log.warning("cannot switch between column and fullscreen");
|
|
905
|
+
});
|
|
936
906
|
},
|
|
937
907
|
|
|
938
908
|
/**
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/fe/core/controllerextensions/ControllerExtensionMetadata","sap/ui/core/mvc/OverrideExecution","sap/ui/core/Component","sap/fe/core/CommonUtils","sap/fe/core/BusyLocker","sap/fe/core/helpers/SemanticKeyHelper","sap/ui/model/Filter","sap/ui/model/FilterOperator","sap/base/Log","sap/fe/core/actions/messageHandling","sap/m/MessageBox","sap/fe/core/helpers/EditState","sap/fe/core/controllerextensions/MessageHandler","sap/fe/core/helpers/ModelHelper"],function(C,a,O,b,c,B,S,F,d,L,m,M,E,e,f){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalRouting",{metadata:{methods:{"navigateToTarget":{"public":true,"final":false},"byId":{"public":false},"getView":{"public":false},"onRouteMatched":{"public":true,"final":false,overrideExecution:O.After},"onRouteMatchedFinished":{"public":true,"final":false,overrideExecution:O.After},"onBeforeBinding":{"public":true,"final":false,overrideExecution:O.After},"onAfterBinding":{"public":true,"final":false,overrideExecution:O.After},"navigateToContext":{"public":true,"final":true},"navigateBackFromContext":{"public":true,"final":true},"navigateForwardToContext":{"public":true,"final":true},"navigateBackFromTransientState":{"public":true,"final":true},"navigateToMessagePage":{"public":true,"final":true},"enterFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"exitFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"closeColumn":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"isCurrentStateImpactedBy":{"public":true,"final":true}}},onRouteMatched:function(){},onRouteMatchedFinished:function(){},onBeforeBinding:function(o,p){var r=this.base.getView().getController().routing;if(r&&r.onBeforeBinding){r.onBeforeBinding(o,p);}},onAfterBinding:function(o,p){this._oAppComponent.getRootViewController().onContextBoundToView(o);var r=this.base.getView().getController().routing;if(r&&r.onAfterBinding){r.onAfterBinding(o,p);}},navigateToTarget:function(o,n,s,p){var N=this._oPageComponent&&this._oPageComponent.getNavigationConfiguration&&this._oPageComponent.getNavigationConfiguration(n);if(N){var D=N.detail;var r=D.route;var P=D.parameters;this._oRoutingService.navigateTo(o,r,P,p,s);}else{this._oRoutingService.navigateTo(o,null,null,p);}this._oView.getViewData();},navigateToContext:function(o,p){var t=this;var g={};p=p||{};if(o.isA("sap.ui.model.odata.v4.ODataListBinding")){if(p.asyncContext){this._oRouterProxy.activateRouteMatchSynchronization();p.asyncContext.then(function(o){t.navigateToContext(o,{checkNoHashChange:p.checkNoHashChange,editable:p.editable,bPersistOPScroll:p.bPersistOPScroll,updateFCLLevel:p.updateFCLLevel});}).catch(function(h){L.error("Error with the async context",h);});}else if(!p.bDeferredContext){throw"navigation to a list binding is not yet supported";}}if(p.callExtension){g.sourceBindingContext=o.getObject();g.bindingContext=o;if(p.oEvent){g.oEvent=p.oEvent;}if(this.base.getView().getController().routing.onBeforeNavigation(g)){return Promise.resolve();}}p.FCLLevel=this._getFCLLevel();return this._oRoutingService.navigateToContext(o,p,this._oView.getViewData(),this._oTargetInformation);},navigateBackFromContext:function(o,p){p=p||{};p.updateFCLLevel=-1;return this.navigateToContext(o,p);},navigateForwardToContext:function(o,p){if(this._oView.getBindingContext("internal").getProperty("messageFooterContainsErrors")===true){return Promise.resolve();}p=p||{};p.updateFCLLevel=1;return this.navigateToContext(o,p,true);},navigateBackFromTransientState:function(){var h=this._oRouterProxy.getHash();if(h.indexOf("(...)")!==-1){this._oRouterProxy.navBack();}},navigateToMessagePage:function(s,p){p=p||{};if(this._oRouterProxy.getHash().indexOf("i-action=create")>-1){this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());}else{p.FCLLevel=this._getFCLLevel();this._oAppComponent.getRootViewController().displayMessagePage(s,p);}},isCurrentStateImpactedBy:function(o){return this._oRoutingService.isCurrentStateImpactedBy(o);},_onRouteMatched:function(o){var t=o.getParameter("routeInformation")&&o.getParameter("routeInformation").targets;if(!t||t.indexOf(this._oTargetInformation.targetName)===-1){return;}var T;if(this._oPageComponent&&this._oPageComponent.getBindingContextPattern){T=this._oPageComponent.getBindingContextPattern();}T=T||this._oTargetInformation.contextPattern;if(T===null||T===undefined){T=o.getParameter("routePattern");}T=T.replace(":?query:","");var A=o.getParameters().arguments,D=false,n=o.getParameter("navigationInfo");for(var k in A){var v=A[k];if(v==="..."&&T.indexOf("{"+k+"}")>=0){D=true;n.bTargetEditable=true;}T=T.replace("{"+k+"}",v);}if(A["?query"]&&A["?query"].hasOwnProperty("i-action")){n.bActionCreate=true;}if(T&&T[0]!=="/"){T="/"+T;}this.onRouteMatched();var g=this._oView.getModel(),h;if(D){h=this._bindDeferred(T,n);}else{h=this._bindPage(T,g,n);}var i=this;h.finally(function(){i.onRouteMatchedFinished();});this._oAppComponent.getRootViewController().updateUIStateForView(this._oView,this._getFCLLevel());},_bindDeferred:function(t,n){this.onBeforeBinding(null,{editable:n.bTargetEditable});if(n.bDeferredContext||!n.oAsyncContext){if(this._oPageComponent&&this._oPageComponent.createDeferredContext){this._oPageComponent.createDeferredContext(t,n.bActionCreate);}}if(this._getBindingContext()&&this._getBindingContext().hasPendingChanges()){this._getBindingContext().getBinding().resetChanges();}this._setBindingContext(null);this.onAfterBinding(null);return Promise.resolve();},_bindPage:function(t,o,n){var g=this;if(t===""){return Promise.resolve(this._bindPageToContext(null,o,n));}else{return this._resolveSemanticPath(t,o).then(function(T){g._bindPageToPath(T,o,n);}).catch(function(h){var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");g.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("C_COMMON_SAPFE_ERROR"),description:h.message});});}},_createFilterFromSemanticPath:function(s,g,o){var k=s.substring(s.indexOf("(")+1,s.length-1).split(","),h;if(g.length!=k.length){return null;}var i=f.isFilteringCaseSensitive(o);if(g.length===1){var K=k[0];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}h=[new F({path:g[0].$PropertyPath,operator:d.EQ,value1:K,caseSensitive:i})];}else{var j={};k.forEach(function(p){var P=p.split("="),K=P[1];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}j[P[0]]=K;});var l=false;h=g.map(function(p){var q=p.$PropertyPath,v=j[q];if(v!==undefined){return new F({path:q,operator:d.EQ,value1:v,caseSensitive:i});}else{l=true;return"XX";}});if(l){return null;}}var D=new F({filters:[new F("IsActiveEntity","EQ",false),new F("SiblingEntity/IsActiveEntity","EQ",null)],and:false});h.push(D);var n=new F(h,true);return n;},_getTechnicalPathFromSemanticPath:function(s,o,g){var h=o.getMetaModel(),i=h.getMetaContext(s).getPath();if(!g||g.length===0){return Promise.resolve(null);}var j=this._createFilterFromSemanticPath(s,g,h);if(j===null){return Promise.resolve(null);}var l=o.bindList("/"+i,undefined,undefined,j,{"$$groupId":"$auto.Heroes"});return l.requestContexts(0,2).then(function(k){if(k&&k.length){return k[0].getPath();}else{return null;}});},_checkPathForSemanticBookmarking:function(p,o){var g=/^[\/]?(\w+)\([^\/]+\)$/.exec(p);if(!g){return false;}var s="/"+g[1];var D=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftRoot");var h=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftNode");return D||h?true:false;},_resolveSemanticPath:function(p,o){var g=o.getMetaModel(),l=this._oRoutingService.getLastSemanticMapping(),s=this._oRouter.getHashChanger().getHash().split("?")[0],t=this;if(s&&s.lastIndexOf("/")===s.length-1){s=s.substring(0,s.length-1);}var r=s&&s.substr(0,s.indexOf("("));if(r.indexOf("/")===0){r=r.substring(1);}var A=this._checkPathForSemanticBookmarking(s,g),h=A&&S.getSemanticKeys(g,r);if(!h){return Promise.resolve(p);}else if(l&&l.semanticPath===p){return Promise.resolve(l.technicalPath);}else{return this._getTechnicalPathFromSemanticPath(s,o,h).then(function(T){if(T&&T!==p){t._oRoutingService.setLastSemanticMapping({technicalPath:T,semanticPath:p});return T;}else{return p;}});}},_bindPageToPath:function(t,o,n){var g=this._getBindingContext(),s=g&&g.getPath(),u=n.useContext;if(s!==t||(u&&u.getPath()===t)){var T;if(u&&u.getPath()===t){T=u;}else{T=this._createBindingContext(t,o);}if(T!==g){this._bindPageToContext(T,o,n);}}else if(!n.bReasonIsIappState&&E.isEditStateDirty()){this._refreshBindingContext(g);}},_bindPageToContext:function(o,g,n){var t=this;if(!o){this.onBeforeBinding(null);this.onAfterBinding(null);}else{var p=o.getBinding();if(!o.getBinding()||o.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding")){o=this._createBindingContext(o.getPath(),g);if(E.isEditStateDirty()){setTimeout(function(){t._refreshBindingContext(o);},0);}}this.onBeforeBinding(o,{editable:n.bTargetEditable,listBinding:p,bPersistOPScroll:n.bPersistOPScroll,bDraftNavigation:n.bDraftNavigation,showPlaceholder:n.bShowPlaceholder});this._setBindingContext(o);this.onAfterBinding(o);}},_createBindingContext:function(p,o){var P=this._oPageComponent,s=P&&P.getEntitySet&&P.getEntitySet(),g=(P&&P.getContextPath&&P.getContextPath())||(s&&"/"+s),h=o.getMetaModel(),t=this,i={$$patchWithoutSideEffects:true,$$groupId:"$auto.Heroes",$$updateGroupId:"$auto"};if(s){var j=h.getObject(g+"/@com.sap.vocabularies.Common.v1.Messages/$Path");if(j){i.$select=j;}}var D=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftRoot");var k=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftNode");if(D||k){if(i.$select===undefined){i.$select="HasActiveEntity,HasDraftEntity,IsActiveEntity";}else{i.$select+=",HasActiveEntity,HasDraftEntity,IsActiveEntity";}}var H=o.bindContext(p,undefined,i);H.attachEventOnce("dataRequested",function(){B.lock(t._oView);});H.attachEventOnce("dataReceived",function(l){var n=l&&l.getParameter("error");B.unlock(t._oView);if(n){sap.ui.getCore().getLibraryResourceBundle("sap.fe.core",true).then(function(r){var q=new e();q.removeTransitionMessages();t.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("SAPFE_ERROR"),description:n});}).catch(function(q){L.error("Error while getting the core resource bundle",q);});}});return H.getBoundContext();},_refreshBindingContext:function(o){var p=this._oPageComponent,s=this._oAppComponent.getSideEffectsService(),r=o.getPath(),g=p&&p.getEntitySet&&p.getEntitySet(),h=(p&&p.getContextPath&&p.getContextPath())||(g&&"/"+g),j=this._oView.getModel().getMetaModel(),k,n=[],P=[],l={TargetProperties:[],TargetEntities:[]};function q(t){var D,R=((t.getContext()&&t.getContext().getPath())||"").replace(r,""),u=(R?R.slice(1)+"/":R)+t.getPath();if(t.isA("sap.ui.model.odata.v4.ODataContextBinding")){D=t.getDependentBindings();if(D){for(var i=0;i<D.length;i++){q(D[i]);}}else if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataListBinding")){if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataPropertyBinding")){if(P.indexOf(u)===-1){P.push(u);}}}if(h){k=j.getObject(h+"/@com.sap.vocabularies.Common.v1.Messages/$Path");}q(o.getBinding());var i;for(i=0;i<n.length;i++){l.TargetEntities.push({$NavigationPropertyPath:n[i]});}l.TargetProperties=P;if(k){l.TargetProperties.push({$PropertyPath:k});}s.requestSideEffects(l.TargetEntities.concat(l.TargetProperties),o);},_getBindingContext:function(){if(this._oPageComponent){return this._oPageComponent.getBindingContext();}else{return this._oView.getBindingContext();}},_setBindingContext:function(o){if(this._oPageComponent){this._oPageComponent.setBindingContext(o);}else{this._oView.setBindingContext(o);}},_getFCLLevel:function(){return this._oTargetInformation.FCLLevel;},overflowToolbarButtonHover:function(){this.sCurrentFocusedControlId=sap.ui.getCore().getCurrentFocusedControlId();},enterFullScreen:function(){var s=this.base.getView();var o=s.getBindingContext(),n=s.getModel("fclhelper").getProperty("/actionButtonsInfo/fullScreen");var r=this._oRouterProxy;var g=this.sCurrentFocusedControlId;this.base._routing.navigateToContext(o,{sLayout:n}).then(function(){var l=r.getLastHistoryEntry();l.oLastFocusControl=Object.assign({},l.oLastFocusControl,{controlId:g,focusInfo:{id:g}});}).catch(function(){L.warning("cannot set focus on last focused control");});},exitFullScreen:function(){var s=this.base.getView();var o=s.getBindingContext(),n=s.getModel("fclhelper").getProperty("/actionButtonsInfo/exitFullScreen");var r=this._oRouterProxy;var g=this.sCurrentFocusedControlId;this.base._routing.navigateToContext(o,{sLayout:n}).then(function(){var l=r.getLastHistoryEntry();l.oLastFocusControl=Object.assign({},l.oLastFocusControl,{controlId:g,focusInfo:{id:g}});}).catch(function(){L.warning("cannot set focus on last focused control");});},closeColumn:function(){var s=this.base.getView();var v=s.getViewData();var o=s.getBindingContext();var g=this.base;var h=o.getModel().getMetaModel();if(v&&v.viewLevel===1&&f.isDraftSupported(h,o.getPath())){c.fnProcessDataLossOrDraftDiscardConfirmation(function(){g._routing.navigateBackFromContext(o,{noPreservationCache:true});},Function.prototype,o,s.getController(),false);}else{g._routing.navigateBackFromContext(o,{noPreservationCache:true});}},override:{onExit:function(){this._oRoutingService&&this._oRoutingService.detachRouteMatched(this._fnRouteMatchedBound);},onInit:function(){var t=this;this._oView=this.base.getView();this._oAppComponent=c.getAppComponent(this._oView);this._oPageComponent=b.getOwnerComponentFor(this._oView);this._oRouter=this._oAppComponent.getRouter();this._oRouterProxy=this._oAppComponent.getRouterProxy();if(!this._oAppComponent||!this._oPageComponent){throw new Error("Failed to initialize controler extension 'sap.fe.core.controllerextesions.InternalRouting");}if(this._oAppComponent===this._oPageComponent){this._oPageComponent=null;}this._oAppComponent.getService("routingService").then(function(r){t._oRoutingService=r;t._fnRouteMatchedBound=t._onRouteMatched.bind(t);t._oRoutingService.attachRouteMatched(t._fnRouteMatchedBound);t._oTargetInformation=r.getTargetInformationFor(t._oPageComponent||t._oView);}).catch(function(){throw new Error("This controller extension cannot work without a 'routingService' on the main AppComponent");});}}},a);});
|
|
6
|
+
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/fe/core/controllerextensions/ControllerExtensionMetadata","sap/ui/core/mvc/OverrideExecution","sap/ui/core/Component","sap/fe/core/CommonUtils","sap/fe/core/BusyLocker","sap/fe/core/helpers/SemanticKeyHelper","sap/ui/model/Filter","sap/ui/model/FilterOperator","sap/base/Log","sap/fe/core/actions/messageHandling","sap/m/MessageBox","sap/fe/core/helpers/EditState","sap/fe/core/controllerextensions/MessageHandler","sap/fe/core/helpers/ModelHelper"],function(C,a,O,b,c,B,S,F,d,L,m,M,E,e,f){"use strict";return C.extend("sap.fe.core.controllerextensions.InternalRouting",{metadata:{methods:{"navigateToTarget":{"public":true,"final":false},"byId":{"public":false},"getView":{"public":false},"onRouteMatched":{"public":true,"final":false,overrideExecution:O.After},"onRouteMatchedFinished":{"public":true,"final":false,overrideExecution:O.After},"onBeforeBinding":{"public":true,"final":false,overrideExecution:O.After},"onAfterBinding":{"public":true,"final":false,overrideExecution:O.After},"navigateToContext":{"public":true,"final":true},"navigateBackFromContext":{"public":true,"final":true},"navigateForwardToContext":{"public":true,"final":true},"navigateBackFromTransientState":{"public":true,"final":true},"navigateToMessagePage":{"public":true,"final":true},"enterFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"exitFullScreen":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"closeColumn":{"public":true,"final":false,overrideExecution:sap.ui.core.mvc.OverrideExecution.Before},"isCurrentStateImpactedBy":{"public":true,"final":true}}},onRouteMatched:function(){},onRouteMatchedFinished:function(){},onBeforeBinding:function(o,p){var r=this.base.getView().getController().routing;if(r&&r.onBeforeBinding){r.onBeforeBinding(o,p);}},onAfterBinding:function(o,p){this._oAppComponent.getRootViewController().onContextBoundToView(o);var r=this.base.getView().getController().routing;if(r&&r.onAfterBinding){r.onAfterBinding(o,p);}},navigateToTarget:function(o,n,s,p){var N=this._oPageComponent&&this._oPageComponent.getNavigationConfiguration&&this._oPageComponent.getNavigationConfiguration(n);if(N){var D=N.detail;var r=D.route;var P=D.parameters;this._oRoutingService.navigateTo(o,r,P,p,s);}else{this._oRoutingService.navigateTo(o,null,null,p);}this._oView.getViewData();},navigateToContext:function(o,p){var t=this;var g={};p=p||{};if(o.isA("sap.ui.model.odata.v4.ODataListBinding")){if(p.asyncContext){this._oRouterProxy.activateRouteMatchSynchronization();p.asyncContext.then(function(o){t.navigateToContext(o,{checkNoHashChange:p.checkNoHashChange,editable:p.editable,bPersistOPScroll:p.bPersistOPScroll,updateFCLLevel:p.updateFCLLevel,bForceFocus:p.bForceFocus});}).catch(function(h){L.error("Error with the async context",h);});}else if(!p.bDeferredContext){throw"navigation to a list binding is not yet supported";}}if(p.callExtension){g.sourceBindingContext=o.getObject();g.bindingContext=o;if(p.oEvent){g.oEvent=p.oEvent;}if(this.base.getView().getController().routing.onBeforeNavigation(g)){return Promise.resolve();}}p.FCLLevel=this._getFCLLevel();return this._oRoutingService.navigateToContext(o,p,this._oView.getViewData(),this._oTargetInformation);},navigateBackFromContext:function(o,p){p=p||{};p.updateFCLLevel=-1;return this.navigateToContext(o,p);},navigateForwardToContext:function(o,p){if(this._oView.getBindingContext("internal").getProperty("messageFooterContainsErrors")===true){return Promise.resolve();}p=p||{};p.updateFCLLevel=1;return this.navigateToContext(o,p,true);},navigateBackFromTransientState:function(){var h=this._oRouterProxy.getHash();if(h.indexOf("(...)")!==-1){this._oRouterProxy.navBack();}},navigateToMessagePage:function(s,p){p=p||{};if(this._oRouterProxy.getHash().indexOf("i-action=create")>-1){return this._oRouterProxy.navToHash(this._oRoutingService.getDefaultCreateHash());}else{p.FCLLevel=this._getFCLLevel();return this._oAppComponent.getRootViewController().displayMessagePage(s,p);}},isCurrentStateImpactedBy:function(o){return this._oRoutingService.isCurrentStateImpactedBy(o);},_onRouteMatched:function(o){var t=o.getParameter("routeInformation")&&o.getParameter("routeInformation").targets;if(!t||t.indexOf(this._oTargetInformation.targetName)===-1){return;}var T;if(this._oPageComponent&&this._oPageComponent.getBindingContextPattern){T=this._oPageComponent.getBindingContextPattern();}T=T||this._oTargetInformation.contextPattern;if(T===null||T===undefined){T=o.getParameter("routePattern");}T=T.replace(":?query:","");var A=o.getParameters().arguments,D=false,n=o.getParameter("navigationInfo");for(var k in A){var v=A[k];if(v==="..."&&T.indexOf("{"+k+"}")>=0){D=true;n.bTargetEditable=true;}T=T.replace("{"+k+"}",v);}if(A["?query"]&&A["?query"].hasOwnProperty("i-action")){n.bActionCreate=true;}if(T&&T[0]!=="/"){T="/"+T;}this.onRouteMatched();var g=this._oView.getModel(),h;if(D){h=this._bindDeferred(T,n);}else{h=this._bindPage(T,g,n);}var i=this;h.finally(function(){i.onRouteMatchedFinished();});this._oAppComponent.getRootViewController().updateUIStateForView(this._oView,this._getFCLLevel());},_bindDeferred:function(t,n){this.onBeforeBinding(null,{editable:n.bTargetEditable});if(n.bDeferredContext||!n.oAsyncContext){if(this._oPageComponent&&this._oPageComponent.createDeferredContext){this._oPageComponent.createDeferredContext(t,n.bActionCreate);}}if(this._getBindingContext()&&this._getBindingContext().hasPendingChanges()){this._getBindingContext().getBinding().resetChanges();}this._setBindingContext(null);this.onAfterBinding(null);return Promise.resolve();},_bindPage:function(t,o,n){var g=this;if(t===""){return Promise.resolve(this._bindPageToContext(null,o,n));}else{return this._resolveSemanticPath(t,o).then(function(T){g._bindPageToPath(T,o,n);}).catch(function(h){var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");g.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("C_COMMON_SAPFE_ERROR"),description:h.message});});}},_createFilterFromSemanticPath:function(s,g,o){var k=s.substring(s.indexOf("(")+1,s.length-1).split(","),h;if(g.length!=k.length){return null;}var i=f.isFilteringCaseSensitive(o);if(g.length===1){var K=k[0];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}h=[new F({path:g[0].$PropertyPath,operator:d.EQ,value1:K,caseSensitive:i})];}else{var j={};k.forEach(function(p){var P=p.split("="),K=P[1];if(K.indexOf("'")===0&&K.lastIndexOf("'")===K.length-1){K=decodeURIComponent(K.substring(1,K.length-1));}j[P[0]]=K;});var l=false;h=g.map(function(p){var q=p.$PropertyPath,v=j[q];if(v!==undefined){return new F({path:q,operator:d.EQ,value1:v,caseSensitive:i});}else{l=true;return"XX";}});if(l){return null;}}var D=new F({filters:[new F("IsActiveEntity","EQ",false),new F("SiblingEntity/IsActiveEntity","EQ",null)],and:false});h.push(D);var n=new F(h,true);return n;},_getTechnicalPathFromSemanticPath:function(s,o,g){var h=o.getMetaModel(),i=h.getMetaContext(s).getPath();if(!g||g.length===0){return Promise.resolve(null);}var j=this._createFilterFromSemanticPath(s,g,h);if(j===null){return Promise.resolve(null);}var l=o.bindList("/"+i,undefined,undefined,j,{"$$groupId":"$auto.Heroes"});return l.requestContexts(0,2).then(function(k){if(k&&k.length){return k[0].getPath();}else{return null;}});},_checkPathForSemanticBookmarking:function(p,o){var g=/^[\/]?(\w+)\([^\/]+\)$/.exec(p);if(!g){return false;}var s="/"+g[1];var D=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftRoot");var h=o.getObject(s+"@com.sap.vocabularies.Common.v1.DraftNode");return D||h?true:false;},_resolveSemanticPath:function(p,o){var g=o.getMetaModel(),l=this._oRoutingService.getLastSemanticMapping(),s=this._oRouter.getHashChanger().getHash().split("?")[0],t=this;if(s&&s.lastIndexOf("/")===s.length-1){s=s.substring(0,s.length-1);}var r=s&&s.substr(0,s.indexOf("("));if(r.indexOf("/")===0){r=r.substring(1);}var A=this._checkPathForSemanticBookmarking(s,g),h=A&&S.getSemanticKeys(g,r);if(!h){return Promise.resolve(p);}else if(l&&l.semanticPath===p){return Promise.resolve(l.technicalPath);}else{return this._getTechnicalPathFromSemanticPath(s,o,h).then(function(T){if(T&&T!==p){t._oRoutingService.setLastSemanticMapping({technicalPath:T,semanticPath:p});return T;}else{return p;}});}},_bindPageToPath:function(t,o,n){var g=this._getBindingContext(),s=g&&g.getPath(),u=n.useContext;if(s!==t||(u&&u.getPath()===t)){var T;if(u&&u.getPath()===t){T=u;}else{T=this._createBindingContext(t,o);}if(T!==g){this._bindPageToContext(T,o,n);}}else if(!n.bReasonIsIappState&&E.isEditStateDirty()){this._refreshBindingContext(g);}},_bindPageToContext:function(o,g,n){var t=this;if(!o){this.onBeforeBinding(null);this.onAfterBinding(null);}else{var p=o.getBinding();if(!o.getBinding()||o.getBinding().isA("sap.ui.model.odata.v4.ODataListBinding")){o=this._createBindingContext(o.getPath(),g);if(E.isEditStateDirty()){setTimeout(function(){t._refreshBindingContext(o);},0);}}this.onBeforeBinding(o,{editable:n.bTargetEditable,listBinding:p,bPersistOPScroll:n.bPersistOPScroll,bDraftNavigation:n.bDraftNavigation,showPlaceholder:n.bShowPlaceholder});this._setBindingContext(o);this.onAfterBinding(o);}},_createBindingContext:function(p,o){var P=this._oPageComponent,s=P&&P.getEntitySet&&P.getEntitySet(),g=(P&&P.getContextPath&&P.getContextPath())||(s&&"/"+s),h=o.getMetaModel(),t=this,i={$$patchWithoutSideEffects:true,$$groupId:"$auto.Heroes",$$updateGroupId:"$auto"};if(s){var j=h.getObject(g+"/@com.sap.vocabularies.Common.v1.Messages/$Path");if(j){i.$select=j;}}var D=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftRoot");var k=h.getObject(g+"@com.sap.vocabularies.Common.v1.DraftNode");if(D||k){if(i.$select===undefined){i.$select="HasActiveEntity,HasDraftEntity,IsActiveEntity";}else{i.$select+=",HasActiveEntity,HasDraftEntity,IsActiveEntity";}}var H=o.bindContext(p,undefined,i);H.attachEventOnce("dataRequested",function(){B.lock(t._oView);});H.attachEventOnce("dataReceived",function(l){var n=l&&l.getParameter("error");B.unlock(t._oView);if(n){sap.ui.getCore().getLibraryResourceBundle("sap.fe.core",true).then(function(r){var q=new e();q.removeTransitionMessages();t.navigateToMessagePage(r.getText("C_COMMON_SAPFE_DATA_RECEIVED_ERROR"),{title:r.getText("SAPFE_ERROR"),description:n});}).catch(function(q){L.error("Error while getting the core resource bundle",q);});}});return H.getBoundContext();},_refreshBindingContext:function(o){var p=this._oPageComponent,s=this._oAppComponent.getSideEffectsService(),r=o.getPath(),g=p&&p.getEntitySet&&p.getEntitySet(),h=(p&&p.getContextPath&&p.getContextPath())||(g&&"/"+g),j=this._oView.getModel().getMetaModel(),k,n=[],P=[],l={TargetProperties:[],TargetEntities:[]};function q(t){var D,R=((t.getContext()&&t.getContext().getPath())||"").replace(r,""),u=(R?R.slice(1)+"/":R)+t.getPath();if(t.isA("sap.ui.model.odata.v4.ODataContextBinding")){D=t.getDependentBindings();if(D){for(var i=0;i<D.length;i++){q(D[i]);}}else if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataListBinding")){if(n.indexOf(u)===-1){n.push(u);}}else if(t.isA("sap.ui.model.odata.v4.ODataPropertyBinding")){if(P.indexOf(u)===-1){P.push(u);}}}if(h){k=j.getObject(h+"/@com.sap.vocabularies.Common.v1.Messages/$Path");}q(o.getBinding());var i;for(i=0;i<n.length;i++){l.TargetEntities.push({$NavigationPropertyPath:n[i]});}l.TargetProperties=P;if(k){l.TargetProperties.push({$PropertyPath:k});}s.requestSideEffects(l.TargetEntities.concat(l.TargetProperties),o);},_getBindingContext:function(){if(this._oPageComponent){return this._oPageComponent.getBindingContext();}else{return this._oView.getBindingContext();}},_setBindingContext:function(o){if(this._oPageComponent){this._oPageComponent.setBindingContext(o);}else{this._oView.setBindingContext(o);}},_getFCLLevel:function(){return this._oTargetInformation.FCLLevel;},switchFullScreen:function(){var s=this.base.getView();var o=s.getModel("fclhelper"),i=o.getProperty("/actionButtonsInfo/isFullScreen"),n=o.getProperty(i?"/actionButtonsInfo/exitFullScreen":"/actionButtonsInfo/fullScreen"),r=this._oAppComponent.getRootViewController();var g=r.getRightmostContext?r.getRightmostContext():s.getBindingContext();this.base._routing.navigateToContext(g,{sLayout:n}).catch(function(){L.warning("cannot switch between column and fullscreen");});},closeColumn:function(){var s=this.base.getView();var v=s.getViewData();var o=s.getBindingContext();var g=this.base;var h=o.getModel().getMetaModel();if(v&&v.viewLevel===1&&f.isDraftSupported(h,o.getPath())){c.fnProcessDataLossOrDraftDiscardConfirmation(function(){g._routing.navigateBackFromContext(o,{noPreservationCache:true});},Function.prototype,o,s.getController(),false);}else{g._routing.navigateBackFromContext(o,{noPreservationCache:true});}},override:{onExit:function(){this._oRoutingService&&this._oRoutingService.detachRouteMatched(this._fnRouteMatchedBound);},onInit:function(){var t=this;this._oView=this.base.getView();this._oAppComponent=c.getAppComponent(this._oView);this._oPageComponent=b.getOwnerComponentFor(this._oView);this._oRouter=this._oAppComponent.getRouter();this._oRouterProxy=this._oAppComponent.getRouterProxy();if(!this._oAppComponent||!this._oPageComponent){throw new Error("Failed to initialize controler extension 'sap.fe.core.controllerextesions.InternalRouting");}if(this._oAppComponent===this._oPageComponent){this._oPageComponent=null;}this._oAppComponent.getService("routingService").then(function(r){t._oRoutingService=r;t._fnRouteMatchedBound=t._onRouteMatched.bind(t);t._oRoutingService.attachRouteMatched(t._fnRouteMatchedBound);t._oTargetInformation=r.getTargetInformationFor(t._oPageComponent||t._oView);}).catch(function(){throw new Error("This controller extension cannot work without a 'routingService' on the main AppComponent");});}}},a);});
|
|
@@ -4,113 +4,233 @@
|
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
sap.ui.define(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
sap.ui.define(
|
|
8
|
+
[
|
|
9
|
+
"sap/ui/core/mvc/ControllerExtension",
|
|
10
|
+
"sap/ui/core/mvc/OverrideExecution",
|
|
11
|
+
"sap/fe/core/actions/messageHandling",
|
|
12
|
+
"sap/fe/core/CommonUtils",
|
|
13
|
+
"sap/fe/core/controllerextensions/ControllerExtensionMetadata"
|
|
14
|
+
],
|
|
15
|
+
function(ControllerExtension, OverrideExecution, messageHandling, CommonUtils, ControllerExtensionMetadata) {
|
|
16
|
+
"use strict";
|
|
13
17
|
|
|
14
|
-
/**
|
|
15
|
-
* @class A controller extension offering message handling.
|
|
16
|
-
*
|
|
17
|
-
* @name sap.fe.core.controllerextensions.MessageHandler
|
|
18
|
-
* @hideconstructor
|
|
19
|
-
* @public
|
|
20
|
-
* @experimental As of version 1.90.0
|
|
21
|
-
* @since 1.90.0
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
var MessageHandler = ControllerExtension.extend("sap.fe.core.controllerextensions.MessageHandler", {
|
|
25
|
-
metadata: {
|
|
26
|
-
methods: {
|
|
27
|
-
showMessageDialog: { "public": true, "final": true },
|
|
28
|
-
getShowBoundMessagesInMessageDialog: { "public": false, "final": false, overrideExecution: OverrideExecution.Instead }
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @private
|
|
34
|
-
* @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
|
|
35
|
-
* @function
|
|
36
|
-
*/
|
|
37
|
-
/**
|
|
38
|
-
* @private
|
|
39
|
-
* @name sap.fe.core.controllerextensions.MessageHandler.extend
|
|
40
|
-
* @function
|
|
41
|
-
*/
|
|
42
18
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
46
|
-
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
|
|
47
|
-
*
|
|
48
|
-
* If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
|
|
49
|
-
* this method has to be overridden.
|
|
19
|
+
* @class A controller extension offering message handling.
|
|
50
20
|
*
|
|
51
|
-
* @
|
|
52
|
-
* @
|
|
53
|
-
*/
|
|
54
|
-
getShowBoundMessagesInMessageDialog: function() {
|
|
55
|
-
return true;
|
|
56
|
-
},
|
|
57
|
-
// eslint-disable-next-line jsdoc/require-param
|
|
58
|
-
/**
|
|
59
|
-
* Shows a message dialog with transition messages if there are any.
|
|
60
|
-
* The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
|
|
61
|
-
* are removed from the message model. If there is more than one message, a list of messages is shown. The user
|
|
62
|
-
* can filter on message types and can display details as well as the long text. If there is one message,
|
|
63
|
-
* the dialog immediately shows the details of the message. If there is just one success message, a message
|
|
64
|
-
* toast is shown instead.
|
|
65
|
-
* @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
|
|
66
|
-
* to be shown, the promise is resolved immediately
|
|
67
|
-
* @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
|
|
21
|
+
* @name sap.fe.core.controllerextensions.MessageHandler
|
|
22
|
+
* @hideconstructor
|
|
68
23
|
* @public
|
|
69
24
|
* @experimental As of version 1.90.0
|
|
70
25
|
* @since 1.90.0
|
|
71
26
|
*/
|
|
72
|
-
showMessageDialog: function(mParameters) {
|
|
73
|
-
var customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
|
|
74
|
-
oOPInternalBindingContext = this.base.getView().getBindingContext("internal");
|
|
75
|
-
// set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
|
|
76
|
-
if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
|
|
77
|
-
oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
|
|
78
|
-
}
|
|
79
|
-
var bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
|
|
80
|
-
var oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
|
|
81
|
-
var bEtagMessage = mParameters && mParameters.bHasEtagMessage;
|
|
82
|
-
// reset isActionParameterDialogOpen
|
|
83
|
-
// cannot do this operations.js since it is not aware of the view
|
|
84
|
-
if (oOPInternalBindingContext) {
|
|
85
|
-
oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
|
|
86
|
-
}
|
|
87
|
-
return new Promise(function(resolve, reject) {
|
|
88
|
-
// we have to set a timeout to be able to access the most recent messages
|
|
89
|
-
setTimeout(function() {
|
|
90
|
-
// TODO: great API - will be changed later
|
|
91
|
-
messageHandling
|
|
92
|
-
.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
|
|
93
|
-
.then(resolve)
|
|
94
|
-
.catch(reject);
|
|
95
|
-
}, 0);
|
|
96
|
-
});
|
|
97
|
-
},
|
|
98
27
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
28
|
+
return ControllerExtension.extend(
|
|
29
|
+
"sap.fe.core.controllerextensions.MessageHandler",
|
|
30
|
+
{
|
|
31
|
+
metadata: {
|
|
32
|
+
methods: {
|
|
33
|
+
showMessageDialog: { "public": true, "final": true },
|
|
34
|
+
getShowBoundMessagesInMessageDialog: {
|
|
35
|
+
"public": false,
|
|
36
|
+
"final": false,
|
|
37
|
+
overrideExecution: OverrideExecution.Instead
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @private
|
|
44
|
+
* @name sap.fe.core.controllerextensions.MessageHandler.getMetadata
|
|
45
|
+
* @function
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* @private
|
|
49
|
+
* @name sap.fe.core.controllerextensions.MessageHandler.extend
|
|
50
|
+
* @function
|
|
51
|
+
*/
|
|
52
|
+
/**
|
|
53
|
+
* Determines whether or not bound messages are shown in the message dialog.
|
|
54
|
+
*
|
|
55
|
+
* This function is meant to be individually overridden by consuming controllers, but not to be called directly.
|
|
56
|
+
* The override execution is: {@link sap.ui.core.mvc.OverrideExecution.Instead}.
|
|
57
|
+
*
|
|
58
|
+
* If the bound messages are shown to the user with a different control like the (TODO:Link) MessageButton
|
|
59
|
+
* this method has to be overridden.
|
|
60
|
+
*
|
|
61
|
+
* @returns {boolean} Determines whether or not bound messages are shown in the message dialog.
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
getShowBoundMessagesInMessageDialog: function() {
|
|
65
|
+
return true;
|
|
66
|
+
},
|
|
67
|
+
// eslint-disable-next-line jsdoc/require-param
|
|
68
|
+
/**
|
|
69
|
+
* Shows a message dialog with transition messages if there are any.
|
|
70
|
+
* The message dialog is shown as a modal dialog. Once the user confirms the dialog, all transition messages
|
|
71
|
+
* are removed from the message model. If there is more than one message, a list of messages is shown. The user
|
|
72
|
+
* can filter on message types and can display details as well as the long text. If there is one message,
|
|
73
|
+
* the dialog immediately shows the details of the message. If there is just one success message, a message
|
|
74
|
+
* toast is shown instead.
|
|
75
|
+
* @returns {Promise} A promise that is resolved once the user closes the dialog. If there are no messages
|
|
76
|
+
* to be shown, the promise is resolved immediately
|
|
77
|
+
* @alias sap.fe.core.controllerextensions.MessageHandler#showMessageDialog
|
|
78
|
+
* @public
|
|
79
|
+
* @experimental As of version 1.90.0
|
|
80
|
+
* @since 1.90.0
|
|
81
|
+
*/
|
|
82
|
+
showMessageDialog: function(mParameters) {
|
|
83
|
+
var customMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : undefined,
|
|
84
|
+
oOPInternalBindingContext = this.base.getView().getBindingContext("internal");
|
|
85
|
+
// set isActionParameterDialog open so that it can be used in the controller extension to decide whether message dialog should open or not
|
|
86
|
+
if (mParameters && mParameters.isActionParameterDialogOpen && oOPInternalBindingContext) {
|
|
87
|
+
oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", true);
|
|
88
|
+
}
|
|
89
|
+
var bShowBoundMessages = this.getShowBoundMessagesInMessageDialog();
|
|
90
|
+
var oBindingContext = mParameters && mParameters.context ? mParameters.context : this.getView().getBindingContext();
|
|
91
|
+
var bEtagMessage = mParameters && mParameters.bHasEtagMessage;
|
|
92
|
+
// reset isActionParameterDialogOpen
|
|
93
|
+
// cannot do this operations.js since it is not aware of the view
|
|
94
|
+
if (oOPInternalBindingContext) {
|
|
95
|
+
oOPInternalBindingContext.setProperty("isActionParameterDialogOpen", false);
|
|
96
|
+
}
|
|
97
|
+
return new Promise(function(resolve, reject) {
|
|
98
|
+
// we have to set a timeout to be able to access the most recent messages
|
|
99
|
+
setTimeout(function() {
|
|
100
|
+
// TODO: great API - will be changed later
|
|
101
|
+
messageHandling
|
|
102
|
+
.showUnboundMessages(customMessages, oBindingContext, bEtagMessage, bShowBoundMessages)
|
|
103
|
+
.then(resolve)
|
|
104
|
+
.catch(reject);
|
|
105
|
+
}, 0);
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* You can remove the existing transition message from the message model with this method.
|
|
111
|
+
* With every user interaction that causes server communication (like clicking on an action, changing data),
|
|
112
|
+
* this method removes the existing transition messages from the message model.
|
|
113
|
+
* @param {boolean} keepBoundMessage Checks if the bound transition messages are not to be removed
|
|
114
|
+
*
|
|
115
|
+
* @alias sap.fe.core.controllerextensions.MessageHandler#removesTransitionMessages
|
|
116
|
+
* @private
|
|
117
|
+
*/
|
|
118
|
+
removeTransitionMessages: function(keepBoundMessage) {
|
|
119
|
+
if (!keepBoundMessage) {
|
|
120
|
+
messageHandling.removeBoundTransitionMessages();
|
|
121
|
+
}
|
|
122
|
+
messageHandling.removeUnboundTransitionMessages();
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
_checkNavigationToMessagePage: function(mParameters) {
|
|
126
|
+
var aUnboundMessages = messageHandling.getMessages(),
|
|
127
|
+
bShowBoundTransitionMessages = this.getShowBoundMessagesInMessageDialog(),
|
|
128
|
+
aBoundTransitionMessages = bShowBoundTransitionMessages ? messageHandling.getMessages(true, true) : [],
|
|
129
|
+
aCustomMessages = mParameters && mParameters.customMessages ? mParameters.customMessages : [],
|
|
130
|
+
bIsStickyEditMode = CommonUtils.isStickyEditMode(this.base.getView()),
|
|
131
|
+
mMessagePageParameters;
|
|
132
|
+
|
|
133
|
+
// TODO: Stick mode check is okay as long as the controller extension is used with sap.fe.core and sap.fe.core.AppComponent.
|
|
134
|
+
// It might be better to provide an extension to the consumer of the controller extension to provide this value.
|
|
135
|
+
|
|
136
|
+
// The message page can only show 1 message today, so we navigate to it when :
|
|
137
|
+
// 1. There are no bound transition messages to show,
|
|
138
|
+
// 2. There are no custom messages to show, &
|
|
139
|
+
// 3. There is exactly 1 unbound message in the message model with statusCode=503 and retry-After available
|
|
140
|
+
// 4. retryAfter is greater than 120 seconds
|
|
141
|
+
//
|
|
142
|
+
// In Addition, navigating away from a sticky session will destroy the session so we do not navigate to message page for now.
|
|
143
|
+
// TODO: check if navigation should be done in sticky edit mode.
|
|
144
|
+
if (
|
|
145
|
+
!bIsStickyEditMode &&
|
|
146
|
+
!aBoundTransitionMessages.length &&
|
|
147
|
+
!aCustomMessages.length &&
|
|
148
|
+
aUnboundMessages.length === 1
|
|
149
|
+
) {
|
|
150
|
+
var oMessage = aUnboundMessages[0],
|
|
151
|
+
oTechnicalDetails = oMessage.getTechnicalDetails();
|
|
152
|
+
var sRetryAfterMessage;
|
|
153
|
+
if (oTechnicalDetails && oTechnicalDetails.httpStatus === 503) {
|
|
154
|
+
if (oTechnicalDetails.retryAfter) {
|
|
155
|
+
var iSecondsBeforeRetry = this._getSecondsBeforeRetryAfter(oTechnicalDetails.retryAfter);
|
|
156
|
+
if (iSecondsBeforeRetry > 120) {
|
|
157
|
+
// TODO: For now let's keep getRetryAfterMessage in messageHandling because it is needed also by the dialog.
|
|
158
|
+
// We can plan to move this and the dialog logic both to messageHandler controller extension if required.
|
|
159
|
+
sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
|
|
160
|
+
mMessagePageParameters = {
|
|
161
|
+
description: sRetryAfterMessage
|
|
162
|
+
? sRetryAfterMessage + " " + oMessage.getMessage()
|
|
163
|
+
: oMessage.getMessage(),
|
|
164
|
+
navigateBackToOrigin: true
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
sRetryAfterMessage = messageHandling.getRetryAfterMessage(oMessage);
|
|
169
|
+
mMessagePageParameters = {
|
|
170
|
+
description: sRetryAfterMessage
|
|
171
|
+
? sRetryAfterMessage + " " + oMessage.getMessage()
|
|
172
|
+
: oMessage.getMessage(),
|
|
173
|
+
navigateBackToOrigin: true
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return mMessagePageParameters;
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
_getSecondsBeforeRetryAfter: function(dRetryAfter) {
|
|
182
|
+
var dCurrentDateTime = new Date(),
|
|
183
|
+
iCurrentDateTimeInMilliSeconds = dCurrentDateTime.getTime(),
|
|
184
|
+
iRetryAfterDateTimeInMilliSeconds = dRetryAfter.getTime(),
|
|
185
|
+
iSecondsBeforeRetry = (iRetryAfterDateTimeInMilliSeconds - iCurrentDateTimeInMilliSeconds) / 1000;
|
|
186
|
+
return iSecondsBeforeRetry;
|
|
187
|
+
},
|
|
188
|
+
/**
|
|
189
|
+
* Shows a message page or a message dialog based on the messages in the message dialog.
|
|
190
|
+
* @param mParameters
|
|
191
|
+
* @returns {Promise} A promise that is resolved once the user closes the message dialog or when navigation to the message page is complete. If there are no messages
|
|
192
|
+
* to be shown, the promise is resolved immediately
|
|
193
|
+
* @private
|
|
194
|
+
*/
|
|
195
|
+
showMessages: function(mParameters) {
|
|
196
|
+
var mMessagePageParameters = this._checkNavigationToMessagePage(mParameters);
|
|
197
|
+
if (mMessagePageParameters) {
|
|
198
|
+
// navigate to message page.
|
|
199
|
+
// handler before page navigation is triggered, for example to close the action parameter dialog
|
|
200
|
+
mParameters && mParameters.messagePageNavigationCallback && mParameters.messagePageNavigationCallback();
|
|
201
|
+
|
|
202
|
+
mMessagePageParameters.handleShellBack = true;
|
|
203
|
+
// TODO: Use Illustrated message instead of normal message page
|
|
204
|
+
// TODO: Return value needs to provided but since this function is private for now hence we can skip this.
|
|
205
|
+
this.removeTransitionMessages();
|
|
206
|
+
var oResourceBundle = sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");
|
|
207
|
+
if (this.base._routing) {
|
|
208
|
+
return new Promise(
|
|
209
|
+
function(resolve, reject) {
|
|
210
|
+
// we have to set a timeout to be able to access the most recent messages
|
|
211
|
+
setTimeout(
|
|
212
|
+
function() {
|
|
213
|
+
// TODO: great API - will be changed later
|
|
214
|
+
this.base._routing
|
|
215
|
+
.navigateToMessagePage(
|
|
216
|
+
oResourceBundle.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),
|
|
217
|
+
mMessagePageParameters
|
|
218
|
+
)
|
|
219
|
+
.then(resolve)
|
|
220
|
+
.catch(reject);
|
|
221
|
+
}.bind(this),
|
|
222
|
+
0
|
|
223
|
+
);
|
|
224
|
+
}.bind(this)
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
// navigate to message dialog
|
|
229
|
+
return this.showMessageDialog(mParameters);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
ControllerExtensionMetadata
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
);
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
(c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
|
|
5
5
|
*/
|
|
6
|
-
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/core/actions/messageHandling"],function(C,O,m){"use strict";
|
|
6
|
+
sap.ui.define(["sap/ui/core/mvc/ControllerExtension","sap/ui/core/mvc/OverrideExecution","sap/fe/core/actions/messageHandling","sap/fe/core/CommonUtils","sap/fe/core/controllerextensions/ControllerExtensionMetadata"],function(C,O,m,a,b){"use strict";return C.extend("sap.fe.core.controllerextensions.MessageHandler",{metadata:{methods:{showMessageDialog:{"public":true,"final":true},getShowBoundMessagesInMessageDialog:{"public":false,"final":false,overrideExecution:O.Instead}}},getShowBoundMessagesInMessageDialog:function(){return true;},showMessageDialog:function(p){var c=p&&p.customMessages?p.customMessages:undefined,o=this.base.getView().getBindingContext("internal");if(p&&p.isActionParameterDialogOpen&&o){o.setProperty("isActionParameterDialogOpen",true);}var s=this.getShowBoundMessagesInMessageDialog();var B=p&&p.context?p.context:this.getView().getBindingContext();var e=p&&p.bHasEtagMessage;if(o){o.setProperty("isActionParameterDialogOpen",false);}return new Promise(function(r,d){setTimeout(function(){m.showUnboundMessages(c,B,e,s).then(r).catch(d);},0);});},removeTransitionMessages:function(k){if(!k){m.removeBoundTransitionMessages();}m.removeUnboundTransitionMessages();},_checkNavigationToMessagePage:function(p){var u=m.getMessages(),s=this.getShowBoundMessagesInMessageDialog(),B=s?m.getMessages(true,true):[],c=p&&p.customMessages?p.customMessages:[],i=a.isStickyEditMode(this.base.getView()),M;if(!i&&!B.length&&!c.length&&u.length===1){var o=u[0],t=o.getTechnicalDetails();var r;if(t&&t.httpStatus===503){if(t.retryAfter){var S=this._getSecondsBeforeRetryAfter(t.retryAfter);if(S>120){r=m.getRetryAfterMessage(o);M={description:r?r+" "+o.getMessage():o.getMessage(),navigateBackToOrigin:true};}}else{r=m.getRetryAfterMessage(o);M={description:r?r+" "+o.getMessage():o.getMessage(),navigateBackToOrigin:true};}}}return M;},_getSecondsBeforeRetryAfter:function(r){var c=new Date(),i=c.getTime(),R=r.getTime(),s=(R-i)/1000;return s;},showMessages:function(p){var M=this._checkNavigationToMessagePage(p);if(M){p&&p.messagePageNavigationCallback&&p.messagePageNavigationCallback();M.handleShellBack=true;this.removeTransitionMessages();var r=sap.ui.getCore().getLibraryResourceBundle("sap.fe.core");if(this.base._routing){return new Promise(function(c,d){setTimeout(function(){this.base._routing.navigateToMessagePage(r.getText("C_MESSAGE_HANDLING_SAPFE_503_TITLE"),M).then(c).catch(d);}.bind(this),0);}.bind(this));}}else{return this.showMessageDialog(p);}}},b);});
|