@sapui5/sap.ushell 1.124.3 → 1.126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/main/js/sap/ushell/.library +1 -1
- package/src/main/js/sap/ushell/AppInfoParameters.js +29 -27
- package/src/main/js/sap/ushell/Container.js +143 -72
- package/src/main/js/sap/ushell/Fiori20Adapter.js +1 -1
- package/src/main/js/sap/ushell/Fiori20AdapterTest.js +13 -10
- package/src/main/js/sap/ushell/Layout.js +7 -4
- package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
- package/src/main/js/sap/ushell/SessionHandler.js +35 -31
- package/src/main/js/sap/ushell/TechnicalParameters.js +5 -3
- package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
- package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/Ui5ServiceFactory.js +9 -3
- package/src/main/js/sap/ushell/UserActivityLog.js +5 -3
- package/src/main/js/sap/ushell/_URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
- package/src/main/js/sap/ushell/_URLTemplateProcessor/DependencyGraph.js +1 -1
- package/src/main/js/sap/ushell/_URLTemplateProcessor/Functions.js +1 -1
- package/src/main/js/sap/ushell/_URLTemplateProcessor/Resolvers.js +1 -1
- package/src/main/js/sap/ushell/_URLTemplateProcessor/TemplateParameterParser.js +1 -1
- package/src/main/js/sap/ushell/_URLTemplateProcessor/utils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +4 -4
- package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +2 -4
- package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +12 -10
- package/src/main/js/sap/ushell/adapters/cdm/MenuAdapter.js +8 -6
- package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +14 -13
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +7 -5
- package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +15 -13
- package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +34 -0
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +6 -4
- package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +7 -5
- package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +10 -12
- package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +7 -5
- package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +5 -3
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +6 -4
- package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +5 -4
- package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +5 -4
- package/src/main/js/sap/ushell/api/RTA.js +14 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +10 -5
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +1 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaAgent/i18n/i18n_sh.properties +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +5 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +37 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +21 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +21 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +38 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +19 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +20 -3
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +28 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +25 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +8 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +20 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +18 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +16 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +14 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +24 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +18 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +23 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +21 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +28 -4
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +19 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/logger.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/state.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +15 -5
- package/src/main/js/sap/ushell/bootstrap/common/common.read.ushell.config.from.url.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/common/common.util.js +8 -1
- package/src/main/js/sap/ushell/bootstrap/sandbox2.js +11 -6
- package/src/main/js/sap/ushell/components/CatalogsManager.js +28 -17
- package/src/main/js/sap/ushell/components/ComponentKeysHandler.js +14 -12
- package/src/main/js/sap/ushell/components/HomepageManager.js +6 -4
- package/src/main/js/sap/ushell/components/MessagingHelper.js +5 -4
- package/src/main/js/sap/ushell/components/SharedComponentUtils.js +6 -4
- package/src/main/js/sap/ushell/components/_HeaderManager/ControlManager.js +6 -4
- package/src/main/js/sap/ushell/components/_HeaderManager/ShellHeader.controller.js +6 -3
- package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +4 -2
- package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +18 -23
- package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +6 -4
- package/src/main/js/sap/ushell/components/appfinder/Component.js +6 -4
- package/src/main/js/sap/ushell/components/appfinder/EasyAccess.controller.js +10 -10
- package/src/main/js/sap/ushell/components/appfinder/HierarchyApps.controller.js +6 -4
- package/src/main/js/sap/ushell/components/appfinder/HierarchyFolders.controller.js +5 -3
- package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +78 -3
- package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxesCache.js +37 -7
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +239 -94
- package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/elements/model.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/relatedShellElements/RelatedShellElements.js +3 -2
- package/src/main/js/sap/ushell/components/cards/Card.controller.js +5 -3
- package/src/main/js/sap/ushell/components/cepsearchresult/app/Main.controller.js +9 -14
- package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/i18n/i18n_sh.properties +5 -5
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Application.js +7 -14
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sh.properties +19 -19
- package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +2 -2
- package/src/main/js/sap/ushell/components/container/IframePOSTUtils.js +1 -1
- package/src/main/js/sap/ushell/components/container/resources/resources_sh.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +3 -3
- package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/controller/WidgetGallery.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sh.properties +3 -3
- package/src/main/js/sap/ushell/components/contentFinder/view/WidgetGallery.view.xml +3 -5
- package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifestAppSearch.json +1 -1
- package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.controller.js +2 -27
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/pages/ActionMode.js +6 -5
- package/src/main/js/sap/ushell/components/pages/Component.js +5 -4
- package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +9 -7
- package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +10 -8
- package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +18 -13
- package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +6 -5
- package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +31 -34
- package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/controller/MenuBar.controller.js +8 -6
- package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +8 -5
- package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +6 -4
- package/src/main/js/sap/ushell/components/shell/Search/Component.js +5 -4
- package/src/main/js/sap/ushell/components/shell/Search/ESearch.js +5 -4
- package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/Component.js +10 -8
- package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +17 -5
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +9 -7
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/AppearanceEntry.js +6 -4
- package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +5 -3
- package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +3 -3
- package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesEntry.js +6 -4
- package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountEntry.js +6 -4
- package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +9 -7
- package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +6 -4
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/UserDefaultsEntry.js +7 -5
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +11 -9
- package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +10 -7
- package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/UserLanguageRegionEntry.js +5 -3
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +6 -4
- package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +11 -9
- package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +5 -3
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +6 -4
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.controller.js +5 -3
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/Component.js +3 -0
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.controller.js +5 -3
- package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +10 -10
- package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +6 -6
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sh.properties +17 -17
- package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +6 -4
- package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
- package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
- package/src/main/js/sap/ushell/library.js +1 -1
- package/src/main/js/sap/ushell/navigationMode.js +1 -1
- package/src/main/js/sap/ushell/performance/ShellAnalytics.js +8 -6
- package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
- package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
- package/src/main/js/sap/ushell/plugins/rta/i18n/i18n_sh.properties +2 -2
- package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +6 -4
- package/src/main/js/sap/ushell/renderer/History.js +1 -2
- package/src/main/js/sap/ushell/renderer/LogonFrameProvider.js +5 -3
- package/src/main/js/sap/ushell/renderer/Renderer.js +34 -35
- package/src/main/js/sap/ushell/renderer/Shell.controller.js +37 -37
- package/src/main/js/sap/ushell/renderer/Shell.view.js +9 -4
- package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.controller.js +8 -6
- package/src/main/js/sap/ushell/renderer/allMyApps/AllMyAppsManager.js +13 -11
- package/src/main/js/sap/ushell/renderer/resources/resources.properties +4 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +23 -26
- package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +21 -24
- package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +4 -10
- package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +19 -22
- package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +30 -33
- package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +23 -26
- package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +28 -31
- package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +4 -928
- package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +30 -33
- package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +4 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +23 -26
- package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +18 -21
- package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +25 -28
- package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +28 -31
- package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +53 -56
- package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +29 -32
- package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +21 -24
- package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +20 -23
- package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +20 -23
- package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +20 -23
- package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +28 -31
- package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +23 -26
- package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +20 -23
- package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +25 -28
- package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +4 -10
- package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +22 -25
- package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +21 -24
- package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +33 -36
- package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +22 -25
- package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +17 -20
- package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +20 -23
- package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +21 -24
- package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +121 -124
- package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +21 -24
- package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +23 -26
- package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +4 -10
- package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +22 -25
- package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +24 -27
- package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +25 -28
- package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +22 -25
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +19 -22
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +25 -28
- package/src/main/js/sap/ushell/renderer/search/searchComponent/Component.js +4 -3
- package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
- package/src/main/js/sap/ushell/services/AppConfiguration.js +326 -274
- package/src/main/js/sap/ushell/services/AppLifeCycle.js +14 -14
- package/src/main/js/sap/ushell/services/AppState.js +1 -1
- package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
- package/src/main/js/sap/ushell/services/BookmarkV2.js +12 -10
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +635 -755
- package/src/main/js/sap/ushell/services/CommonDataModel.js +25 -16
- package/src/main/js/sap/ushell/services/Configuration.js +5 -4
- package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
- package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +2 -2
- package/src/main/js/sap/ushell/services/DarkModeSupport.js +9 -7
- package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/Extension.js +18 -1
- package/src/main/js/sap/ushell/services/FlpLaunchPage.js +8 -6
- package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension.js +18 -1
- package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
- package/src/main/js/sap/ushell/services/Menu.js +6 -4
- package/src/main/js/sap/ushell/services/Message.js +91 -412
- package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
- package/src/main/js/sap/ushell/services/MessageInternal.js +448 -0
- package/src/main/js/sap/ushell/services/NavTargetResolution.js +2 -1
- package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation.js +3 -3
- package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
- package/src/main/js/sap/ushell/services/Notifications.js +4 -2
- package/src/main/js/sap/ushell/services/NotificationsV2.js +7 -5
- package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
- package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
- package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
- package/src/main/js/sap/ushell/services/Pages.js +1 -1
- package/src/main/js/sap/ushell/services/Personalization.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager.js +7 -5
- package/src/main/js/sap/ushell/services/ReferenceResolver.js +234 -238
- package/src/main/js/sap/ushell/services/Search.js +1 -1
- package/src/main/js/sap/ushell/services/SearchCEP.js +5 -4
- package/src/main/js/sap/ushell/services/SearchableContent.js +1 -1
- package/src/main/js/sap/ushell/services/ShellNavigation.js +3 -3
- package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +38 -56
- package/src/main/js/sap/ushell/services/ShellNavigationInternal.js +1 -1
- package/src/main/js/sap/ushell/services/SmartNavigation.js +8 -6
- package/src/main/js/sap/ushell/services/SpaceContent.js +16 -14
- package/src/main/js/sap/ushell/services/UITracer.js +1 -1
- package/src/main/js/sap/ushell/services/URLParsing.js +6 -4
- package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
- package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +1 -1
- package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +89 -78
- package/src/main/js/sap/ushell/services/UserDefaultParameters.js +229 -273
- package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
- package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
- package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Formatter.js +11 -11
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundIndex.js +9 -6
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundProvider.js +16 -25
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/ParameterMapping.js +3 -1
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/PrelaunchOperations.js +20 -24
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Search.js +52 -45
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/StagedLogger.js +3 -5
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/SystemContext.js +5 -2
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Utils.js +1 -1
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/VirtualInbounds.js +1 -1
- package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/XAppStateProcessing.js +63 -80
- package/src/main/js/sap/ushell/services/_CommonDataModel/SiteConverter.js +1 -1
- package/src/main/js/sap/ushell/services/_CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
- package/src/main/js/sap/ushell/services/_MessageBroker/MessageBrokerEngine.js +1 -1
- package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +6 -4
- package/src/main/js/sap/ushell/services/_PluginManager/Extensions.js +1 -1
- package/src/main/js/sap/ushell/services/_PluginManager/HeaderExtensions.js +1 -1
- package/src/main/js/sap/ushell/services/_PluginManager/MenuExtensions.js +3 -3
- package/src/main/js/sap/ushell/services/_Ui5ComponentLoader/utils.js +2 -2
- package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
- package/src/main/js/sap/ushell/themes/base/ShellHeader.less +32 -24
- package/src/main/js/sap/ushell/themes/sap_belize/library.source.less +10 -1
- package/src/main/js/sap/ushell/themes/sap_belize_base/.theming +4 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ActionMode.less +107 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/AddBookmarkButton.less +37 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/AnchorItem.less +81 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/AnchorNavigationBar.less +86 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/AppearanceView.less +213 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ApplicationContainer.less +37 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Catalog.less +387 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ContactSupport.less +12 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ContentFinder.less +26 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/CustomGroupHeaderListItem.less +10 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Dashboard.less +66 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/DynamicTile.less +114 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Factsheet.less +225 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/FloatingContainer.less +125 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/FlpSettings.less +83 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/GroupList.less +68 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/GroupListItem.less +54 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/IconFonts.less +21 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ImageTile.less +23 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/LoadingDialog.less +47 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/MenuBar.less +23 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Notifications.less +135 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Page.less +49 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/PictureTile.less +119 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/PictureViewer.less +25 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/PlusTile.less +38 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/QuickAccess.less +18 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/RightFloatingContainerItem.less +82 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/SearchCEP.less +121 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/SearchFLP.less +10 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Section.less +60 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ShellAppTitle.less +207 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ShellFloatingAction.less +61 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ShellFloatingActions.less +14 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ShellHeader.less +389 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ShellLayout.less +168 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/SidePane.less +8 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/StaticTile.less +9 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/SubHeader.less +3 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/SysInfoBar.less +164 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/TargetMappingConfiguration.less +8 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/Tile.less +223 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/TileBase.less +152 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/TileContainer.less +495 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/TilePlaceholder.less +75 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/TileState.less +62 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ToolAreaItem.less +85 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/UserActionsMenu.less +23 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/UserConsentDialog.less +52 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/UserSettings.less +113 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ViewPortContainer.less +28 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPage.less +58 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageButton.less +60 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageCell.less +144 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageColumn.less +39 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageColumnResizer.less +128 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/WorkPageRow.less +987 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/library.source.less +64 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/shared.less +40 -0
- package/src/main/js/sap/ushell/themes/sap_belize_hcb/library.source.less +10 -1
- package/src/main/js/sap/ushell/themes/sap_belize_hcw/library.source.less +10 -1
- package/src/main/js/sap/ushell/themes/sap_horizon/ShellHeader.less +9 -18
- package/src/main/js/sap/ushell/themes/sap_horizon/Tile.less +2 -6
- package/src/main/js/sap/ushell/themes/sap_horizon_dark/ShellHeader.less +9 -18
- package/src/main/js/sap/ushell/themes/sap_horizon_hcb/ShellHeader.less +7 -14
- package/src/main/js/sap/ushell/themes/sap_horizon_hcw/ShellHeader.less +7 -14
- package/src/main/js/sap/ushell/ui/AppContainer.js +5 -3
- package/src/main/js/sap/ushell/ui/ContentNodeSelector.js +78 -21
- package/src/main/js/sap/ushell/ui/ContentNodeSelectorRenderer.js +32 -0
- package/src/main/js/sap/ushell/ui/ShellHeader.js +8 -5
- package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +1 -1
- package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +5 -4
- package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +6 -5
- package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +11 -7
- package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.fragment.xml +3 -3
- package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +4 -4
- package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +6 -4
- package/src/main/js/sap/ushell/ui/footerbar/JamDiscussButton.js +8 -5
- package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +8 -6
- package/src/main/js/sap/ushell/ui/footerbar/LogoutButton.js +10 -7
- package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +5 -3
- package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +8 -6
- package/src/main/js/sap/ushell/ui/launchpad/CatalogEntryContainer.js +7 -4
- package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/Section.js +3 -6
- package/src/main/js/sap/ushell/ui/launchpad/TileContainer.js +14 -10
- package/src/main/js/sap/ushell/ui/launchpad/ViewPortState.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +10 -7
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceAbap.js +4 -3
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +5 -3
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLaunchPage.js +3 -0
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLink.js +5 -3
- package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellHeadItem.js +3 -8
- package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -2
- package/src/main/js/sap/ushell/ui/utils.js +1 -1
- package/src/main/js/sap/ushell/ui5service/ShellUIService.js +1 -1
- package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
- package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +9 -7
- package/src/main/js/sap/ushell/utils/UriParameters.js +43 -0
- package/src/main/js/sap/ushell/utils/UrlParsing.js +2 -4
- package/src/main/js/sap/ushell/utils/UrlShortening.js +1 -1
- package/src/main/js/sap/ushell/utils/WindowUtils.js +20 -5
- package/src/main/js/sap/ushell/utils/chipsUtils.js +4 -3
- package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +305 -305
- package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +22 -5
- package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +7 -6
- package/src/main/js/sap/ushell/utils/workpage/resources/resources_en.properties +5 -4
- package/src/main/js/sap/ushell/utils/workpage/resources/resources_sh.properties +21 -20
- package/src/main/js/sap/ushell/utils.js +69 -64
- package/src/test/js/sap/ushell/bootstrap/sandbox.js +6 -8
- package/ui5.yaml +1 -1
- package/src/main/js/sap/ushell/ui/ContentNodeSelector.control.xml +0 -26
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
* In the future, the custom resolver mechanism should be probably moved towards modifying (or only adding to the list of Inbounds),
|
|
30
30
|
* this way a single data source has to be altered to support consistently getLinks, isIntentSupported.
|
|
31
31
|
*
|
|
32
|
-
* @version 1.
|
|
32
|
+
* @version 1.126.0
|
|
33
33
|
*/
|
|
34
34
|
sap.ui.define([
|
|
35
35
|
"sap/base/Log",
|
|
@@ -52,7 +52,8 @@ sap.ui.define([
|
|
|
52
52
|
"sap/ushell/services/_ClientSideTargetResolution/XAppStateProcessing",
|
|
53
53
|
"sap/ushell/TechnicalParameters",
|
|
54
54
|
"sap/ushell/utils",
|
|
55
|
-
"sap/ushell/utils/UrlParsing"
|
|
55
|
+
"sap/ushell/utils/UrlParsing",
|
|
56
|
+
"sap/ushell/Container"
|
|
56
57
|
], function (
|
|
57
58
|
Log,
|
|
58
59
|
fnIsPlainObject,
|
|
@@ -73,8 +74,9 @@ sap.ui.define([
|
|
|
73
74
|
_VirtualInbounds,
|
|
74
75
|
_XAppStateProcessing,
|
|
75
76
|
TechnicalParameters,
|
|
76
|
-
|
|
77
|
-
UrlParsing
|
|
77
|
+
ushellUtils,
|
|
78
|
+
UrlParsing,
|
|
79
|
+
Container
|
|
78
80
|
) {
|
|
79
81
|
"use strict";
|
|
80
82
|
|
|
@@ -120,8 +122,11 @@ sap.ui.define([
|
|
|
120
122
|
*
|
|
121
123
|
* Usage:
|
|
122
124
|
* <pre>
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
+
* sap.ui.require(["sap/ushell/Container"], function(Container) {
|
|
126
|
+
* Container.getServiceAsync("ClientSideTargetResolution").then(function (oService) {
|
|
127
|
+
* oService.isIntentSupported("#SemanticObject-action");
|
|
128
|
+
* });
|
|
129
|
+
* });
|
|
125
130
|
* </pre>
|
|
126
131
|
*
|
|
127
132
|
* @param {object} oAdapter Adapter, provides an array of Inbounds.
|
|
@@ -225,24 +230,22 @@ sap.ui.define([
|
|
|
225
230
|
* @since 1.34.0
|
|
226
231
|
*/
|
|
227
232
|
ClientSideTargetResolution.prototype.resolveHashFragment = function (sHashFragment) {
|
|
228
|
-
var that = this;
|
|
229
233
|
var oDeferred = new jQuery.Deferred();
|
|
230
234
|
// NOTE: adapter may not implement fallback function
|
|
231
235
|
var fnBoundFallback = this._oAdapter.resolveHashFragmentFallback && this._oAdapter.resolveHashFragmentFallback.bind(this._oAdapter);
|
|
232
236
|
var aSegments = this._extractInboundFilter(sHashFragment);
|
|
233
237
|
|
|
234
|
-
this._oInboundProvider.getInbounds(aSegments)
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
);
|
|
238
|
+
this._oInboundProvider.getInbounds(aSegments)
|
|
239
|
+
.then((oInboundIndex) => {
|
|
240
|
+
return this._resolveHashFragment(sHashFragment, fnBoundFallback, oInboundIndex);
|
|
241
|
+
})
|
|
242
|
+
.then((oResolvedHashFragment) => {
|
|
243
|
+
oDeferred.resolve(oResolvedHashFragment);
|
|
244
|
+
})
|
|
245
|
+
.catch((oError) => {
|
|
246
|
+
oDeferred.reject(oError);
|
|
247
|
+
});
|
|
248
|
+
|
|
246
249
|
return oDeferred.promise();
|
|
247
250
|
};
|
|
248
251
|
|
|
@@ -256,22 +259,22 @@ sap.ui.define([
|
|
|
256
259
|
* @since 1.38.0
|
|
257
260
|
*/
|
|
258
261
|
ClientSideTargetResolution.prototype.resolveTileIntent = function (sHashFragment) {
|
|
259
|
-
var that = this;
|
|
260
262
|
var oDeferred = new jQuery.Deferred();
|
|
261
263
|
|
|
262
264
|
// NOTE: adapter may not implement fallback function
|
|
263
265
|
var aSegments = this._extractInboundFilter(sHashFragment);
|
|
264
266
|
|
|
265
|
-
this._oInboundProvider.getInbounds(aSegments)
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
267
|
+
this._oInboundProvider.getInbounds(aSegments)
|
|
268
|
+
.then((oInboundIndex) => {
|
|
269
|
+
return this._resolveTileIntent(sHashFragment, undefined, oInboundIndex);
|
|
270
|
+
})
|
|
271
|
+
.then((oResolvedIntent) => {
|
|
272
|
+
oDeferred.resolve(oResolvedIntent);
|
|
273
|
+
})
|
|
274
|
+
.catch((oError) => {
|
|
275
|
+
oDeferred.reject(oError);
|
|
276
|
+
});
|
|
277
|
+
|
|
275
278
|
return oDeferred.promise();
|
|
276
279
|
};
|
|
277
280
|
|
|
@@ -292,15 +295,17 @@ sap.ui.define([
|
|
|
292
295
|
);
|
|
293
296
|
|
|
294
297
|
this._resolveTileIntent(sHashFragment, undefined /* fnBoundFallback */, oInboundIndex)
|
|
295
|
-
.
|
|
296
|
-
|
|
298
|
+
.then((oResolvedTileIntent) => {
|
|
299
|
+
oDeferred.resolve(oResolvedTileIntent);
|
|
300
|
+
})
|
|
301
|
+
.catch((oError) => {
|
|
302
|
+
oDeferred.reject(oError);
|
|
303
|
+
});
|
|
297
304
|
|
|
298
305
|
return oDeferred.promise();
|
|
299
306
|
};
|
|
300
307
|
|
|
301
|
-
ClientSideTargetResolution.prototype._resolveHashFragment = function (sHashFragment, fnBoundFallback, oInboundIndex) {
|
|
302
|
-
var that = this;
|
|
303
|
-
var oDeferred = new jQuery.Deferred();
|
|
308
|
+
ClientSideTargetResolution.prototype._resolveHashFragment = async function (sHashFragment, fnBoundFallback, oInboundIndex) {
|
|
304
309
|
var sFixedHashFragment = sHashFragment.indexOf("#") === 0 ? sHashFragment : "#" + sHashFragment;
|
|
305
310
|
var oShellHash = UrlParsing.parseShellHash(sFixedHashFragment);
|
|
306
311
|
|
|
@@ -308,58 +313,44 @@ sap.ui.define([
|
|
|
308
313
|
Log.error("Could not parse shell hash '" + sHashFragment + "'",
|
|
309
314
|
"please specify a valid shell hash",
|
|
310
315
|
"sap.ushell.services.ClientSideTargetResolution");
|
|
311
|
-
|
|
316
|
+
throw new Error(`Could not parse shell hash '${sHashFragment}'please specify a valid shell hash`);
|
|
312
317
|
}
|
|
313
318
|
|
|
314
|
-
oShellHash.formFactor =
|
|
319
|
+
oShellHash.formFactor = ushellUtils.getFormFactor();
|
|
315
320
|
|
|
316
|
-
this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true })
|
|
317
|
-
.fail(function (sError) {
|
|
318
|
-
Log.error("Could not resolve " + sHashFragment,
|
|
319
|
-
"_getMatchingInbounds promise rejected with: " + sError,
|
|
320
|
-
"sap.ushell.services.ClientSideTargetResolution");
|
|
321
|
-
oDeferred.reject(sError);
|
|
322
|
-
})
|
|
323
|
-
.done(function (aMatchingTargets) {
|
|
324
|
-
var oMatchingTarget;
|
|
325
|
-
|
|
326
|
-
if (aMatchingTargets.length === 0) {
|
|
327
|
-
Log.warning(
|
|
328
|
-
"Could not resolve " + sHashFragment,
|
|
329
|
-
"rejecting promise",
|
|
330
|
-
"sap.ushell.services.ClientSideTargetResolution"
|
|
331
|
-
);
|
|
332
|
-
oDeferred.reject("Could not resolve navigation target");
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
321
|
+
let aMatchingTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true });
|
|
335
322
|
|
|
336
|
-
|
|
323
|
+
if (aMatchingTargets.length === 0) {
|
|
324
|
+
Log.warning(
|
|
325
|
+
"Could not resolve " + sHashFragment,
|
|
326
|
+
"rejecting promise",
|
|
327
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
328
|
+
);
|
|
329
|
+
throw new Error(`Could not resolve ${sHashFragment}`);
|
|
330
|
+
}
|
|
337
331
|
|
|
338
|
-
|
|
332
|
+
aMatchingTargets = this._applySapNavigationScopeFilter(aMatchingTargets, oShellHash);
|
|
339
333
|
|
|
340
|
-
|
|
341
|
-
// replacer for JSON.stringify to show undefined values
|
|
342
|
-
var fnUndefinedReplacer = function (sKey, vVal) {
|
|
343
|
-
return (this[sKey] === undefined) ? "<undefined>" : vVal;
|
|
344
|
-
};
|
|
345
|
-
var fnReplacer = function (key, value) {
|
|
346
|
-
return (key === "_original") ? undefined : fnUndefinedReplacer.call(this, key, value);
|
|
347
|
-
};
|
|
348
|
-
var sMatchedTarget = JSON.stringify(oMatchingTarget, fnReplacer, " ");
|
|
334
|
+
const oMatchingTarget = aMatchingTargets[0];
|
|
349
335
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
336
|
+
if (Log.getLevel() >= Log.Level.DEBUG) {
|
|
337
|
+
// replacer for JSON.stringify to show undefined values
|
|
338
|
+
var fnUndefinedReplacer = function (sKey, vVal) {
|
|
339
|
+
return (this[sKey] === undefined) ? "<undefined>" : vVal;
|
|
340
|
+
};
|
|
341
|
+
var fnReplacer = function (key, value) {
|
|
342
|
+
return (key === "_original") ? undefined : fnUndefinedReplacer.call(this, key, value);
|
|
343
|
+
};
|
|
344
|
+
var sMatchedTarget = JSON.stringify(oMatchingTarget, fnReplacer, " ");
|
|
356
345
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
346
|
+
Log.debug(
|
|
347
|
+
"The following target will now be resolved",
|
|
348
|
+
sMatchedTarget,
|
|
349
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
350
|
+
);
|
|
351
|
+
}
|
|
361
352
|
|
|
362
|
-
return
|
|
353
|
+
return this._resolveSingleMatchingTarget(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
363
354
|
};
|
|
364
355
|
|
|
365
356
|
/**
|
|
@@ -389,9 +380,7 @@ sap.ui.define([
|
|
|
389
380
|
return aFilteredResults.length > 0 ? aFilteredResults : aMatchResults;
|
|
390
381
|
};
|
|
391
382
|
|
|
392
|
-
ClientSideTargetResolution.prototype._resolveSingleMatchingTarget = function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
|
|
393
|
-
var that = this;
|
|
394
|
-
var oDeferred = new jQuery.Deferred();
|
|
383
|
+
ClientSideTargetResolution.prototype._resolveSingleMatchingTarget = async function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
|
|
395
384
|
var oIntent = UrlParsing.parseShellHash(sFixedHashFragment);
|
|
396
385
|
var sIntent = [oIntent.semanticObject, oIntent.action].join("-");
|
|
397
386
|
var sApplicationType = (oMatchingTarget.inbound.resolutionResult || {}).applicationType;
|
|
@@ -404,86 +393,77 @@ sap.ui.define([
|
|
|
404
393
|
var bHasUrlTemplate = !!oMatchingTarget.inbound.templateContext;
|
|
405
394
|
var fnEasyAccessMenuResolver = ApplicationType.getEasyAccessMenuResolver(sIntent, sApplicationType);
|
|
406
395
|
if (fnEasyAccessMenuResolver && !bHasUrlTemplate) {
|
|
407
|
-
fnEasyAccessMenuResolver(oIntent, oMatchingTarget, fnExternalSystemAliasResolver, ApplicationType.WDA.enableWdaCompatibilityMode)
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
},
|
|
419
|
-
function (sError) {
|
|
420
|
-
oDeferred.reject(sError);
|
|
421
|
-
}
|
|
422
|
-
);
|
|
423
|
-
return oDeferred.promise();
|
|
396
|
+
const oResolutionResult = await fnEasyAccessMenuResolver(oIntent, oMatchingTarget, fnExternalSystemAliasResolver, ApplicationType.WDA.enableWdaCompatibilityMode);
|
|
397
|
+
|
|
398
|
+
const oNavModeProperties = NavigationMode.getNavigationMode(
|
|
399
|
+
oResolutionResult,
|
|
400
|
+
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
|
|
401
|
+
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
|
|
402
|
+
);
|
|
403
|
+
ushellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
|
|
404
|
+
oResolutionResult.inboundPermanentKey = oMatchingTarget.inbound.permanentKey || oMatchingTarget.inbound.id;
|
|
405
|
+
|
|
406
|
+
return oResolutionResult;
|
|
424
407
|
}
|
|
425
408
|
|
|
426
409
|
var oReservedParameters = this._getReservedParameters(oMatchingTarget);
|
|
427
410
|
|
|
428
411
|
// rename Parameters
|
|
429
412
|
_ParameterMapping.mapParameterNamesAndRemoveObjects(oMatchingTarget);
|
|
430
|
-
sap.ushell.Container.getServiceAsync("AppState").then(function (AppStateService) {
|
|
431
|
-
_XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppStateService)
|
|
432
|
-
.done(function (oMatchingTarget) {
|
|
433
|
-
var fnResultProcessor = function () {
|
|
434
|
-
return that._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
435
|
-
};
|
|
436
|
-
if (ApplicationType[sApplicationType]) {
|
|
437
|
-
fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
|
|
438
|
-
}
|
|
439
413
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
|
|
443
|
-
oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
|
|
444
|
-
return sParameterName !== "sap-tag";
|
|
445
|
-
});
|
|
446
|
-
|
|
447
|
-
var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
|
|
448
|
-
|
|
449
|
-
_PrelaunchOperations.executePrelaunchOperations(oMatchingTarget, oReservedParameters["sap-prelaunch-operations"])
|
|
450
|
-
.then(function () {
|
|
451
|
-
return fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
|
|
452
|
-
})
|
|
453
|
-
.then(function (oResolutionResult) {
|
|
454
|
-
var oNavModeProperties = NavigationMode.getNavigationMode(
|
|
455
|
-
oResolutionResult,
|
|
456
|
-
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
|
|
457
|
-
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
|
|
458
|
-
);
|
|
459
|
-
UshellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
|
|
414
|
+
const AppState = await Container.getServiceAsync("AppState");
|
|
415
|
+
oMatchingTarget = await _XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppState);
|
|
460
416
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
"sap.ushell.services.ClientSideTargetResolution"
|
|
467
|
-
);
|
|
468
|
-
UshellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
|
|
469
|
-
oDeferred.resolve(oMatchingTarget.resolutionResult);
|
|
470
|
-
}, function (vMessage) {
|
|
471
|
-
if (typeof vMessage === "string" && vMessage.indexOf("fallback:") >= 0) {
|
|
472
|
-
that._constructFallbackResolutionResult.call(this, oMatchingTarget, fnBoundFallback, sFixedHashFragment)
|
|
473
|
-
.then(
|
|
474
|
-
function (oResolutionResult) {
|
|
475
|
-
UshellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
|
|
476
|
-
oDeferred.resolve(oMatchingTarget.resolutionResult);
|
|
477
|
-
},
|
|
478
|
-
oDeferred.reject.bind(oDeferred)
|
|
479
|
-
);
|
|
480
|
-
} else {
|
|
481
|
-
oDeferred.reject(vMessage);
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
});
|
|
417
|
+
// remove parameters that should not make it to the URL (in any case!)
|
|
418
|
+
delete oMatchingTarget.intentParamsPlusAllDefaults["sap-tag"];
|
|
419
|
+
delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
|
|
420
|
+
oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
|
|
421
|
+
return sParameterName !== "sap-tag";
|
|
485
422
|
});
|
|
486
|
-
|
|
423
|
+
|
|
424
|
+
var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
|
|
425
|
+
|
|
426
|
+
await _PrelaunchOperations.executePrelaunchOperations(oMatchingTarget, oReservedParameters["sap-prelaunch-operations"]);
|
|
427
|
+
|
|
428
|
+
try {
|
|
429
|
+
let fnResultProcessor;
|
|
430
|
+
if (ApplicationType[sApplicationType]) {
|
|
431
|
+
fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
|
|
432
|
+
} else {
|
|
433
|
+
fnResultProcessor = () => {
|
|
434
|
+
return this._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
const oResolutionResult = await fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
|
|
438
|
+
|
|
439
|
+
const oNavModeProperties = NavigationMode.getNavigationMode(
|
|
440
|
+
oResolutionResult,
|
|
441
|
+
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
|
|
442
|
+
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
|
|
443
|
+
);
|
|
444
|
+
ushellUtils.shallowMergeObject(oResolutionResult, oNavModeProperties);
|
|
445
|
+
|
|
446
|
+
oResolutionResult.reservedParameters = oReservedParameters;
|
|
447
|
+
oResolutionResult.inboundPermanentKey = oMatchingTarget.inbound.permanentKey || oMatchingTarget.inbound.id;
|
|
448
|
+
|
|
449
|
+
Log.debug(
|
|
450
|
+
"Intent was resolved to the following target",
|
|
451
|
+
JSON.stringify(oResolutionResult, null, 3),
|
|
452
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
453
|
+
);
|
|
454
|
+
ushellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
|
|
455
|
+
|
|
456
|
+
return oMatchingTarget.resolutionResult;
|
|
457
|
+
} catch (vMessage) {
|
|
458
|
+
if (typeof vMessage === "string" && vMessage.indexOf("fallback:") >= 0) {
|
|
459
|
+
const oResolutionResult = await this._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
460
|
+
ushellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
|
|
461
|
+
|
|
462
|
+
return oMatchingTarget.resolutionResult;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
throw vMessage;
|
|
466
|
+
}
|
|
487
467
|
};
|
|
488
468
|
|
|
489
469
|
/**‚
|
|
@@ -537,9 +517,7 @@ sap.ui.define([
|
|
|
537
517
|
return oReservedParameters;
|
|
538
518
|
};
|
|
539
519
|
|
|
540
|
-
ClientSideTargetResolution.prototype._resolveTileIntent = function (sHashFragment, fnBoundFallback, oInboundIndex) {
|
|
541
|
-
var that = this;
|
|
542
|
-
var oDeferred = new jQuery.Deferred();
|
|
520
|
+
ClientSideTargetResolution.prototype._resolveTileIntent = async function (sHashFragment, fnBoundFallback, oInboundIndex) {
|
|
543
521
|
var sFixedHashFragment = sHashFragment.indexOf("#") === 0 ? sHashFragment : "#" + sHashFragment;
|
|
544
522
|
var oShellHash = UrlParsing.parseShellHash(sFixedHashFragment);
|
|
545
523
|
|
|
@@ -549,45 +527,28 @@ sap.ui.define([
|
|
|
549
527
|
"please specify a valid shell hash",
|
|
550
528
|
"sap.ushell.services.ClientSideTargetResolution"
|
|
551
529
|
);
|
|
552
|
-
|
|
530
|
+
throw new Error("Cannot parse shell hash");
|
|
553
531
|
}
|
|
554
532
|
|
|
555
|
-
oShellHash.formFactor =
|
|
533
|
+
oShellHash.formFactor = ushellUtils.getFormFactor();
|
|
556
534
|
|
|
557
|
-
this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: false })
|
|
558
|
-
.fail(function (sError) {
|
|
559
|
-
Log.error(
|
|
560
|
-
"Could not resolve " + sHashFragment,
|
|
561
|
-
"_getMatchingInbounds promise rejected with: " + sError,
|
|
562
|
-
"sap.ushell.services.ClientSideTargetResolution"
|
|
563
|
-
);
|
|
564
|
-
oDeferred.reject(sError);
|
|
565
|
-
})
|
|
566
|
-
.done(function (aMatchingTargets) {
|
|
567
|
-
var oMatchingTarget;
|
|
568
|
-
|
|
569
|
-
if (aMatchingTargets.length === 0) {
|
|
570
|
-
Log.warning(
|
|
571
|
-
"Could not resolve " + sHashFragment,
|
|
572
|
-
"no matching targets were found",
|
|
573
|
-
"sap.ushell.services.ClientSideTargetResolution"
|
|
574
|
-
);
|
|
575
|
-
oDeferred.reject("No matching targets found");
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
535
|
+
const aMatchingTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: false });
|
|
578
536
|
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
537
|
+
if (aMatchingTargets.length === 0) {
|
|
538
|
+
Log.warning(
|
|
539
|
+
"Could not resolve " + sHashFragment,
|
|
540
|
+
"no matching targets were found",
|
|
541
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
542
|
+
);
|
|
543
|
+
throw new Error("No matching targets found");
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
const oMatchingTarget = aMatchingTargets[0];
|
|
547
|
+
return this._resolveSingleMatchingTileIntent(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
585
548
|
};
|
|
586
549
|
|
|
587
|
-
ClientSideTargetResolution.prototype._resolveSingleMatchingTileIntent = function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
|
|
588
|
-
var oDeferred = new jQuery.Deferred();
|
|
550
|
+
ClientSideTargetResolution.prototype._resolveSingleMatchingTileIntent = async function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
|
|
589
551
|
var sApplicationType = (oMatchingTarget.inbound.resolutionResult || {}).applicationType;
|
|
590
|
-
var that = this;
|
|
591
552
|
|
|
592
553
|
var fnExternalSystemAliasResolver;
|
|
593
554
|
if (this._oAdapter.resolveSystemAlias) {
|
|
@@ -596,55 +557,51 @@ sap.ui.define([
|
|
|
596
557
|
|
|
597
558
|
// rename Parameters
|
|
598
559
|
_ParameterMapping.mapParameterNamesAndRemoveObjects(oMatchingTarget);
|
|
599
|
-
sap.ushell.Container.getServiceAsync("AppState").then(function (AppStateService) {
|
|
600
|
-
_XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppStateService)
|
|
601
|
-
.done(function (oMatchingTarget) {
|
|
602
|
-
var fnResultProcessor = function () {
|
|
603
|
-
return that._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
604
|
-
};
|
|
605
|
-
if (ApplicationType[sApplicationType]) {
|
|
606
|
-
fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
|
|
607
|
-
}
|
|
608
560
|
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
|
|
612
|
-
oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
|
|
613
|
-
return sParameterName !== "sap-tag";
|
|
614
|
-
});
|
|
561
|
+
const AppState = await Container.getServiceAsync("AppState");
|
|
562
|
+
oMatchingTarget = await _XAppStateProcessing.mixAppStateIntoResolutionResultAndRename(oMatchingTarget, AppState);
|
|
615
563
|
|
|
616
|
-
|
|
564
|
+
// remove parameters that should not make it to the URL (in any case!)
|
|
565
|
+
delete oMatchingTarget.intentParamsPlusAllDefaults["sap-tag"];
|
|
566
|
+
delete oMatchingTarget.mappedIntentParamsPlusSimpleDefaults["sap-tag"];
|
|
567
|
+
oMatchingTarget.mappedDefaultedParamNames = oMatchingTarget.mappedDefaultedParamNames.filter(function (sParameterName) {
|
|
568
|
+
return sParameterName !== "sap-tag";
|
|
569
|
+
});
|
|
617
570
|
|
|
618
|
-
|
|
619
|
-
function (oResolutionResult) {
|
|
620
|
-
UshellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
|
|
571
|
+
var sBaseUrl = ObjectPath.get("inbound.resolutionResult.url", oMatchingTarget);
|
|
621
572
|
|
|
622
|
-
|
|
623
|
-
var oTileResolutionResult = fnExtend({}, oMatchingTarget.inbound.tileResolutionResult);
|
|
573
|
+
let fnResultProcessor;
|
|
624
574
|
|
|
625
|
-
|
|
575
|
+
if (ApplicationType[sApplicationType]) {
|
|
576
|
+
fnResultProcessor = ApplicationType[sApplicationType].generateResolutionResult;
|
|
577
|
+
} else {
|
|
578
|
+
fnResultProcessor = () => {
|
|
579
|
+
return this._constructFallbackResolutionResult(oMatchingTarget, fnBoundFallback, sFixedHashFragment);
|
|
580
|
+
};
|
|
581
|
+
}
|
|
626
582
|
|
|
627
|
-
|
|
628
|
-
oResolutionResult,
|
|
629
|
-
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
|
|
630
|
-
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
|
|
631
|
-
);
|
|
632
|
-
UshellUtils.shallowMergeObject(oTileResolutionResult, oNavModeProperties);
|
|
583
|
+
const oResolutionResult = await fnResultProcessor(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
|
|
633
584
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
585
|
+
ushellUtils.shallowMergeObject(oMatchingTarget.resolutionResult, oResolutionResult);
|
|
586
|
+
|
|
587
|
+
// beware, shallow copy of central object! only modify root properties!
|
|
588
|
+
var oTileResolutionResult = fnExtend({}, oMatchingTarget.inbound.tileResolutionResult);
|
|
589
|
+
|
|
590
|
+
oTileResolutionResult.startupParameters = oMatchingTarget.effectiveParameters;
|
|
591
|
+
|
|
592
|
+
var oNavModeProperties = NavigationMode.getNavigationMode(
|
|
593
|
+
oResolutionResult,
|
|
594
|
+
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-navmode"] || [])[0],
|
|
595
|
+
(oMatchingTarget.intentParamsPlusAllDefaults["sap-ushell-next-navmode"] || [])[0]
|
|
596
|
+
);
|
|
597
|
+
ushellUtils.shallowMergeObject(oTileResolutionResult, oNavModeProperties);
|
|
598
|
+
|
|
599
|
+
Log.debug(
|
|
600
|
+
"Tile Intent was resolved to the following target",
|
|
601
|
+
JSON.stringify(oTileResolutionResult, null, 3),
|
|
602
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
603
|
+
);
|
|
604
|
+
return oTileResolutionResult;
|
|
648
605
|
};
|
|
649
606
|
|
|
650
607
|
/**
|
|
@@ -668,7 +625,7 @@ sap.ui.define([
|
|
|
668
625
|
* <li>inbound that matched the hash fragment</li>
|
|
669
626
|
* <li>oEffectiveParameters, the parameters to be added to the resolved url</li>
|
|
670
627
|
* </ol>
|
|
671
|
-
* This function must return a
|
|
628
|
+
* This function must return a promise that is resolved with an object like:
|
|
672
629
|
* <pre>
|
|
673
630
|
* {
|
|
674
631
|
* applicationType: ...,
|
|
@@ -684,7 +641,7 @@ sap.ui.define([
|
|
|
684
641
|
* <code>fnBoundFallback</code> parameter was undefined or failed to produce a resolution result.
|
|
685
642
|
* @private
|
|
686
643
|
*/
|
|
687
|
-
ClientSideTargetResolution.prototype._constructFallbackResolutionResult = function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
|
|
644
|
+
ClientSideTargetResolution.prototype._constructFallbackResolutionResult = async function (oMatchingTarget, fnBoundFallback, sFixedHashFragment) {
|
|
688
645
|
// The current flow is to resolve the result with all *uncompressed* default substituted parameters and alters
|
|
689
646
|
// appState compress the url afterwards if needed (the fallback function takes care of this).
|
|
690
647
|
var oEffectiveParameters = {};
|
|
@@ -707,7 +664,7 @@ sap.ui.define([
|
|
|
707
664
|
"sap.ushell.services.ClientSideTargetResolution"
|
|
708
665
|
);
|
|
709
666
|
|
|
710
|
-
|
|
667
|
+
throw new Error("Cannot resolve hash fragment: no fallback provided.");
|
|
711
668
|
}
|
|
712
669
|
|
|
713
670
|
// fallback
|
|
@@ -718,25 +675,21 @@ sap.ui.define([
|
|
|
718
675
|
);
|
|
719
676
|
|
|
720
677
|
// NOTE: the callback function will be invoked with the effective *unmapped* parameter names! as 3rd argument
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
}
|
|
734
|
-
});
|
|
735
|
-
|
|
736
|
-
fnResolve(oResolutionResult);
|
|
737
|
-
})
|
|
738
|
-
.fail(fnReject.bind(null));
|
|
678
|
+
const oFallbackResolutionResult = await ushellUtils.promisify(fnBoundFallback(
|
|
679
|
+
sFixedHashFragment,
|
|
680
|
+
fnExtend({}, oMatchingTarget.inbound), // don't let adapters to change the inbound member
|
|
681
|
+
oEffectiveParameters
|
|
682
|
+
));
|
|
683
|
+
|
|
684
|
+
var oResolutionResult = {};
|
|
685
|
+
// propagate properties from the resolution result returned by the fallback function
|
|
686
|
+
["applicationType", "additionalInformation", "url", "applicationDependencies", "text"].forEach(function (sPropName) {
|
|
687
|
+
if (oFallbackResolutionResult.hasOwnProperty(sPropName)) {
|
|
688
|
+
oResolutionResult[sPropName] = oFallbackResolutionResult[sPropName];
|
|
689
|
+
}
|
|
739
690
|
});
|
|
691
|
+
|
|
692
|
+
return oResolutionResult;
|
|
740
693
|
};
|
|
741
694
|
|
|
742
695
|
/**
|
|
@@ -753,8 +706,8 @@ sap.ui.define([
|
|
|
753
706
|
ClientSideTargetResolution.prototype.getDistinctSemanticObjects = function () {
|
|
754
707
|
var oDeferred = new jQuery.Deferred();
|
|
755
708
|
|
|
756
|
-
this._oInboundProvider.getInbounds()
|
|
757
|
-
|
|
709
|
+
this._oInboundProvider.getInbounds()
|
|
710
|
+
.then((oInboundIndex) => {
|
|
758
711
|
var oSemanticObjects = {};
|
|
759
712
|
|
|
760
713
|
oInboundIndex.getAllInbounds().forEach(function (oInbound) {
|
|
@@ -764,14 +717,12 @@ sap.ui.define([
|
|
|
764
717
|
}
|
|
765
718
|
});
|
|
766
719
|
|
|
767
|
-
oDeferred.resolve(
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
}
|
|
774
|
-
);
|
|
720
|
+
oDeferred.resolve(Object.keys(oSemanticObjects).sort());
|
|
721
|
+
})
|
|
722
|
+
.catch((oError) => {
|
|
723
|
+
oDeferred.reject(oError);
|
|
724
|
+
});
|
|
725
|
+
|
|
775
726
|
return oDeferred.promise();
|
|
776
727
|
};
|
|
777
728
|
|
|
@@ -820,8 +771,6 @@ sap.ui.define([
|
|
|
820
771
|
* @since 1.38.0
|
|
821
772
|
*/
|
|
822
773
|
ClientSideTargetResolution.prototype.getLinks = function (oArgs) {
|
|
823
|
-
var that = this;
|
|
824
|
-
|
|
825
774
|
var oDeferred = new jQuery.Deferred();
|
|
826
775
|
var oCallArgs;
|
|
827
776
|
|
|
@@ -865,16 +814,17 @@ sap.ui.define([
|
|
|
865
814
|
return oDeferred.reject("invalid arguments for getLinks").promise();
|
|
866
815
|
}
|
|
867
816
|
|
|
868
|
-
this._oInboundProvider.getInbounds()
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
817
|
+
this._oInboundProvider.getInbounds()
|
|
818
|
+
.then((oInboundIndex) => {
|
|
819
|
+
return this._getLinks(oCallArgs, oInboundIndex);
|
|
820
|
+
})
|
|
821
|
+
.then((aLinks) => {
|
|
822
|
+
oDeferred.resolve(aLinks);
|
|
823
|
+
})
|
|
824
|
+
.catch((oError) => {
|
|
825
|
+
oDeferred.reject(oError);
|
|
826
|
+
});
|
|
827
|
+
|
|
878
828
|
return oDeferred.promise();
|
|
879
829
|
};
|
|
880
830
|
|
|
@@ -951,7 +901,7 @@ sap.ui.define([
|
|
|
951
901
|
* }
|
|
952
902
|
* </pre>
|
|
953
903
|
* @param {object} oInboundIndex An inbound index to retrieve the get semantic object links from.
|
|
954
|
-
* @returns {object[]} An array of link objects containing (at least) the following properties:
|
|
904
|
+
* @returns {Promise<object[]>} An array of link objects containing (at least) the following properties:
|
|
955
905
|
* <pre>
|
|
956
906
|
* {
|
|
957
907
|
* intent: "#AnObject-Action?A=B&C=e&C=j",
|
|
@@ -963,7 +913,7 @@ sap.ui.define([
|
|
|
963
913
|
* </pre>
|
|
964
914
|
* @private
|
|
965
915
|
*/
|
|
966
|
-
ClientSideTargetResolution.prototype._getLinks = function (oArgs, oInboundIndex) {
|
|
916
|
+
ClientSideTargetResolution.prototype._getLinks = async function (oArgs, oInboundIndex) {
|
|
967
917
|
var sSemanticObject = oArgs.semanticObject;
|
|
968
918
|
var sAction = oArgs.action;
|
|
969
919
|
var mParameters = oArgs.params;
|
|
@@ -991,12 +941,12 @@ sap.ui.define([
|
|
|
991
941
|
}
|
|
992
942
|
|
|
993
943
|
if (sErrorMessage) {
|
|
994
|
-
|
|
944
|
+
throw new Error(sErrorMessage);
|
|
995
945
|
}
|
|
996
946
|
|
|
997
947
|
if (sSemanticObject === "*") {
|
|
998
948
|
// shortcut: skip matching inbounds and return directly; it can only match "*" and we don't return it anyway
|
|
999
|
-
return
|
|
949
|
+
return [];
|
|
1000
950
|
}
|
|
1001
951
|
|
|
1002
952
|
/**
|
|
@@ -1007,172 +957,164 @@ sap.ui.define([
|
|
|
1007
957
|
return sBusinessParams ? "?" + sBusinessParams : "";
|
|
1008
958
|
}
|
|
1009
959
|
|
|
1010
|
-
var
|
|
1011
|
-
var sFormFactor = UshellUtils.getFormFactor();
|
|
960
|
+
var sFormFactor = ushellUtils.getFormFactor();
|
|
1012
961
|
var oAllIntentParams = UrlParsing.parseParameters(fnConstructBusinessParamsString(mParameters));
|
|
1013
962
|
var oShellHash = {
|
|
1014
963
|
semanticObject: (sSemanticObject === "" ? undefined : sSemanticObject),
|
|
1015
964
|
action: sAction, // undefined: match all actions
|
|
1016
|
-
formFactor: (
|
|
1017
|
-
bIgnoreFormFactor
|
|
1018
|
-
? undefined // match any form factor
|
|
1019
|
-
: sFormFactor
|
|
1020
|
-
),
|
|
965
|
+
formFactor: (bIgnoreFormFactor ? undefined : sFormFactor), // undefined: match any form factor
|
|
1021
966
|
params: oAllIntentParams
|
|
1022
967
|
};
|
|
1023
968
|
if (bTreatTechHintAsFilter) {
|
|
1024
969
|
oShellHash.treatTechHintAsFilter = true;
|
|
1025
970
|
}
|
|
1026
971
|
|
|
1027
|
-
this._getMatchingInbounds(oShellHash, oInboundIndex, oInboundsConstraints)
|
|
1028
|
-
.done(function (aMatchingTargets) {
|
|
1029
|
-
var oUniqueIntents = {};
|
|
1030
|
-
var aResults = aMatchingTargets.map(function (oMatchResult) {
|
|
1031
|
-
var sAdjustedSemanticObject = sSemanticObject || oMatchResult.inbound.semanticObject;
|
|
1032
|
-
var sIntent = "#" + sAdjustedSemanticObject + "-" + oMatchResult.inbound.action;
|
|
1033
|
-
var oNeededParameters;
|
|
972
|
+
const aMatchingTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, oInboundsConstraints);
|
|
1034
973
|
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
974
|
+
var oUniqueIntents = {};
|
|
975
|
+
var aResults = aMatchingTargets
|
|
976
|
+
.map(function (oMatchResult) {
|
|
977
|
+
var sAdjustedSemanticObject = sSemanticObject || oMatchResult.inbound.semanticObject;
|
|
978
|
+
var sIntent = "#" + sAdjustedSemanticObject + "-" + oMatchResult.inbound.action;
|
|
979
|
+
var oNeededParameters;
|
|
1039
980
|
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
981
|
+
// we never return "*" semantic objects from getLinks as they are not parsable links
|
|
982
|
+
if (sAdjustedSemanticObject === "*") {
|
|
983
|
+
return undefined;
|
|
984
|
+
}
|
|
1044
985
|
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
986
|
+
// we never want to return "*" actions from getLinks as they are non parsable links
|
|
987
|
+
if (oMatchResult.inbound.action === "*") {
|
|
988
|
+
return undefined;
|
|
989
|
+
}
|
|
1048
990
|
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
count: 1
|
|
1053
|
-
};
|
|
991
|
+
if (oMatchResult.inbound && oMatchResult.inbound.hasOwnProperty("hideIntentLink") && oMatchResult.inbound.hideIntentLink === true) {
|
|
992
|
+
return undefined;
|
|
993
|
+
}
|
|
1054
994
|
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
}, false);
|
|
1061
|
-
} else {
|
|
1062
|
-
oNeededParameters = oAllIntentParams;
|
|
1063
|
-
}
|
|
995
|
+
if (!oUniqueIntents.hasOwnProperty(sIntent)) {
|
|
996
|
+
oUniqueIntents[sIntent] = {
|
|
997
|
+
matchingInbound: oMatchResult.inbound,
|
|
998
|
+
count: 1
|
|
999
|
+
};
|
|
1064
1000
|
|
|
1065
|
-
|
|
1001
|
+
if (oMatchResult.inbound.signature.additionalParameters === "ignored") {
|
|
1002
|
+
// in the result do not show all intent parameters, but only those mentioned by the inbound
|
|
1003
|
+
oNeededParameters = _Utils.filterObjectKeys(oAllIntentParams, function (sIntentParam) {
|
|
1004
|
+
return (sIntentParam.indexOf("sap-") === 0) || oMatchResult.inbound.signature.parameters.hasOwnProperty(sIntentParam);
|
|
1005
|
+
}, false);
|
|
1006
|
+
} else {
|
|
1007
|
+
oNeededParameters = oAllIntentParams;
|
|
1008
|
+
}
|
|
1066
1009
|
|
|
1067
|
-
|
|
1068
|
-
var bAtLeastOneNonSapParam = Object.keys(oNeededParameters).some(function (sNeededParamName) {
|
|
1069
|
-
return sNeededParamName.indexOf("sap-") !== 0;
|
|
1070
|
-
});
|
|
1071
|
-
if (!bAtLeastOneNonSapParam) {
|
|
1072
|
-
oUniqueIntents[sIntent].hideReason = "getLinks called with 'withAtLeastOneUsedParam = true', but the inbound had no business parameters defined.";
|
|
1073
|
-
return undefined;
|
|
1074
|
-
}
|
|
1075
|
-
}
|
|
1010
|
+
// --- begin of post-match reject reasons
|
|
1076
1011
|
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
);
|
|
1081
|
-
if (!
|
|
1082
|
-
oUniqueIntents[sIntent].hideReason = "
|
|
1012
|
+
if (bWithAtLeastOneUsedParam) {
|
|
1013
|
+
var bAtLeastOneNonSapParam = Object.keys(oNeededParameters).some(function (sNeededParamName) {
|
|
1014
|
+
return sNeededParamName.indexOf("sap-") !== 0;
|
|
1015
|
+
});
|
|
1016
|
+
if (!bAtLeastOneNonSapParam) {
|
|
1017
|
+
oUniqueIntents[sIntent].hideReason = "getLinks called with 'withAtLeastOneUsedParam = true', but the inbound had no business parameters defined.";
|
|
1083
1018
|
return undefined;
|
|
1084
1019
|
}
|
|
1020
|
+
}
|
|
1085
1021
|
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1022
|
+
var bSignatureMeetsParameterOptions = _Utils.inboundSignatureMeetsParameterOptions(
|
|
1023
|
+
oMatchResult.inbound.signature.parameters,
|
|
1024
|
+
oArgs.paramsOptions || []
|
|
1025
|
+
);
|
|
1026
|
+
if (!bSignatureMeetsParameterOptions) {
|
|
1027
|
+
oUniqueIntents[sIntent].hideReason = "inbound signature does not meet the requested parameter filter options";
|
|
1028
|
+
return undefined;
|
|
1029
|
+
}
|
|
1092
1030
|
|
|
1093
|
-
|
|
1094
|
-
oResult.icon = oMatchResult.inbound.icon;
|
|
1095
|
-
}
|
|
1096
|
-
if (oMatchResult.inbound.subTitle) {
|
|
1097
|
-
oResult.subTitle = oMatchResult.inbound.subTitle;
|
|
1098
|
-
}
|
|
1099
|
-
if (oMatchResult.inbound.shortTitle) {
|
|
1100
|
-
oResult.shortTitle = oMatchResult.inbound.shortTitle;
|
|
1101
|
-
}
|
|
1031
|
+
// --- end of post-match reject reasons
|
|
1102
1032
|
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1033
|
+
var oResult = {
|
|
1034
|
+
intent: sIntent + fnConstructBusinessParamsString(oNeededParameters),
|
|
1035
|
+
text: oMatchResult.inbound.title
|
|
1036
|
+
};
|
|
1107
1037
|
|
|
1108
|
-
|
|
1038
|
+
if (oMatchResult.inbound.icon) {
|
|
1039
|
+
oResult.icon = oMatchResult.inbound.icon;
|
|
1040
|
+
}
|
|
1041
|
+
if (oMatchResult.inbound.subTitle) {
|
|
1042
|
+
oResult.subTitle = oMatchResult.inbound.subTitle;
|
|
1043
|
+
}
|
|
1044
|
+
if (oMatchResult.inbound.shortTitle) {
|
|
1045
|
+
oResult.shortTitle = oMatchResult.inbound.shortTitle;
|
|
1109
1046
|
}
|
|
1110
|
-
// for debugging purposes
|
|
1111
|
-
oUniqueIntents[sIntent].count++;
|
|
1112
1047
|
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1048
|
+
var sInboundTag = ObjectPath.get("inbound.signature.parameters.sap-tag.defaultValue.value", oMatchResult);
|
|
1049
|
+
if (sInboundTag) {
|
|
1050
|
+
oResult.tags = [sInboundTag];
|
|
1051
|
+
}
|
|
1117
1052
|
|
|
1118
|
-
|
|
1119
|
-
aResults.sort(function (oGetSoLinksResult1, oGetSoLinksResult2) {
|
|
1120
|
-
return oGetSoLinksResult1[sSortProperty] < oGetSoLinksResult2[sSortProperty] ? -1 : 1;
|
|
1121
|
-
});
|
|
1053
|
+
return oResult;
|
|
1122
1054
|
}
|
|
1055
|
+
// for debugging purposes
|
|
1056
|
+
oUniqueIntents[sIntent].count++;
|
|
1123
1057
|
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
var aHiddenResultLines = [];
|
|
1130
|
-
|
|
1131
|
-
aResults.forEach(function (oResult) {
|
|
1132
|
-
var sIntent = oResult.intent.split("?")[0];
|
|
1133
|
-
|
|
1134
|
-
if (oUniqueIntents[sIntent].hideReason) {
|
|
1135
|
-
aHiddenResultLines.push([
|
|
1136
|
-
"-", sIntent + "(" + oUniqueIntents[sIntent].hideReason + ")\n",
|
|
1137
|
-
" text:", oResult.text + "\n",
|
|
1138
|
-
" full intent:", oResult.intent
|
|
1139
|
-
].join(" "));
|
|
1140
|
-
} else {
|
|
1141
|
-
aResultLines.push([
|
|
1142
|
-
"-", sIntent,
|
|
1143
|
-
oUniqueIntents[sIntent].count > 1
|
|
1144
|
-
? "(" + (oUniqueIntents[sIntent].count - 1) + " others matched)\n"
|
|
1145
|
-
: "\n",
|
|
1146
|
-
"text:", oResult.text + "\n",
|
|
1147
|
-
"full intent:", oResult.intent
|
|
1148
|
-
].join(" "));
|
|
1149
|
-
}
|
|
1150
|
-
});
|
|
1058
|
+
return undefined;
|
|
1059
|
+
})
|
|
1060
|
+
.filter(function (oSemanticObjectLink) {
|
|
1061
|
+
return typeof oSemanticObjectLink === "object";
|
|
1062
|
+
});
|
|
1151
1063
|
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1064
|
+
if (sSortProperty !== "priority") {
|
|
1065
|
+
aResults.sort(function (oGetSoLinksResult1, oGetSoLinksResult2) {
|
|
1066
|
+
return oGetSoLinksResult1[sSortProperty] < oGetSoLinksResult2[sSortProperty] ? -1 : 1;
|
|
1067
|
+
});
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
if (aResults.length === 0) {
|
|
1071
|
+
Log.debug("_getLinks returned no results");
|
|
1072
|
+
} else if (Log.getLevel() >= Log.Level.DEBUG) {
|
|
1073
|
+
if (Log.getLevel() >= Log.Level.TRACE) {
|
|
1074
|
+
var aResultLines = [];
|
|
1075
|
+
var aHiddenResultLines = [];
|
|
1076
|
+
|
|
1077
|
+
aResults.forEach(function (oResult) {
|
|
1078
|
+
var sIntent = oResult.intent.split("?")[0];
|
|
1079
|
+
|
|
1080
|
+
if (oUniqueIntents[sIntent].hideReason) {
|
|
1081
|
+
aHiddenResultLines.push([
|
|
1082
|
+
"-", sIntent + "(" + oUniqueIntents[sIntent].hideReason + ")\n",
|
|
1083
|
+
" text:", oResult.text + "\n",
|
|
1084
|
+
" full intent:", oResult.intent
|
|
1085
|
+
].join(" "));
|
|
1163
1086
|
} else {
|
|
1164
|
-
|
|
1165
|
-
"
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1087
|
+
aResultLines.push([
|
|
1088
|
+
"-", sIntent,
|
|
1089
|
+
oUniqueIntents[sIntent].count > 1
|
|
1090
|
+
? "(" + (oUniqueIntents[sIntent].count - 1) + " others matched)\n"
|
|
1091
|
+
: "\n",
|
|
1092
|
+
"text:", oResult.text + "\n",
|
|
1093
|
+
"full intent:", oResult.intent
|
|
1094
|
+
].join(" "));
|
|
1169
1095
|
}
|
|
1170
|
-
}
|
|
1171
|
-
oDeferred.resolve(aResults);
|
|
1172
|
-
})
|
|
1173
|
-
.fail(oDeferred.reject.bind(oDeferred));
|
|
1096
|
+
});
|
|
1174
1097
|
|
|
1175
|
-
|
|
1098
|
+
Log.debug(
|
|
1099
|
+
"_getLinks filtered to the following unique intents:",
|
|
1100
|
+
"\n" + aResultLines.join("\n"),
|
|
1101
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
1102
|
+
);
|
|
1103
|
+
|
|
1104
|
+
Log.debug(
|
|
1105
|
+
"_getLinks would have also returned the following unique intents, but something prevented this:",
|
|
1106
|
+
aHiddenResultLines.join("\n"),
|
|
1107
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
1108
|
+
);
|
|
1109
|
+
} else {
|
|
1110
|
+
Log.debug(
|
|
1111
|
+
"_getLinks filtered to unique intents.",
|
|
1112
|
+
"Reporting histogram: \n - " + Object.keys(oUniqueIntents).join("\n - "),
|
|
1113
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
1114
|
+
);
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
return aResults;
|
|
1176
1118
|
};
|
|
1177
1119
|
|
|
1178
1120
|
/**
|
|
@@ -1203,18 +1145,17 @@ sap.ui.define([
|
|
|
1203
1145
|
* }
|
|
1204
1146
|
* </pre>
|
|
1205
1147
|
* @param {string[]} [oConstraints.tags] Tags to which the queried inbounds should belong to.
|
|
1206
|
-
* @returns {
|
|
1148
|
+
* @returns {Promise<object[]>} A sorted array of matching targets.
|
|
1207
1149
|
* A target is a matching result that in addition has a specific priority with respect to other matching targets.
|
|
1208
1150
|
* @private
|
|
1209
1151
|
* @since 1.32.0
|
|
1210
1152
|
*/
|
|
1211
|
-
ClientSideTargetResolution.prototype._getMatchingInbounds = function (oShellHash, oInboundIndex, oConstraints) {
|
|
1153
|
+
ClientSideTargetResolution.prototype._getMatchingInbounds = async function (oShellHash, oInboundIndex, oConstraints) {
|
|
1212
1154
|
var that = this;
|
|
1213
1155
|
var aTags;
|
|
1214
1156
|
var iLogId;
|
|
1215
1157
|
var bExcludeTileInbounds;
|
|
1216
1158
|
var aPreFilteredInbounds;
|
|
1217
|
-
var oDeferred = new jQuery.Deferred();
|
|
1218
1159
|
|
|
1219
1160
|
if (oConstraints) {
|
|
1220
1161
|
aTags = oConstraints.tags;
|
|
@@ -1263,6 +1204,13 @@ sap.ui.define([
|
|
|
1263
1204
|
};
|
|
1264
1205
|
});
|
|
1265
1206
|
|
|
1207
|
+
// output logs before returning
|
|
1208
|
+
function endLogger () {
|
|
1209
|
+
_StagedLogger.end(() => {
|
|
1210
|
+
return { logId: iLogId };
|
|
1211
|
+
});
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1266
1214
|
var sSemanticObject = oShellHash.semanticObject;
|
|
1267
1215
|
var sAction = oShellHash.action;
|
|
1268
1216
|
this._oShellHash = oShellHash;
|
|
@@ -1287,73 +1235,60 @@ sap.ui.define([
|
|
|
1287
1235
|
}
|
|
1288
1236
|
|
|
1289
1237
|
// initial match
|
|
1290
|
-
_Search
|
|
1291
|
-
.match(oShellHash, aPreFilteredInbounds, {} /* known default */, fnGetContentProviderLookup, Log.getLevel() >= Log.Level.DEBUG)
|
|
1292
|
-
.then(function (oInitialMatchResult) {
|
|
1293
|
-
// resolve References
|
|
1238
|
+
const oInitialMatchResult = await _Search.match(oShellHash, aPreFilteredInbounds, {} /* known default */, fnGetContentProviderLookup, Log.getLevel() >= Log.Level.DEBUG);
|
|
1294
1239
|
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
})
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
var aLines = oInitialMatchResult.matchResults.map(function (oMatchResult) {
|
|
1308
|
-
return _Formatter.formatInbound(oMatchResult.inbound);
|
|
1309
|
-
});
|
|
1310
|
-
return {
|
|
1311
|
-
logId: iLogId,
|
|
1312
|
-
stage: 1,
|
|
1313
|
-
prefix: aLines.length > 0
|
|
1314
|
-
? "\u2705" // green checkmark
|
|
1315
|
-
: "\u2718", // heavy black X
|
|
1316
|
-
lines: aLines.length > 0
|
|
1317
|
-
? aLines
|
|
1318
|
-
: ["No inbound was matched"]
|
|
1319
|
-
};
|
|
1320
|
-
});
|
|
1240
|
+
// ========================= Stage 1 ================================
|
|
1241
|
+
// resolve References
|
|
1242
|
+
_StagedLogger.log(function () {
|
|
1243
|
+
return {
|
|
1244
|
+
logId: iLogId,
|
|
1245
|
+
stage: 1,
|
|
1246
|
+
prefix: "\u2718", // heavy black X
|
|
1247
|
+
lines: Object.keys(oInitialMatchResult.noMatchReasons || {}).map(function (sInbound) {
|
|
1248
|
+
return sInbound + " " + oInitialMatchResult.noMatchReasons[sInbound];
|
|
1249
|
+
})
|
|
1250
|
+
};
|
|
1251
|
+
});
|
|
1321
1252
|
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1253
|
+
_StagedLogger.log(function () {
|
|
1254
|
+
var aLines = oInitialMatchResult.matchResults.map(function (oMatchResult) {
|
|
1255
|
+
return _Formatter.formatInbound(oMatchResult.inbound);
|
|
1256
|
+
});
|
|
1257
|
+
return {
|
|
1258
|
+
logId: iLogId,
|
|
1259
|
+
stage: 1,
|
|
1260
|
+
prefix: aLines.length > 0
|
|
1261
|
+
? "\u2705" // green checkmark
|
|
1262
|
+
: "\u2718", // heavy black X
|
|
1263
|
+
lines: aLines.length > 0
|
|
1264
|
+
? aLines
|
|
1265
|
+
: ["No inbound was matched"]
|
|
1266
|
+
};
|
|
1267
|
+
});
|
|
1330
1268
|
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1269
|
+
var oMissingReferences = {};
|
|
1270
|
+
var bNeedToResolve = false;
|
|
1271
|
+
var aContentProviders = Object.keys(oInitialMatchResult.missingReferences);
|
|
1272
|
+
aContentProviders.forEach(function (sContentProviderId) {
|
|
1273
|
+
var aReferences = Object.keys(oInitialMatchResult.missingReferences[sContentProviderId]);
|
|
1274
|
+
bNeedToResolve = bNeedToResolve || aReferences.length > 0;
|
|
1275
|
+
oMissingReferences[sContentProviderId] = aReferences;
|
|
1276
|
+
});
|
|
1338
1277
|
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
line: "No need to resolve references"
|
|
1347
|
-
};
|
|
1348
|
-
});
|
|
1278
|
+
aContentProviders = aContentProviders.filter(function (sContentProviderId) {
|
|
1279
|
+
if (oMissingReferences[sContentProviderId].length > 0) {
|
|
1280
|
+
return true;
|
|
1281
|
+
}
|
|
1282
|
+
delete oMissingReferences[sContentProviderId];
|
|
1283
|
+
return false;
|
|
1284
|
+
});
|
|
1349
1285
|
|
|
1350
|
-
return new jQuery.Deferred().resolve({
|
|
1351
|
-
matchResults: oInitialMatchResult.matchResults,
|
|
1352
|
-
referencesToInclude: null
|
|
1353
|
-
}).promise();
|
|
1354
|
-
}
|
|
1355
1286
|
|
|
1356
|
-
|
|
1287
|
+
// ========================= Stage 2 ================================
|
|
1288
|
+
// resolve references
|
|
1289
|
+
let oInitialMatchWithReferencesResult;
|
|
1290
|
+
if (bNeedToResolve) {
|
|
1291
|
+
try {
|
|
1357
1292
|
aContentProviders.forEach(function (sContentProviderId) {
|
|
1358
1293
|
_StagedLogger.log(function () {
|
|
1359
1294
|
return {
|
|
@@ -1366,161 +1301,152 @@ sap.ui.define([
|
|
|
1366
1301
|
});
|
|
1367
1302
|
});
|
|
1368
1303
|
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
}.bind(this))
|
|
1387
|
-
.then(function (aResolvedRefs) {
|
|
1388
|
-
var oResult = {
|
|
1389
|
-
matchResults: oInitialMatchResult.matchResults,
|
|
1390
|
-
referencesToInclude: {}
|
|
1391
|
-
};
|
|
1392
|
-
aContentProviders.forEach(function (sContentProviderId, iIndex) {
|
|
1393
|
-
var oResolvedRefs = aResolvedRefs[iIndex];
|
|
1394
|
-
oResult.referencesToInclude[sContentProviderId] = oResolvedRefs;
|
|
1395
|
-
if (Object.keys(oResolvedRefs).length > 0) {
|
|
1396
|
-
_StagedLogger.log(function () {
|
|
1397
|
-
return {
|
|
1398
|
-
logId: iLogId,
|
|
1399
|
-
stage: 2,
|
|
1400
|
-
line: "\u2705 resolved references with contentProviderId = \"" + sContentProviderId + "\" to the following values:",
|
|
1401
|
-
prefix: "\u2022", // bullet point
|
|
1402
|
-
lines: Object.keys(oResolvedRefs).map(function (sRefName) {
|
|
1403
|
-
return sRefName + ": '" + oResolvedRefs[sRefName] + "'";
|
|
1404
|
-
})
|
|
1405
|
-
};
|
|
1406
|
-
});
|
|
1407
|
-
}
|
|
1408
|
-
});
|
|
1409
|
-
oReadyToRematchDeferred.resolve(oResult);
|
|
1410
|
-
})
|
|
1411
|
-
.catch(function (sError) {
|
|
1304
|
+
const ReferenceResolver = await Container.getServiceAsync("ReferenceResolver");
|
|
1305
|
+
|
|
1306
|
+
const aSystemContexts = await Promise.all(aContentProviders.map((sContentProviderId) => {
|
|
1307
|
+
return this.getSystemContext(sContentProviderId);
|
|
1308
|
+
}));
|
|
1309
|
+
const aResolvedRefs = await Promise.all(aContentProviders.map(function (sContentProviderId, iIndex) {
|
|
1310
|
+
return ushellUtils.promisify(ReferenceResolver.resolveReferences(oMissingReferences[sContentProviderId], aSystemContexts[iIndex]));
|
|
1311
|
+
}));
|
|
1312
|
+
|
|
1313
|
+
var oResult = {
|
|
1314
|
+
matchResults: oInitialMatchResult.matchResults,
|
|
1315
|
+
referencesToInclude: {}
|
|
1316
|
+
};
|
|
1317
|
+
aContentProviders.forEach(function (sContentProviderId, iIndex) {
|
|
1318
|
+
var oResolvedRefs = aResolvedRefs[iIndex];
|
|
1319
|
+
oResult.referencesToInclude[sContentProviderId] = oResolvedRefs;
|
|
1320
|
+
if (Object.keys(oResolvedRefs).length > 0) {
|
|
1412
1321
|
_StagedLogger.log(function () {
|
|
1413
1322
|
return {
|
|
1414
1323
|
logId: iLogId,
|
|
1415
1324
|
stage: 2,
|
|
1416
|
-
|
|
1417
|
-
|
|
1325
|
+
line: "\u2705 resolved references with contentProviderId = \"" + sContentProviderId + "\" to the following values:",
|
|
1326
|
+
prefix: "\u2022", // bullet point
|
|
1327
|
+
lines: Object.keys(oResolvedRefs).map(function (sRefName) {
|
|
1328
|
+
return sRefName + ": '" + oResolvedRefs[sRefName] + "'";
|
|
1329
|
+
})
|
|
1418
1330
|
};
|
|
1419
1331
|
});
|
|
1420
|
-
|
|
1421
|
-
// don't continue processing, just exit with an empty result set
|
|
1422
|
-
oDeferred.resolve([]);
|
|
1423
|
-
});
|
|
1424
|
-
return oReadyToRematchDeferred.promise();
|
|
1425
|
-
}.bind(this))
|
|
1426
|
-
.then(function (oInitialMatchWithReferencesResult) {
|
|
1427
|
-
// re-match with resolved references
|
|
1428
|
-
var oReferences = oInitialMatchWithReferencesResult.referencesToInclude;
|
|
1429
|
-
|
|
1430
|
-
if (!oReferences) {
|
|
1431
|
-
_StagedLogger.log(function () {
|
|
1432
|
-
return {
|
|
1433
|
-
logId: iLogId,
|
|
1434
|
-
stage: 3,
|
|
1435
|
-
line: "rematch was skipped (no references to resolve)",
|
|
1436
|
-
prefix: "\u2705" // green checkmark
|
|
1437
|
-
};
|
|
1438
|
-
});
|
|
1439
|
-
// no references, skip re-match
|
|
1440
|
-
return new jQuery.Deferred().resolve(oInitialMatchWithReferencesResult).promise();
|
|
1441
|
-
}
|
|
1442
|
-
|
|
1443
|
-
// rematch using the set of the already matched inbounds
|
|
1444
|
-
var aMatchResults = oInitialMatchWithReferencesResult.matchResults;
|
|
1445
|
-
var aMatchingInbounds = aMatchResults.map(function (oMatchResult) {
|
|
1446
|
-
return oMatchResult.inbound;
|
|
1332
|
+
}
|
|
1447
1333
|
});
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
lines: aMatchResults.map(function (oMatchResult) {
|
|
1458
|
-
return _Formatter.formatInbound(oMatchResult.inbound);
|
|
1459
|
-
}),
|
|
1460
|
-
prefix: "\u2705" // green checkmark
|
|
1461
|
-
};
|
|
1462
|
-
}
|
|
1463
|
-
|
|
1464
|
-
return {
|
|
1465
|
-
logId: iLogId,
|
|
1466
|
-
stage: 3,
|
|
1467
|
-
line: "No inbounds re-matched",
|
|
1468
|
-
prefix: "-"
|
|
1469
|
-
};
|
|
1470
|
-
});
|
|
1471
|
-
|
|
1472
|
-
return oFinalMatchResult;
|
|
1334
|
+
oInitialMatchWithReferencesResult = oResult;
|
|
1335
|
+
} catch (sError) {
|
|
1336
|
+
_StagedLogger.log(function () {
|
|
1337
|
+
return {
|
|
1338
|
+
logId: iLogId,
|
|
1339
|
+
stage: 2,
|
|
1340
|
+
prefix: "\u274c", // red X
|
|
1341
|
+
line: "Failed to resolve references: " + sError
|
|
1342
|
+
};
|
|
1473
1343
|
});
|
|
1474
|
-
})
|
|
1475
|
-
.then(function (oFinalMatchResult) {
|
|
1476
|
-
// sorting
|
|
1477
|
-
|
|
1478
|
-
var aMatchResultsToSort = oFinalMatchResult.matchResults || [];
|
|
1479
|
-
if (aMatchResultsToSort.length <= 1) {
|
|
1480
|
-
_StagedLogger.log(function () {
|
|
1481
|
-
return {
|
|
1482
|
-
logId: iLogId,
|
|
1483
|
-
stage: 4,
|
|
1484
|
-
line: "Nothing to sort"
|
|
1485
|
-
};
|
|
1486
|
-
});
|
|
1487
1344
|
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1345
|
+
// don't continue processing, just exit with an empty result set
|
|
1346
|
+
endLogger();
|
|
1347
|
+
return [];
|
|
1348
|
+
}
|
|
1349
|
+
} else { // no references to resolve
|
|
1350
|
+
_StagedLogger.log(function () {
|
|
1351
|
+
return {
|
|
1352
|
+
logId: iLogId,
|
|
1353
|
+
stage: 2,
|
|
1354
|
+
prefix: "\u2705", // green checkmark
|
|
1355
|
+
line: "No need to resolve references"
|
|
1356
|
+
};
|
|
1357
|
+
});
|
|
1491
1358
|
|
|
1492
|
-
|
|
1359
|
+
oInitialMatchWithReferencesResult = {
|
|
1360
|
+
matchResults: oInitialMatchResult.matchResults,
|
|
1361
|
+
referencesToInclude: null
|
|
1362
|
+
};
|
|
1363
|
+
}
|
|
1493
1364
|
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1365
|
+
// ========================= Stage 3 ================================
|
|
1366
|
+
// re-match with resolved references
|
|
1367
|
+
let oFinalMatchResult;
|
|
1368
|
+
if (oInitialMatchWithReferencesResult.referencesToInclude) {
|
|
1369
|
+
// rematch using the set of the already matched inbounds
|
|
1370
|
+
var aMatchResults = oInitialMatchWithReferencesResult.matchResults;
|
|
1371
|
+
var aMatchingInbounds = aMatchResults.map(function (oMatchResult) {
|
|
1372
|
+
return oMatchResult.inbound;
|
|
1373
|
+
});
|
|
1503
1374
|
|
|
1375
|
+
oFinalMatchResult = await _Search.match(oShellHash, aMatchingInbounds, oInitialMatchWithReferencesResult.referencesToInclude, fnGetContentProviderLookup, 0 /* iDebugLevel */);
|
|
1376
|
+
_StagedLogger.log(function () {
|
|
1377
|
+
var aMatchResults = oFinalMatchResult.matchResults || [];
|
|
1378
|
+
if (aMatchResults.length >= 1) {
|
|
1504
1379
|
return {
|
|
1505
1380
|
logId: iLogId,
|
|
1506
|
-
stage:
|
|
1507
|
-
line: "
|
|
1508
|
-
lines:
|
|
1509
|
-
|
|
1510
|
-
|
|
1381
|
+
stage: 3,
|
|
1382
|
+
line: "The following inbounds re-matched:",
|
|
1383
|
+
lines: aMatchResults.map(function (oMatchResult) {
|
|
1384
|
+
return _Formatter.formatInbound(oMatchResult.inbound);
|
|
1385
|
+
}),
|
|
1386
|
+
prefix: "\u2705" // green checkmark
|
|
1511
1387
|
};
|
|
1512
|
-
}
|
|
1388
|
+
}
|
|
1513
1389
|
|
|
1514
|
-
|
|
1390
|
+
return {
|
|
1391
|
+
logId: iLogId,
|
|
1392
|
+
stage: 3,
|
|
1393
|
+
line: "No inbounds re-matched",
|
|
1394
|
+
prefix: "-"
|
|
1395
|
+
};
|
|
1396
|
+
});
|
|
1397
|
+
} else { // no references, skip re-match
|
|
1398
|
+
_StagedLogger.log(function () {
|
|
1399
|
+
return {
|
|
1400
|
+
logId: iLogId,
|
|
1401
|
+
stage: 3,
|
|
1402
|
+
line: "rematch was skipped (no references to resolve)",
|
|
1403
|
+
prefix: "\u2705" // green checkmark
|
|
1404
|
+
};
|
|
1515
1405
|
});
|
|
1406
|
+
oFinalMatchResult = oInitialMatchWithReferencesResult;
|
|
1407
|
+
}
|
|
1516
1408
|
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1409
|
+
// ========================= Stage 4 ================================
|
|
1410
|
+
// sorting
|
|
1411
|
+
var aMatchResultsToSort = oFinalMatchResult.matchResults || [];
|
|
1412
|
+
if (aMatchResultsToSort.length <= 1) {
|
|
1413
|
+
_StagedLogger.log(function () {
|
|
1414
|
+
return {
|
|
1415
|
+
logId: iLogId,
|
|
1416
|
+
stage: 4,
|
|
1417
|
+
line: "Nothing to sort"
|
|
1418
|
+
};
|
|
1521
1419
|
});
|
|
1522
|
-
|
|
1420
|
+
|
|
1421
|
+
endLogger();
|
|
1422
|
+
return aMatchResultsToSort;
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
var aSortedMatchResults = _Search.sortMatchingResultsDeterministic(oFinalMatchResult.matchResults || []);
|
|
1426
|
+
|
|
1427
|
+
_StagedLogger.log(function () {
|
|
1428
|
+
var aLines = aSortedMatchResults.map(function (oMatchResult) {
|
|
1429
|
+
return _Formatter.formatInbound(oMatchResult.inbound || {}) +
|
|
1430
|
+
(oMatchResult.matchesVirtualInbound ? " (virtual)" : "")
|
|
1431
|
+
+ "\n[ Sort Criteria ] "
|
|
1432
|
+
+ "\n * 1 * sap-priority: '" + oMatchResult["sap-priority"] + "'"
|
|
1433
|
+
+ "\n * 2 * Sort string: '" + oMatchResult.priorityString
|
|
1434
|
+
+ "\n * 3 * Deterministic blob: '" + _Search.serializeMatchingResult(oMatchResult) + "'";
|
|
1435
|
+
});
|
|
1436
|
+
|
|
1437
|
+
return {
|
|
1438
|
+
logId: iLogId,
|
|
1439
|
+
stage: 4,
|
|
1440
|
+
line: "Sorted inbounds as follows:",
|
|
1441
|
+
lines: aLines,
|
|
1442
|
+
prefix: ".",
|
|
1443
|
+
number: true
|
|
1444
|
+
};
|
|
1523
1445
|
});
|
|
1446
|
+
|
|
1447
|
+
|
|
1448
|
+
endLogger();
|
|
1449
|
+
return aSortedMatchResults;
|
|
1524
1450
|
};
|
|
1525
1451
|
|
|
1526
1452
|
/**
|
|
@@ -1528,34 +1454,26 @@ sap.ui.define([
|
|
|
1528
1454
|
*
|
|
1529
1455
|
* @param {string} sIntent The intent to be matched.
|
|
1530
1456
|
* @param {object} oInboundIndex The index of the inbounds to be matched.
|
|
1531
|
-
* @returns {
|
|
1457
|
+
* @returns {Promise<boolean>} Resolves with a boolean if the intent is supported and rejected if not.
|
|
1532
1458
|
* The promise resolves to true if only one target matches the intent, and false if multiple targets match the intent.
|
|
1533
1459
|
* @private
|
|
1534
1460
|
* @since 1.32.0
|
|
1535
1461
|
*/
|
|
1536
|
-
ClientSideTargetResolution.prototype._isIntentSupportedOne = function (sIntent, oInboundIndex) {
|
|
1537
|
-
var oDeferred = new jQuery.Deferred();
|
|
1462
|
+
ClientSideTargetResolution.prototype._isIntentSupportedOne = async function (sIntent, oInboundIndex) {
|
|
1538
1463
|
var oShellHash = UrlParsing.parseShellHash(sIntent);
|
|
1539
1464
|
// navigation to '#' is always considered possible
|
|
1540
1465
|
if (sIntent === "#") {
|
|
1541
|
-
|
|
1542
|
-
return oDeferred.promise();
|
|
1466
|
+
return true;
|
|
1543
1467
|
}
|
|
1544
1468
|
if (oShellHash === undefined) {
|
|
1545
|
-
|
|
1469
|
+
throw new Error(`Could not parse shell hash '${sIntent}'`);
|
|
1546
1470
|
}
|
|
1547
1471
|
|
|
1548
|
-
oShellHash.formFactor =
|
|
1472
|
+
oShellHash.formFactor = ushellUtils.getFormFactor();
|
|
1549
1473
|
|
|
1550
|
-
this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true })
|
|
1551
|
-
.done(function (aTargets) {
|
|
1552
|
-
oDeferred.resolve(aTargets.length > 0);
|
|
1553
|
-
})
|
|
1554
|
-
.fail(function () {
|
|
1555
|
-
oDeferred.reject();
|
|
1556
|
-
});
|
|
1474
|
+
const aTargets = await this._getMatchingInbounds(oShellHash, oInboundIndex, { bExcludeTileInbounds: true });
|
|
1557
1475
|
|
|
1558
|
-
return
|
|
1476
|
+
return aTargets.length > 0;
|
|
1559
1477
|
};
|
|
1560
1478
|
|
|
1561
1479
|
/**
|
|
@@ -1576,62 +1494,37 @@ sap.ui.define([
|
|
|
1576
1494
|
* @since 1.32.0
|
|
1577
1495
|
*/
|
|
1578
1496
|
ClientSideTargetResolution.prototype.isIntentSupported = function (aIntents) {
|
|
1579
|
-
var that = this;
|
|
1580
1497
|
var oDeferred = new jQuery.Deferred();
|
|
1581
1498
|
|
|
1582
|
-
this._oInboundProvider.getInbounds()
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1499
|
+
this._oInboundProvider.getInbounds()
|
|
1500
|
+
.then((oInboundIndex) => {
|
|
1501
|
+
return this._isIntentSupported(aIntents, oInboundIndex);
|
|
1502
|
+
})
|
|
1503
|
+
.then((oSupportedByIntent) => {
|
|
1504
|
+
oDeferred.resolve(oSupportedByIntent);
|
|
1505
|
+
})
|
|
1506
|
+
.catch((oError) => {
|
|
1507
|
+
oDeferred.reject(oError);
|
|
1508
|
+
});
|
|
1509
|
+
|
|
1592
1510
|
return oDeferred.promise();
|
|
1593
1511
|
};
|
|
1594
1512
|
|
|
1595
|
-
ClientSideTargetResolution.prototype._isIntentSupported = function (aIntents, oInboundIndex) {
|
|
1596
|
-
var
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
function setResult (sIntent, bSupported) {
|
|
1609
|
-
mSupportedByIntent[sIntent] = {
|
|
1610
|
-
supported: bSupported
|
|
1611
|
-
};
|
|
1612
|
-
}
|
|
1613
|
-
|
|
1614
|
-
var aRejectErrors = [];
|
|
1615
|
-
|
|
1616
|
-
aIntents.forEach(function (sIntent) {
|
|
1617
|
-
var oNextPromise = that._isIntentSupportedOne(sIntent, oInboundIndex);
|
|
1618
|
-
oNextPromise.fail(function (sErrorMessage) {
|
|
1619
|
-
aRejectErrors.push(sErrorMessage);
|
|
1620
|
-
});
|
|
1621
|
-
oNextPromise.done(function (bResult) {
|
|
1622
|
-
setResult(sIntent, bResult);
|
|
1623
|
-
});
|
|
1624
|
-
oDeferred = jQuery.when(oDeferred, oNextPromise);
|
|
1625
|
-
});
|
|
1626
|
-
|
|
1627
|
-
var oRes = new jQuery.Deferred();
|
|
1628
|
-
oDeferred.done(function () {
|
|
1629
|
-
oRes.resolve(mSupportedByIntent);
|
|
1630
|
-
}).fail(function () {
|
|
1631
|
-
oRes.reject("One or more input intents contain errors: " + aRejectErrors.join(", "));
|
|
1632
|
-
});
|
|
1513
|
+
ClientSideTargetResolution.prototype._isIntentSupported = async function (aIntents, oInboundIndex) {
|
|
1514
|
+
var oSupportedByIntent = {};
|
|
1515
|
+
|
|
1516
|
+
await Promise.all(aIntents.map(async (sIntent) => {
|
|
1517
|
+
try {
|
|
1518
|
+
const bSupported = await this._isIntentSupportedOne(sIntent, oInboundIndex);
|
|
1519
|
+
oSupportedByIntent[sIntent] = {
|
|
1520
|
+
supported: bSupported
|
|
1521
|
+
};
|
|
1522
|
+
} catch (oError) {
|
|
1523
|
+
throw new Error(`One or more input intents contain errors: ${oError}`);
|
|
1524
|
+
}
|
|
1525
|
+
}));
|
|
1633
1526
|
|
|
1634
|
-
return
|
|
1527
|
+
return oSupportedByIntent;
|
|
1635
1528
|
};
|
|
1636
1529
|
|
|
1637
1530
|
/**
|
|
@@ -1659,26 +1552,19 @@ sap.ui.define([
|
|
|
1659
1552
|
*/
|
|
1660
1553
|
ClientSideTargetResolution.prototype.getUserDefaultParameterNames = function (oSystemContext) {
|
|
1661
1554
|
// the empty objects may in future bear information like sap-system relevance
|
|
1662
|
-
var that = this;
|
|
1663
1555
|
var oDeferred = new jQuery.Deferred();
|
|
1664
1556
|
|
|
1665
|
-
this._oInboundProvider.getInbounds()
|
|
1557
|
+
this._oInboundProvider.getInbounds()
|
|
1558
|
+
.then((oInboundIndex) => {
|
|
1559
|
+
return this._getUserDefaultParameterNames(oInboundIndex.getAllInbounds(), oSystemContext);
|
|
1560
|
+
})
|
|
1561
|
+
.then((oRefs) => {
|
|
1562
|
+
oDeferred.resolve(oRefs);
|
|
1563
|
+
})
|
|
1564
|
+
.catch((oError) => {
|
|
1565
|
+
oDeferred.reject(oError);
|
|
1566
|
+
});
|
|
1666
1567
|
|
|
1667
|
-
function (oInboundIndex) {
|
|
1668
|
-
that._getUserDefaultParameterNames(oInboundIndex.getAllInbounds(), oSystemContext)
|
|
1669
|
-
.then(
|
|
1670
|
-
function (oRef) {
|
|
1671
|
-
oDeferred.resolve(oRef);
|
|
1672
|
-
},
|
|
1673
|
-
function (e) {
|
|
1674
|
-
oDeferred.reject("Cannot get user default parameters from inbounds: " + e);
|
|
1675
|
-
}
|
|
1676
|
-
);
|
|
1677
|
-
},
|
|
1678
|
-
function () {
|
|
1679
|
-
oDeferred.reject.apply(oDeferred, arguments);
|
|
1680
|
-
}
|
|
1681
|
-
);
|
|
1682
1568
|
return oDeferred.promise();
|
|
1683
1569
|
};
|
|
1684
1570
|
|
|
@@ -1694,7 +1580,7 @@ sap.ui.define([
|
|
|
1694
1580
|
}
|
|
1695
1581
|
return oInb.contentProviderId === oSystemContext.id;
|
|
1696
1582
|
});
|
|
1697
|
-
return
|
|
1583
|
+
return Container.getServiceAsync("ReferenceResolver").then(function (oRefResolverService) {
|
|
1698
1584
|
aInbounds.forEach(function (oTm) {
|
|
1699
1585
|
var oSignatureParams = oTm.signature && oTm.signature.parameters || [];
|
|
1700
1586
|
|
|
@@ -1774,8 +1660,8 @@ sap.ui.define([
|
|
|
1774
1660
|
if (this._oHaveEasyAccessSystemsDeferreds[sMenuType]) {
|
|
1775
1661
|
return this._oHaveEasyAccessSystemsDeferreds[sMenuType].promise();
|
|
1776
1662
|
}
|
|
1777
|
-
|
|
1778
|
-
|
|
1663
|
+
var oDeferred = new jQuery.Deferred();
|
|
1664
|
+
this._oHaveEasyAccessSystemsDeferreds[sMenuType] = oDeferred;
|
|
1779
1665
|
|
|
1780
1666
|
function isValidEasyAccessMenuInbound (oInbound, sCurrentFormFactor, oValidMenuTypeIntents) {
|
|
1781
1667
|
if (!oInbound) {
|
|
@@ -1812,62 +1698,62 @@ sap.ui.define([
|
|
|
1812
1698
|
}, {})
|
|
1813
1699
|
};
|
|
1814
1700
|
|
|
1815
|
-
this._oInboundProvider.getInbounds()
|
|
1816
|
-
|
|
1701
|
+
this._oInboundProvider.getInbounds()
|
|
1702
|
+
.then((oInboundIndex) => { // all inbounds, no segments
|
|
1817
1703
|
var oLastPriorityPerSystem = {};
|
|
1818
1704
|
|
|
1819
|
-
oInboundIndex.getAllInbounds()
|
|
1820
|
-
|
|
1821
|
-
oInbound,
|
|
1822
|
-
)
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
}
|
|
1830
|
-
|
|
1831
|
-
if (typeof sSystemAliasName === "string") {
|
|
1832
|
-
/*
|
|
1833
|
-
* Code below builds the set of easy access system that should be displayed in the sapMenu/userMenu.
|
|
1834
|
-
* In case multiple inbounds exist with a certain system,
|
|
1835
|
-
* the app type with the highest priority is used to choose the title (see oActionDefinitions above).
|
|
1836
|
-
* Note that other app types should still appear in the result set (see 'appType' in the example result from jsdoc).
|
|
1837
|
-
*/
|
|
1838
|
-
var iCurrentActionPriority = oActionDefinitions[oEasyAccessInbound.action].priority;
|
|
1839
|
-
var sCurrentActionAppType = oActionDefinitions[oEasyAccessInbound.action].appType;
|
|
1840
|
-
|
|
1841
|
-
if (!oResultEasyAccessSystemSet[sSystemAliasName]) {
|
|
1842
|
-
// provide base structure...
|
|
1843
|
-
oLastPriorityPerSystem[sSystemAliasName] = -1;
|
|
1844
|
-
oResultEasyAccessSystemSet[sSystemAliasName] = {
|
|
1845
|
-
appType: {}
|
|
1846
|
-
};
|
|
1705
|
+
oInboundIndex.getAllInbounds()
|
|
1706
|
+
.filter(function (oInbound) {
|
|
1707
|
+
return isValidEasyAccessMenuInbound(oInbound, ushellUtils.getFormFactor(), oValidMenuTypeIntents);
|
|
1708
|
+
})
|
|
1709
|
+
.forEach(function (oEasyAccessInbound) {
|
|
1710
|
+
// extract the data for the easy access system list
|
|
1711
|
+
var sSystemAliasName;
|
|
1712
|
+
if (fnIsPlainObject(oEasyAccessInbound.signature.parameters["sap-system"]) &&
|
|
1713
|
+
oEasyAccessInbound.signature.parameters["sap-system"].hasOwnProperty("filter")) {
|
|
1714
|
+
sSystemAliasName = ObjectPath.get("signature.parameters.sap-system.filter.value", oEasyAccessInbound);
|
|
1847
1715
|
}
|
|
1848
1716
|
|
|
1849
|
-
if (
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1717
|
+
if (typeof sSystemAliasName === "string") {
|
|
1718
|
+
/*
|
|
1719
|
+
* Code below builds the set of easy access system that should be displayed in the sapMenu/userMenu.
|
|
1720
|
+
* In case multiple inbounds exist with a certain system,
|
|
1721
|
+
* the app type with the highest priority is used to choose the title (see oActionDefinitions above).
|
|
1722
|
+
* Note that other app types should still appear in the result set (see 'appType' in the example result from jsdoc).
|
|
1723
|
+
*/
|
|
1724
|
+
var iCurrentActionPriority = oActionDefinitions[oEasyAccessInbound.action].priority;
|
|
1725
|
+
var sCurrentActionAppType = oActionDefinitions[oEasyAccessInbound.action].appType;
|
|
1726
|
+
|
|
1727
|
+
if (!oResultEasyAccessSystemSet[sSystemAliasName]) {
|
|
1728
|
+
// provide base structure...
|
|
1729
|
+
oLastPriorityPerSystem[sSystemAliasName] = -1;
|
|
1730
|
+
oResultEasyAccessSystemSet[sSystemAliasName] = {
|
|
1731
|
+
appType: {}
|
|
1732
|
+
};
|
|
1733
|
+
}
|
|
1854
1734
|
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1735
|
+
if (oLastPriorityPerSystem[sSystemAliasName] < iCurrentActionPriority) {
|
|
1736
|
+
// ...then populate in case
|
|
1737
|
+
oResultEasyAccessSystemSet[sSystemAliasName].text = oEasyAccessInbound.title;
|
|
1738
|
+
oLastPriorityPerSystem[sSystemAliasName] = iCurrentActionPriority;
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
// keep track of all the app types
|
|
1742
|
+
oResultEasyAccessSystemSet[sSystemAliasName].appType[sCurrentActionAppType] = true;
|
|
1743
|
+
} else {
|
|
1744
|
+
Log.warning(
|
|
1745
|
+
"Cannot extract sap-system from easy access menu inbound: " + _Formatter.formatInbound(oEasyAccessInbound),
|
|
1746
|
+
"This parameter is supposed to be a string. Got '" + sSystemAliasName + "' instead.",
|
|
1747
|
+
"sap.ushell.services.ClientSideTargetResolution"
|
|
1748
|
+
);
|
|
1749
|
+
}
|
|
1750
|
+
});
|
|
1865
1751
|
oDeferred.resolve(oResultEasyAccessSystemSet);
|
|
1866
|
-
}
|
|
1867
|
-
|
|
1868
|
-
oDeferred.reject
|
|
1869
|
-
}
|
|
1870
|
-
|
|
1752
|
+
})
|
|
1753
|
+
.catch((oError) => {
|
|
1754
|
+
oDeferred.reject(oError);
|
|
1755
|
+
});
|
|
1756
|
+
|
|
1871
1757
|
return oDeferred.promise();
|
|
1872
1758
|
};
|
|
1873
1759
|
|
|
@@ -1888,20 +1774,14 @@ sap.ui.define([
|
|
|
1888
1774
|
* @private
|
|
1889
1775
|
* @since 1.78.0
|
|
1890
1776
|
*/
|
|
1891
|
-
ClientSideTargetResolution.prototype.getSystemContext = function (systemId) {
|
|
1777
|
+
ClientSideTargetResolution.prototype.getSystemContext = async function (systemId) {
|
|
1892
1778
|
var sSystemId = systemId === undefined ? "" : systemId;
|
|
1893
1779
|
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
resolve(oSystemContext);
|
|
1900
|
-
})
|
|
1901
|
-
.fail(function (oError) {
|
|
1902
|
-
reject(oError);
|
|
1903
|
-
});
|
|
1904
|
-
}.bind(this));
|
|
1780
|
+
const oResolvedSystemAlias = await ushellUtils.promisify(this._oAdapter.resolveSystemAlias(sSystemId));
|
|
1781
|
+
|
|
1782
|
+
const oSystemContext = _SystemContext.createSystemContextFromSystemAlias(oResolvedSystemAlias);
|
|
1783
|
+
|
|
1784
|
+
return oSystemContext;
|
|
1905
1785
|
};
|
|
1906
1786
|
|
|
1907
1787
|
ClientSideTargetResolution.hasNoAdapter = false;
|