@sapui5/sap.fe.core 1.108.2 → 1.110.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/README.md +5 -1
- package/package.json +11 -9
- package/src/.eslintrc +7 -0
- package/src/sap/fe/core/.library +39 -37
- package/src/sap/fe/core/.supportrc +3 -3
- package/src/sap/fe/core/ActionRuntime.js +72 -27
- package/src/sap/fe/core/ActionRuntime.ts +104 -21
- package/src/sap/fe/core/AppComponent.js +102 -120
- package/src/sap/fe/core/AppComponent.ts +148 -45
- package/src/sap/fe/core/AppStateHandler.js +105 -91
- package/src/sap/fe/core/AppStateHandler.ts +85 -23
- package/src/sap/fe/core/BaseController.js +5 -20
- package/src/sap/fe/core/BaseController.ts +11 -2
- package/src/sap/fe/core/CommonUtils.js +770 -1079
- package/src/sap/fe/core/CommonUtils.ts +750 -491
- package/src/sap/fe/core/ExtensionAPI.js +69 -96
- package/src/sap/fe/core/ExtensionAPI.ts +15 -17
- package/src/sap/fe/core/PageController.js +21 -46
- package/src/sap/fe/core/PageController.ts +11 -2
- package/src/sap/fe/core/TemplateComponent.js +6 -51
- package/src/sap/fe/core/TemplateComponent.ts +27 -16
- package/src/sap/fe/core/TemplateModel.js +18 -24
- package/src/sap/fe/core/TemplateModel.ts +25 -6
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +8 -23
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +5 -4
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +146 -180
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +144 -57
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +43 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +11 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +436 -556
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +288 -157
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +215 -202
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +93 -51
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +11 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +407 -596
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +163 -56
- package/src/sap/fe/core/controllerextensions/Feedback.js +70 -0
- package/src/sap/fe/core/controllerextensions/Feedback.ts +64 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +12 -23
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +127 -182
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +65 -32
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +96 -198
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +4 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +134 -291
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +21 -12
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +111 -214
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +44 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.js +24 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +39 -52
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +26 -7
- package/src/sap/fe/core/controllerextensions/PageReady.js +81 -119
- package/src/sap/fe/core/controllerextensions/PageReady.ts +36 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +16 -51
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.js +7 -33
- package/src/sap/fe/core/controllerextensions/Routing.js +24 -32
- package/src/sap/fe/core/controllerextensions/Routing.ts +6 -1
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +53 -98
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -3
- package/src/sap/fe/core/controllerextensions/SideEffects.js +103 -174
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +37 -22
- package/src/sap/fe/core/controllerextensions/ViewState.js +341 -276
- package/src/sap/fe/core/controllerextensions/ViewState.ts +236 -84
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +6 -22
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +66 -88
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +64 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +28 -34
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +22 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +69 -65
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +31 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +15 -13
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +273 -906
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +142 -420
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +49 -115
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +12 -7
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +70 -89
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +313 -320
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +582 -683
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +507 -386
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +111 -102
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -79
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +689 -154
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +866 -31
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +24 -101
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +5 -5
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +91 -217
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +3 -20
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +1 -0
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +46 -46
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +4 -26
- package/src/sap/fe/core/controls/ConditionalWrapper.js +16 -33
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +16 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +41 -94
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +5 -34
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +5 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +7 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +56 -58
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +53 -33
- package/src/sap/fe/core/controls/FieldWrapper.js +6 -49
- package/src/sap/fe/core/controls/FileWrapper.js +51 -136
- package/src/sap/fe/core/controls/FileWrapper.ts +25 -29
- package/src/sap/fe/core/controls/FilterBar.js +19 -54
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -22
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -5
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +2 -2
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +24 -46
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +14 -41
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +4 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +26 -67
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -20
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +12 -48
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +17 -46
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -3
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +1 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +6 -78
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +4 -4
- package/src/sap/fe/core/converters/ConverterContext.js +44 -98
- package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -20
- package/src/sap/fe/core/converters/ManifestSettings.ts +16 -9
- package/src/sap/fe/core/converters/ManifestWrapper.js +97 -158
- package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +28 -167
- package/src/sap/fe/core/converters/MetaModelConverter.ts +9 -3
- package/src/sap/fe/core/converters/TemplateConverter.js +10 -22
- package/src/sap/fe/core/converters/TemplateConverter.ts +10 -7
- package/src/sap/fe/core/converters/annotations/DataField.js +88 -132
- package/src/sap/fe/core/converters/annotations/DataField.ts +90 -38
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +57 -379
- package/src/sap/fe/core/converters/controls/Common/Action.js +45 -115
- package/src/sap/fe/core/converters/controls/Common/Action.ts +17 -5
- package/src/sap/fe/core/converters/controls/Common/Chart.js +20 -73
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +21 -14
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -9
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +40 -94
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +44 -31
- package/src/sap/fe/core/converters/controls/Common/Form.js +26 -63
- package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -10
- package/src/sap/fe/core/converters/controls/Common/KPI.js +13 -63
- package/src/sap/fe/core/converters/controls/Common/Table.js +368 -707
- package/src/sap/fe/core/converters/controls/Common/Table.ts +308 -197
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +54 -109
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +15 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +69 -210
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -16
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -80
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +3 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -19
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +45 -136
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +10 -10
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +82 -173
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +48 -22
- package/src/sap/fe/core/converters/helpers/Aggregation.js +24 -66
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -7
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +9 -19
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +0 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +20 -48
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +5 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +12 -51
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +13 -11
- package/src/sap/fe/core/converters/helpers/ID.js +3 -17
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -6
- package/src/sap/fe/core/converters/helpers/Key.js +10 -19
- package/src/sap/fe/core/converters/helpers/Key.ts +3 -3
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +2 -20
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +2 -37
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +126 -131
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +112 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +67 -131
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +58 -27
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -183
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +73 -104
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +74 -67
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +77 -69
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +20 -29
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +21 -0
- package/src/sap/fe/core/formatters/FPMFormatter.js +3 -7
- package/src/sap/fe/core/formatters/KPIFormatter.js +5 -13
- package/src/sap/fe/core/formatters/StandardFormatter.js +3 -18
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +87 -53
- package/src/sap/fe/core/formatters/TableFormatter.ts +96 -9
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -4
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -37
- package/src/sap/fe/core/fpm/Component.js +2 -17
- package/src/sap/fe/core/helpers/AnnotationEnum.js +10 -20
- package/src/sap/fe/core/helpers/AnnotationEnum.ts +6 -6
- package/src/sap/fe/core/helpers/AppStartupHelper.js +16 -52
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js +106 -364
- package/src/sap/fe/core/helpers/BindingToolkit.ts +30 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +16 -97
- package/src/sap/fe/core/helpers/ClassSupport.ts +7 -4
- package/src/sap/fe/core/helpers/DeleteHelper.js +621 -0
- package/src/sap/fe/core/helpers/DeleteHelper.ts +796 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -12
- package/src/sap/fe/core/helpers/EditState.js +2 -5
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -10
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -8
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +8 -38
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -5
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -7
- package/src/sap/fe/core/helpers/MassEditHelper.js +177 -289
- package/src/sap/fe/core/helpers/MassEditHelper.ts +124 -91
- package/src/sap/fe/core/helpers/MessageStrip.js +12 -28
- package/src/sap/fe/core/helpers/MessageStrip.ts +7 -7
- package/src/sap/fe/core/helpers/ModelHelper.js +62 -103
- package/src/sap/fe/core/helpers/ModelHelper.ts +58 -20
- package/src/sap/fe/core/helpers/PasteHelper.js +28 -51
- package/src/sap/fe/core/helpers/PasteHelper.ts +10 -9
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +112 -136
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +111 -111
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +5 -11
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +26 -32
- package/src/sap/fe/core/helpers/StableIdHelper.js +166 -218
- package/src/sap/fe/core/helpers/StableIdHelper.ts +175 -191
- package/src/sap/fe/core/helpers/Synchronization.js +1 -8
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -4
- package/src/sap/fe/core/helpers/TypeGuards.js +22 -0
- package/src/sap/fe/core/helpers/TypeGuards.ts +9 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +1 -3
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +2 -1
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +4 -16
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +2 -5
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +4 -27
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library.js +9 -48
- package/src/sap/fe/core/library.support.js +3 -2
- package/src/sap/fe/core/library.support.ts +3 -1
- package/src/sap/fe/core/library.ts +3 -8
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +74 -39
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +71 -26
- package/src/sap/fe/core/messagebundle.properties +113 -67
- package/src/sap/fe/core/messagebundle_ar.properties +20 -3
- package/src/sap/fe/core/messagebundle_bg.properties +22 -5
- package/src/sap/fe/core/messagebundle_ca.properties +21 -4
- package/src/sap/fe/core/messagebundle_cs.properties +21 -4
- package/src/sap/fe/core/messagebundle_cy.properties +22 -5
- package/src/sap/fe/core/messagebundle_da.properties +20 -3
- package/src/sap/fe/core/messagebundle_de.properties +38 -21
- package/src/sap/fe/core/messagebundle_el.properties +20 -3
- package/src/sap/fe/core/messagebundle_en.properties +38 -21
- package/src/sap/fe/core/messagebundle_en_GB.properties +20 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -28
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +41 -24
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -29
- package/src/sap/fe/core/messagebundle_es.properties +40 -23
- package/src/sap/fe/core/messagebundle_es_MX.properties +20 -3
- package/src/sap/fe/core/messagebundle_et.properties +20 -3
- package/src/sap/fe/core/messagebundle_fi.properties +20 -3
- package/src/sap/fe/core/messagebundle_fr.properties +21 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -5
- package/src/sap/fe/core/messagebundle_hi.properties +20 -3
- package/src/sap/fe/core/messagebundle_hr.properties +22 -5
- package/src/sap/fe/core/messagebundle_hu.properties +20 -3
- package/src/sap/fe/core/messagebundle_id.properties +20 -3
- package/src/sap/fe/core/messagebundle_it.properties +23 -6
- package/src/sap/fe/core/messagebundle_iw.properties +20 -3
- package/src/sap/fe/core/messagebundle_ja.properties +22 -5
- package/src/sap/fe/core/messagebundle_kk.properties +21 -4
- package/src/sap/fe/core/messagebundle_ko.properties +20 -3
- package/src/sap/fe/core/messagebundle_lt.properties +20 -3
- package/src/sap/fe/core/messagebundle_lv.properties +20 -3
- package/src/sap/fe/core/messagebundle_ms.properties +20 -3
- package/src/sap/fe/core/messagebundle_nl.properties +20 -3
- package/src/sap/fe/core/messagebundle_no.properties +20 -3
- package/src/sap/fe/core/messagebundle_pl.properties +21 -4
- package/src/sap/fe/core/messagebundle_pt.properties +20 -3
- package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -3
- package/src/sap/fe/core/messagebundle_ro.properties +20 -3
- package/src/sap/fe/core/messagebundle_ru.properties +20 -3
- package/src/sap/fe/core/messagebundle_sh.properties +20 -3
- package/src/sap/fe/core/messagebundle_sk.properties +20 -3
- package/src/sap/fe/core/messagebundle_sl.properties +26 -9
- package/src/sap/fe/core/messagebundle_sv.properties +20 -3
- package/src/sap/fe/core/messagebundle_th.properties +21 -4
- package/src/sap/fe/core/messagebundle_tr.properties +20 -3
- package/src/sap/fe/core/messagebundle_uk.properties +23 -6
- package/src/sap/fe/core/messagebundle_vi.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -3
- package/src/sap/fe/core/operationsHelper.js +74 -101
- package/src/sap/fe/core/operationsHelper.ts +113 -44
- package/src/sap/fe/core/rootView/Fcl.controller.js +151 -228
- package/src/sap/fe/core/rootView/Fcl.controller.ts +90 -15
- package/src/sap/fe/core/rootView/Fcl.view.xml +1 -8
- package/src/sap/fe/core/rootView/NavContainer.controller.js +41 -78
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +32 -38
- package/src/sap/fe/core/rootView/RootViewBaseController.js +110 -181
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +37 -17
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -18
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +13 -52
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -22
- package/src/sap/fe/core/services/NavigationServiceFactory.js +45 -87
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +17 -10
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -28
- package/src/sap/fe/core/services/RoutingServiceFactory.js +92 -250
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -12
- package/src/sap/fe/core/services/ShellServicesFactory.js +122 -251
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +188 -273
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +143 -154
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +37 -135
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +59 -94
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -16
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/support/AnnotationIssue.support.js +6 -9
- package/src/sap/fe/core/support/AnnotationIssue.support.ts +4 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +3 -3
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +3 -3
- package/src/sap/fe/core/support/CommonHelper.js +7 -16
- package/src/sap/fe/core/support/Diagnostics.js +1 -10
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +6 -9
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +3 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -15
- package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -20
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -20
- package/src/sap/fe/core/templating/DataModelPathHelper.js +49 -121
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +41 -31
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +8 -15
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.js +6 -31
- package/src/sap/fe/core/templating/FieldControlHelper.js +4 -21
- package/src/sap/fe/core/templating/FieldControlHelper.ts +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +40 -111
- package/src/sap/fe/core/templating/FilterHelper.ts +20 -16
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -19
- package/src/sap/fe/core/templating/FilterTemplating.ts +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -34
- package/src/sap/fe/core/templating/PropertyHelper.js +120 -163
- package/src/sap/fe/core/templating/PropertyHelper.ts +69 -33
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +46 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +34 -0
- package/src/sap/fe/core/templating/UIFormatters.js +40 -180
- package/src/sap/fe/core/templating/UIFormatters.ts +37 -43
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -14
- package/src/sap/fe/core/type/Email.js +1 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -11
- package/ui5.yaml +0 -1
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +0 -35
- package/src/sap/fe/core/helpers/LRMessageStrip.js +0 -234
- package/src/sap/fe/core/helpers/LRMessageStrip.ts +0 -216
|
@@ -11,16 +11,13 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
11
11
|
var IssueType = IssueManager.IssueType;
|
|
12
12
|
var IssueSeverity = IssueManager.IssueSeverity;
|
|
13
13
|
var IssueCategory = IssueManager.IssueCategory;
|
|
14
|
-
|
|
15
|
-
var getVisualizationsFromPresentationVariant = function (presentationVariantAnnotation, visualizationPath, converterContext) {
|
|
14
|
+
var getVisualizationsFromPresentationVariant = function (presentationVariantAnnotation, visualizationPath, converterContext, isMacroOrMultipleView) {
|
|
16
15
|
var visualizationAnnotations = [];
|
|
17
16
|
var bIsALP = converterContext.getManifestWrapper().hasMultipleVisualizations() || converterContext.getTemplateType() === TemplateType.AnalyticalListPage;
|
|
18
17
|
var baseVisualizationPath = visualizationPath.split("@")[0];
|
|
19
|
-
|
|
20
|
-
if (!isPresentationCompliant(presentationVariantAnnotation, bIsALP)) {
|
|
18
|
+
if (isMacroOrMultipleView && !isPresentationCompliant(presentationVariantAnnotation, bIsALP)) {
|
|
21
19
|
var entityType = converterContext.getEntityType();
|
|
22
20
|
var defaultLineItemAnnotation = getDefaultLineItem(entityType);
|
|
23
|
-
|
|
24
21
|
if (defaultLineItemAnnotation) {
|
|
25
22
|
visualizationAnnotations.push({
|
|
26
23
|
visualization: defaultLineItemAnnotation,
|
|
@@ -28,43 +25,36 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
28
25
|
converterContext: converterContext
|
|
29
26
|
});
|
|
30
27
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
|
|
28
|
+
}
|
|
29
|
+
var visualizations = presentationVariantAnnotation.Visualizations;
|
|
30
|
+
var pushFirstVizOfType = function (allowedTerms) {
|
|
31
|
+
var firstViz = visualizations === null || visualizations === void 0 ? void 0 : visualizations.find(function (viz) {
|
|
32
|
+
var _viz$$target;
|
|
33
|
+
return allowedTerms.indexOf((_viz$$target = viz.$target) === null || _viz$$target === void 0 ? void 0 : _viz$$target.term) >= 0;
|
|
34
|
+
});
|
|
35
|
+
if (firstViz) {
|
|
36
|
+
visualizationAnnotations.push({
|
|
37
|
+
visualization: firstViz.$target,
|
|
38
|
+
annotationPath: "".concat(baseVisualizationPath).concat(firstViz.value),
|
|
39
|
+
converterContext: converterContext
|
|
37
40
|
});
|
|
38
|
-
|
|
39
|
-
if (firstViz) {
|
|
40
|
-
visualizationAnnotations.push({
|
|
41
|
-
visualization: firstViz.$target,
|
|
42
|
-
annotationPath: "".concat(baseVisualizationPath).concat(firstViz.value),
|
|
43
|
-
converterContext: converterContext
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
if (bIsALP) {
|
|
49
|
-
// In case of ALP, we use the first LineItem and the first Chart
|
|
50
|
-
pushFirstVizOfType(["com.sap.vocabularies.UI.v1.LineItem"]);
|
|
51
|
-
pushFirstVizOfType(["com.sap.vocabularies.UI.v1.Chart"]);
|
|
52
|
-
} else {
|
|
53
|
-
// Otherwise, we use the first viz only (Chart or LineItem)
|
|
54
|
-
pushFirstVizOfType(["com.sap.vocabularies.UI.v1.LineItem", "com.sap.vocabularies.UI.v1.Chart"]);
|
|
55
41
|
}
|
|
42
|
+
};
|
|
43
|
+
if (bIsALP) {
|
|
44
|
+
// In case of ALP, we use the first LineItem and the first Chart
|
|
45
|
+
pushFirstVizOfType(["com.sap.vocabularies.UI.v1.LineItem"]);
|
|
46
|
+
pushFirstVizOfType(["com.sap.vocabularies.UI.v1.Chart"]);
|
|
47
|
+
} else {
|
|
48
|
+
// Otherwise, we use the first viz only (Chart or LineItem)
|
|
49
|
+
pushFirstVizOfType(["com.sap.vocabularies.UI.v1.LineItem", "com.sap.vocabularies.UI.v1.Chart"]);
|
|
56
50
|
}
|
|
57
|
-
|
|
58
51
|
return visualizationAnnotations;
|
|
59
52
|
};
|
|
60
|
-
|
|
61
53
|
_exports.getVisualizationsFromPresentationVariant = getVisualizationsFromPresentationVariant;
|
|
62
|
-
|
|
63
54
|
function getSelectionPresentationVariant(entityType, annotationPath, converterContext) {
|
|
64
55
|
if (annotationPath) {
|
|
65
56
|
var resolvedTarget = converterContext.getEntityTypeAnnotation(annotationPath);
|
|
66
57
|
var selectionPresentationVariant = resolvedTarget.annotation;
|
|
67
|
-
|
|
68
58
|
if (selectionPresentationVariant) {
|
|
69
59
|
if (selectionPresentationVariant.term === "com.sap.vocabularies.UI.v1.SelectionPresentationVariant") {
|
|
70
60
|
return selectionPresentationVariant;
|
|
@@ -74,94 +64,71 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
74
64
|
}
|
|
75
65
|
} else {
|
|
76
66
|
var _entityType$annotatio, _entityType$annotatio2;
|
|
77
|
-
|
|
78
67
|
return (_entityType$annotatio = entityType.annotations) === null || _entityType$annotatio === void 0 ? void 0 : (_entityType$annotatio2 = _entityType$annotatio.UI) === null || _entityType$annotatio2 === void 0 ? void 0 : _entityType$annotatio2.SelectionPresentationVariant;
|
|
79
68
|
}
|
|
80
69
|
}
|
|
81
|
-
|
|
82
70
|
_exports.getSelectionPresentationVariant = getSelectionPresentationVariant;
|
|
83
|
-
|
|
84
71
|
function isSelectionPresentationCompliant(SelectionPresentationVariant, bIsALP) {
|
|
85
72
|
var presentationVariant = SelectionPresentationVariant && SelectionPresentationVariant.PresentationVariant;
|
|
86
|
-
|
|
87
73
|
if (presentationVariant) {
|
|
88
74
|
return isPresentationCompliant(presentationVariant, bIsALP);
|
|
89
75
|
} else {
|
|
90
76
|
throw new Error("Presentation Variant is not present in the SPV annotation");
|
|
91
77
|
}
|
|
92
78
|
}
|
|
93
|
-
|
|
94
79
|
_exports.isSelectionPresentationCompliant = isSelectionPresentationCompliant;
|
|
95
|
-
|
|
96
80
|
function isPresentationCompliant(presentationVariant) {
|
|
97
81
|
var bIsALP = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
98
82
|
var bHasTable = false,
|
|
99
|
-
|
|
100
|
-
|
|
83
|
+
bHasChart = false;
|
|
101
84
|
if (bIsALP) {
|
|
102
85
|
if (presentationVariant !== null && presentationVariant !== void 0 && presentationVariant.Visualizations) {
|
|
103
86
|
var aVisualizations = presentationVariant.Visualizations;
|
|
104
87
|
aVisualizations.forEach(function (oVisualization) {
|
|
105
|
-
|
|
88
|
+
var _oVisualization$$targ, _oVisualization$$targ2;
|
|
89
|
+
if (((_oVisualization$$targ = oVisualization.$target) === null || _oVisualization$$targ === void 0 ? void 0 : _oVisualization$$targ.term) === "com.sap.vocabularies.UI.v1.LineItem") {
|
|
106
90
|
bHasTable = true;
|
|
107
91
|
}
|
|
108
|
-
|
|
109
|
-
if (oVisualization.$target.term === "com.sap.vocabularies.UI.v1.Chart") {
|
|
92
|
+
if (((_oVisualization$$targ2 = oVisualization.$target) === null || _oVisualization$$targ2 === void 0 ? void 0 : _oVisualization$$targ2.term) === "com.sap.vocabularies.UI.v1.Chart") {
|
|
110
93
|
bHasChart = true;
|
|
111
94
|
}
|
|
112
95
|
});
|
|
113
96
|
}
|
|
114
|
-
|
|
115
97
|
return bHasChart && bHasTable;
|
|
116
98
|
} else {
|
|
117
99
|
return (presentationVariant === null || presentationVariant === void 0 ? void 0 : presentationVariant.Visualizations) && !!presentationVariant.Visualizations.find(function (visualization) {
|
|
118
|
-
|
|
100
|
+
var _visualization$$targe, _visualization$$targe2;
|
|
101
|
+
return ((_visualization$$targe = visualization.$target) === null || _visualization$$targe === void 0 ? void 0 : _visualization$$targe.term) === "com.sap.vocabularies.UI.v1.LineItem" || ((_visualization$$targe2 = visualization.$target) === null || _visualization$$targe2 === void 0 ? void 0 : _visualization$$targe2.term) === "com.sap.vocabularies.UI.v1.Chart";
|
|
119
102
|
});
|
|
120
103
|
}
|
|
121
104
|
}
|
|
122
|
-
|
|
123
105
|
_exports.isPresentationCompliant = isPresentationCompliant;
|
|
124
|
-
|
|
125
106
|
function getDefaultLineItem(entityType) {
|
|
126
107
|
var _entityType$annotatio3;
|
|
127
|
-
|
|
128
108
|
return (_entityType$annotatio3 = entityType.annotations.UI) === null || _entityType$annotatio3 === void 0 ? void 0 : _entityType$annotatio3.LineItem;
|
|
129
109
|
}
|
|
130
|
-
|
|
131
110
|
_exports.getDefaultLineItem = getDefaultLineItem;
|
|
132
|
-
|
|
133
111
|
function getDefaultChart(entityType) {
|
|
134
112
|
var _entityType$annotatio4;
|
|
135
|
-
|
|
136
113
|
return (_entityType$annotatio4 = entityType.annotations.UI) === null || _entityType$annotatio4 === void 0 ? void 0 : _entityType$annotatio4.Chart;
|
|
137
114
|
}
|
|
138
|
-
|
|
139
115
|
_exports.getDefaultChart = getDefaultChart;
|
|
140
|
-
|
|
141
116
|
function getDefaultPresentationVariant(entityType) {
|
|
142
117
|
var _entityType$annotatio5, _entityType$annotatio6;
|
|
143
|
-
|
|
144
118
|
return (_entityType$annotatio5 = entityType.annotations) === null || _entityType$annotatio5 === void 0 ? void 0 : (_entityType$annotatio6 = _entityType$annotatio5.UI) === null || _entityType$annotatio6 === void 0 ? void 0 : _entityType$annotatio6.PresentationVariant;
|
|
145
119
|
}
|
|
146
|
-
|
|
147
120
|
_exports.getDefaultPresentationVariant = getDefaultPresentationVariant;
|
|
148
|
-
|
|
149
121
|
function getDefaultSelectionVariant(entityType) {
|
|
150
122
|
var _entityType$annotatio7, _entityType$annotatio8;
|
|
151
|
-
|
|
152
123
|
return (_entityType$annotatio7 = entityType.annotations) === null || _entityType$annotatio7 === void 0 ? void 0 : (_entityType$annotatio8 = _entityType$annotatio7.UI) === null || _entityType$annotatio8 === void 0 ? void 0 : _entityType$annotatio8.SelectionVariant;
|
|
153
124
|
}
|
|
154
|
-
|
|
155
125
|
_exports.getDefaultSelectionVariant = getDefaultSelectionVariant;
|
|
156
|
-
|
|
157
126
|
function getSelectionVariant(entityType, converterContext) {
|
|
158
127
|
var annotationPath = converterContext.getManifestWrapper().getDefaultTemplateAnnotationPath();
|
|
159
128
|
var selectionPresentationVariant = getSelectionPresentationVariant(entityType, annotationPath, converterContext);
|
|
160
129
|
var selectionVariant;
|
|
161
|
-
|
|
162
130
|
if (selectionPresentationVariant) {
|
|
163
131
|
selectionVariant = selectionPresentationVariant.SelectionVariant;
|
|
164
|
-
|
|
165
132
|
if (selectionVariant) {
|
|
166
133
|
return selectionVariant;
|
|
167
134
|
}
|
|
@@ -170,10 +137,8 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
170
137
|
return selectionVariant;
|
|
171
138
|
}
|
|
172
139
|
}
|
|
173
|
-
|
|
174
140
|
_exports.getSelectionVariant = getSelectionVariant;
|
|
175
|
-
|
|
176
|
-
function getDataVisualizationConfiguration(visualizationPath, isCondensedTableLayoutCompliant, inConverterContext, viewConfiguration, doNotCheckApplySupported, associatedPresentationVariantPath) {
|
|
141
|
+
function getDataVisualizationConfiguration(visualizationPath, isCondensedTableLayoutCompliant, inConverterContext, viewConfiguration, doNotCheckApplySupported, associatedPresentationVariantPath, isMacroOrMultipleView) {
|
|
177
142
|
var resolvedTarget = visualizationPath !== "" ? inConverterContext.getEntityTypeAnnotation(visualizationPath) : {
|
|
178
143
|
annotation: undefined,
|
|
179
144
|
converterContext: inConverterContext
|
|
@@ -186,7 +151,6 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
186
151
|
var presentationPath = "";
|
|
187
152
|
var chartVisualization, tableVisualization;
|
|
188
153
|
var sTerm = resolvedVisualization === null || resolvedVisualization === void 0 ? void 0 : resolvedVisualization.term;
|
|
189
|
-
|
|
190
154
|
if (sTerm) {
|
|
191
155
|
switch (sTerm) {
|
|
192
156
|
case "com.sap.vocabularies.UI.v1.LineItem":
|
|
@@ -198,33 +162,27 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
198
162
|
converterContext: inConverterContext
|
|
199
163
|
});
|
|
200
164
|
break;
|
|
201
|
-
|
|
202
165
|
case "com.sap.vocabularies.UI.v1.PresentationVariant":
|
|
203
166
|
presentationVariantAnnotation = resolvedVisualization;
|
|
204
|
-
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(resolvedVisualization, visualizationPath, inConverterContext));
|
|
167
|
+
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(resolvedVisualization, visualizationPath, inConverterContext, isMacroOrMultipleView));
|
|
205
168
|
break;
|
|
206
|
-
|
|
207
169
|
case "com.sap.vocabularies.UI.v1.SelectionPresentationVariant":
|
|
208
|
-
presentationVariantAnnotation = resolvedVisualization.PresentationVariant;
|
|
209
|
-
|
|
170
|
+
presentationVariantAnnotation = resolvedVisualization.PresentationVariant;
|
|
171
|
+
// Presentation can be inline or outside the SelectionPresentationVariant
|
|
210
172
|
presentationPath = presentationVariantAnnotation.fullyQualifiedName;
|
|
211
|
-
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(presentationVariantAnnotation, visualizationPath, inConverterContext));
|
|
173
|
+
visualizationAnnotations = visualizationAnnotations.concat(getVisualizationsFromPresentationVariant(presentationVariantAnnotation, visualizationPath, inConverterContext, isMacroOrMultipleView));
|
|
212
174
|
break;
|
|
213
|
-
|
|
214
175
|
default:
|
|
215
176
|
break;
|
|
216
177
|
}
|
|
217
|
-
|
|
218
178
|
visualizationAnnotations.forEach(function (visualizationAnnotation) {
|
|
219
179
|
var visualization = visualizationAnnotation.visualization,
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
180
|
+
annotationPath = visualizationAnnotation.annotationPath,
|
|
181
|
+
converterContext = visualizationAnnotation.converterContext;
|
|
223
182
|
switch (visualization.term) {
|
|
224
183
|
case "com.sap.vocabularies.UI.v1.Chart":
|
|
225
184
|
chartVisualization = createChartVisualization(visualization, annotationPath, converterContext, doNotCheckApplySupported);
|
|
226
185
|
break;
|
|
227
|
-
|
|
228
186
|
case "com.sap.vocabularies.UI.v1.LineItem":
|
|
229
187
|
default:
|
|
230
188
|
tableVisualization = Table.createTableVisualization(visualization, annotationPath, converterContext, presentationVariantAnnotation, isCondensedTableLayoutCompliant, viewConfiguration);
|
|
@@ -232,30 +190,26 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
232
190
|
}
|
|
233
191
|
});
|
|
234
192
|
} else {
|
|
235
|
-
tableVisualization = Table.createDefaultTableVisualization(inConverterContext);
|
|
193
|
+
tableVisualization = Table.createDefaultTableVisualization(inConverterContext, !isMacroOrMultipleView);
|
|
236
194
|
inConverterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Medium, IssueType.MISSING_LINEITEM);
|
|
237
195
|
}
|
|
238
|
-
|
|
239
196
|
var aVisualizations = [];
|
|
240
197
|
var sPath = sTerm === "com.sap.vocabularies.UI.v1.SelectionPresentationVariant" ? presentationPath : resolvedVisualization && resolvedVisualization.fullyQualifiedName;
|
|
241
|
-
|
|
242
198
|
if (sPath === undefined) {
|
|
243
199
|
sPath = "/";
|
|
244
200
|
}
|
|
245
|
-
|
|
246
201
|
if (chartVisualization) {
|
|
247
202
|
aVisualizations.push(chartVisualization);
|
|
248
203
|
}
|
|
249
|
-
|
|
250
204
|
if (tableVisualization) {
|
|
251
205
|
aVisualizations.push(tableVisualization);
|
|
252
206
|
}
|
|
253
|
-
|
|
254
207
|
return {
|
|
255
208
|
visualizations: aVisualizations,
|
|
256
209
|
annotationPath: inConverterContext.getEntitySetBasedAnnotationPath(sPath)
|
|
257
210
|
};
|
|
258
211
|
}
|
|
212
|
+
|
|
259
213
|
/**
|
|
260
214
|
* Return UI Control (LineItem/Chart) Context.
|
|
261
215
|
*
|
|
@@ -265,19 +219,14 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
265
219
|
* @param sControlPath Control path
|
|
266
220
|
* @returns The Control (LineItem/Chart) context
|
|
267
221
|
*/
|
|
268
|
-
|
|
269
|
-
|
|
270
222
|
_exports.getDataVisualizationConfiguration = getDataVisualizationConfiguration;
|
|
271
|
-
|
|
272
223
|
function getUiControl(oPresentationContext, sControlPath) {
|
|
273
224
|
var oPresentation = oPresentationContext.getObject(oPresentationContext.getPath()),
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
225
|
+
oPresentationVariantPath = CommonHelper.createPresentationPathContext(oPresentationContext),
|
|
226
|
+
oModel = oPresentationContext.getModel();
|
|
277
227
|
if (CommonHelper._isPresentationVariantAnnotation(oPresentationVariantPath.getPath())) {
|
|
278
228
|
// Uncomplete PresentationVariant can be passed to macro via SelectionPresentationVariant
|
|
279
229
|
var aVisualizations = oPresentation.Visualizations;
|
|
280
|
-
|
|
281
230
|
if (Array.isArray(aVisualizations)) {
|
|
282
231
|
for (var i = 0; i < aVisualizations.length; i++) {
|
|
283
232
|
if (aVisualizations[i].$AnnotationPath.indexOf(sControlPath) !== -1) {
|
|
@@ -286,14 +235,11 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/macros/Com
|
|
|
286
235
|
}
|
|
287
236
|
}
|
|
288
237
|
}
|
|
289
|
-
|
|
290
238
|
return oModel.getMetaContext(oPresentationContext.getPath().split("@")[0] + sControlPath);
|
|
291
239
|
}
|
|
292
|
-
|
|
293
240
|
return oPresentationContext;
|
|
294
241
|
}
|
|
295
|
-
|
|
296
242
|
_exports.getUiControl = getUiControl;
|
|
297
243
|
return _exports;
|
|
298
244
|
}, false);
|
|
299
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJ2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMiLCJiSXNBTFAiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiYmFzZVZpc3VhbGl6YXRpb25QYXRoIiwic3BsaXQiLCJpc1ByZXNlbnRhdGlvbkNvbXBsaWFudCIsImVudGl0eVR5cGUiLCJnZXRFbnRpdHlUeXBlIiwiZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbiIsImdldERlZmF1bHRMaW5lSXRlbSIsInB1c2giLCJ2aXN1YWxpemF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidmlzdWFsaXphdGlvbnMiLCJWaXN1YWxpemF0aW9ucyIsInB1c2hGaXJzdFZpek9mVHlwZSIsImFsbG93ZWRUZXJtcyIsImZpcnN0Vml6IiwiZmluZCIsInZpeiIsImluZGV4T2YiLCIkdGFyZ2V0IiwidGVybSIsInZhbHVlIiwiZ2V0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IiwiYW5ub3RhdGlvbiIsIkVycm9yIiwiYW5ub3RhdGlvbnMiLCJVSSIsIlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQiLCJpc1NlbGVjdGlvblByZXNlbnRhdGlvbkNvbXBsaWFudCIsInByZXNlbnRhdGlvblZhcmlhbnQiLCJQcmVzZW50YXRpb25WYXJpYW50IiwiYkhhc1RhYmxlIiwiYkhhc0NoYXJ0IiwiYVZpc3VhbGl6YXRpb25zIiwiZm9yRWFjaCIsIm9WaXN1YWxpemF0aW9uIiwiTGluZUl0ZW0iLCJnZXREZWZhdWx0Q2hhcnQiLCJDaGFydCIsImdldERlZmF1bHRQcmVzZW50YXRpb25WYXJpYW50IiwiZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50IiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoIiwic2VsZWN0aW9uVmFyaWFudCIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJpbkNvbnZlcnRlckNvbnRleHQiLCJ2aWV3Q29uZmlndXJhdGlvbiIsImRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCIsImFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aCIsInVuZGVmaW5lZCIsInJlc29sdmVkQXNzb2NpYXRlZFByZXNlbnRhdGlvblZhcmlhbnQiLCJyZXNvbHZlZFZpc3VhbGl6YXRpb24iLCJwcmVzZW50YXRpb25QYXRoIiwiY2hhcnRWaXN1YWxpemF0aW9uIiwidGFibGVWaXN1YWxpemF0aW9uIiwic1Rlcm0iLCJjb25jYXQiLCJ2aXN1YWxpemF0aW9uQW5ub3RhdGlvbiIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiIsIlRhYmxlIiwiY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uIiwiY3JlYXRlRGVmYXVsdFRhYmxlVmlzdWFsaXphdGlvbiIsImdldERpYWdub3N0aWNzIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiQW5ub3RhdGlvbiIsIklzc3VlU2V2ZXJpdHkiLCJNZWRpdW0iLCJJc3N1ZVR5cGUiLCJNSVNTSU5HX0xJTkVJVEVNIiwic1BhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZ2V0VWlDb250cm9sIiwib1ByZXNlbnRhdGlvbkNvbnRleHQiLCJzQ29udHJvbFBhdGgiLCJvUHJlc2VudGF0aW9uIiwiZ2V0T2JqZWN0IiwiZ2V0UGF0aCIsIm9QcmVzZW50YXRpb25WYXJpYW50UGF0aCIsIkNvbW1vbkhlbHBlciIsImNyZWF0ZVByZXNlbnRhdGlvblBhdGhDb250ZXh0Iiwib01vZGVsIiwiZ2V0TW9kZWwiLCJfaXNQcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImkiLCJsZW5ndGgiLCIkQW5ub3RhdGlvblBhdGgiLCJnZXRNZXRhQ29udGV4dCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0YVZpc3VhbGl6YXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0UHJlc2VudGF0aW9uVmFyaWFudFR5cGUsXG5cdFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFNlbGVjdGlvblZhcmlhbnRcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5LCBJc3N1ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3UGF0aENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vQ2hhcnRcIjtcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL1RhYmxlXCI7XG5pbXBvcnQgVGFibGUgZnJvbSBcIi4vVGFibGVcIjtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IExpbmVJdGVtIHwgQ2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cbmV4cG9ydCB0eXBlIEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IExpbmVJdGVtIHwgQ2hhcnQ7XG5cbmV4cG9ydCB0eXBlIFZpc3VhbGl6YXRpb25BbmRQYXRoID0ge1xuXHR2aXN1YWxpemF0aW9uOiBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnM7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0ge1xuXHR2aXN1YWxpemF0aW9uczogKFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbilbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50ID0gZnVuY3Rpb24gKFxuXHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbjogUHJlc2VudGF0aW9uVmFyaWFudFR5cGUsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10ge1xuXHRjb25zdCB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblxuXHRjb25zdCBiSXNBTFAgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZTtcblxuXHRjb25zdCBiYXNlVmlzdWFsaXphdGlvblBhdGggPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIilbMF07XG5cblx0aWYgKCFpc1ByZXNlbnRhdGlvbkNvbXBsaWFudChwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiwgYklzQUxQKSkge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRjb25zdCBkZWZhdWx0TGluZUl0ZW1Bbm5vdGF0aW9uID0gZ2V0RGVmYXVsdExpbmVJdGVtKGVudGl0eVR5cGUpO1xuXHRcdGlmIChkZWZhdWx0TGluZUl0ZW1Bbm5vdGF0aW9uKSB7XG5cdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdHZpc3VhbGl6YXRpb246IGRlZmF1bHRMaW5lSXRlbUFubm90YXRpb24sXG5cdFx0XHRcdGFubm90YXRpb25QYXRoOiBgJHtiYXNlVmlzdWFsaXphdGlvblBhdGh9JHtjb252ZXJ0ZXJDb250ZXh0LmdldFJlbGF0aXZlQW5ub3RhdGlvblBhdGgoXG5cdFx0XHRcdFx0ZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRcdFx0ZW50aXR5VHlwZVxuXHRcdFx0XHQpfWAsXG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IGNvbnZlcnRlckNvbnRleHRcblx0XHRcdH0pO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRjb25zdCB2aXN1YWxpemF0aW9ucyA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uLlZpc3VhbGl6YXRpb25zO1xuXG5cdFx0Y29uc3QgcHVzaEZpcnN0Vml6T2ZUeXBlID0gZnVuY3Rpb24gKGFsbG93ZWRUZXJtczogc3RyaW5nW10pIHtcblx0XHRcdGNvbnN0IGZpcnN0Vml6ID0gdmlzdWFsaXphdGlvbnMuZmluZCgodml6KSA9PiB7XG5cdFx0XHRcdHJldHVybiBhbGxvd2VkVGVybXMuaW5kZXhPZih2aXouJHRhcmdldC50ZXJtKSA+PSAwO1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChmaXJzdFZpeikge1xuXHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0dmlzdWFsaXphdGlvbjogZmlyc3RWaXouJHRhcmdldCBhcyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IGAke2Jhc2VWaXN1YWxpemF0aW9uUGF0aH0ke2ZpcnN0Vml6LnZhbHVlfWAsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogY29udmVydGVyQ29udGV4dFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0aWYgKGJJc0FMUCkge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBBTFAsIHdlIHVzZSB0aGUgZmlyc3QgTGluZUl0ZW0gYW5kIHRoZSBmaXJzdCBDaGFydFxuXHRcdFx0cHVzaEZpcnN0Vml6T2ZUeXBlKFtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbV0pO1xuXHRcdFx0cHVzaEZpcnN0Vml6T2ZUeXBlKFtVSUFubm90YXRpb25UZXJtcy5DaGFydF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBPdGhlcndpc2UsIHdlIHVzZSB0aGUgZmlyc3Qgdml6IG9ubHkgKENoYXJ0IG9yIExpbmVJdGVtKVxuXHRcdFx0cHVzaEZpcnN0Vml6T2ZUeXBlKFtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSwgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnRdKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KFxuXHRlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBhbnkge1xuXHRpZiAoYW5ub3RhdGlvblBhdGgpIHtcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oYW5ub3RhdGlvblBhdGgpO1xuXHRcdGNvbnN0IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0aWYgKHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdGlmIChzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdFx0cmV0dXJuIHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkFubm90YXRpb24gUGF0aCBmb3IgdGhlIFNQViBtZW50aW9uZWQgaW4gdGhlIG1hbmlmZXN0IGlzIG5vdCBmb3VuZCwgUGxlYXNlIGFkZCB0aGUgU1BWIGluIHRoZSBhbm5vdGF0aW9uXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uUHJlc2VudGF0aW9uQ29tcGxpYW50KFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50OiBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRiSXNBTFA6IGJvb2xlYW5cbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRjb25zdCBwcmVzZW50YXRpb25WYXJpYW50ID0gU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCAmJiBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LlByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdGlmIChwcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0cmV0dXJuIGlzUHJlc2VudGF0aW9uQ29tcGxpYW50KHByZXNlbnRhdGlvblZhcmlhbnQsIGJJc0FMUCk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiUHJlc2VudGF0aW9uIFZhcmlhbnQgaXMgbm90IHByZXNlbnQgaW4gdGhlIFNQViBhbm5vdGF0aW9uXCIpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXNlbnRhdGlvbkNvbXBsaWFudChwcmVzZW50YXRpb25WYXJpYW50OiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSwgYklzQUxQID0gZmFsc2UpOiBib29sZWFuIHtcblx0bGV0IGJIYXNUYWJsZSA9IGZhbHNlLFxuXHRcdGJIYXNDaGFydCA9IGZhbHNlO1xuXHRpZiAoYklzQUxQKSB7XG5cdFx0aWYgKHByZXNlbnRhdGlvblZhcmlhbnQ/LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRjb25zdCBhVmlzdWFsaXphdGlvbnMgPSBwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zO1xuXHRcdFx0YVZpc3VhbGl6YXRpb25zLmZvckVhY2goKG9WaXN1YWxpemF0aW9uKSA9PiB7XG5cdFx0XHRcdGlmIChvVmlzdWFsaXphdGlvbi4kdGFyZ2V0LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtKSB7XG5cdFx0XHRcdFx0Ykhhc1RhYmxlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Zpc3VhbGl6YXRpb24uJHRhcmdldC50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5DaGFydCkge1xuXHRcdFx0XHRcdGJIYXNDaGFydCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gYkhhc0NoYXJ0ICYmIGJIYXNUYWJsZTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudD8uVmlzdWFsaXphdGlvbnMgJiZcblx0XHRcdCEhcHJlc2VudGF0aW9uVmFyaWFudC5WaXN1YWxpemF0aW9ucy5maW5kKCh2aXN1YWxpemF0aW9uKSA9PiB7XG5cdFx0XHRcdHJldHVybiB2aXN1YWxpemF0aW9uLiR0YXJnZXQudGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHwgdmlzdWFsaXphdGlvbi4kdGFyZ2V0LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0O1xuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TGluZUl0ZW0oZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IExpbmVJdGVtIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkxpbmVJdGVtO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDaGFydChlbnRpdHlUeXBlOiBFbnRpdHlUeXBlKTogQ2hhcnQgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucy5VST8uQ2hhcnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFByZXNlbnRhdGlvblZhcmlhbnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IFByZXNlbnRhdGlvblZhcmlhbnQgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LlByZXNlbnRhdGlvblZhcmlhbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0U2VsZWN0aW9uVmFyaWFudChlbnRpdHlUeXBlOiBFbnRpdHlUeXBlKTogU2VsZWN0aW9uVmFyaWFudCB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uU2VsZWN0aW9uVmFyaWFudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGlvblZhcmlhbnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSwgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IFNlbGVjdGlvblZhcmlhbnQgfCB1bmRlZmluZWQge1xuXHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0RGVmYXVsdFRlbXBsYXRlQW5ub3RhdGlvblBhdGgoKTtcblx0Y29uc3Qgc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCA9IGdldFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQoZW50aXR5VHlwZSwgYW5ub3RhdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRsZXQgc2VsZWN0aW9uVmFyaWFudDtcblx0aWYgKHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRzZWxlY3Rpb25WYXJpYW50ID0gc2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudC5TZWxlY3Rpb25WYXJpYW50O1xuXHRcdGlmIChzZWxlY3Rpb25WYXJpYW50KSB7XG5cdFx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c2VsZWN0aW9uVmFyaWFudCA9IGdldERlZmF1bHRTZWxlY3Rpb25WYXJpYW50KGVudGl0eVR5cGUpO1xuXHRcdHJldHVybiBzZWxlY3Rpb25WYXJpYW50O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQ6IGJvb2xlYW4sXG5cdGluQ29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0dmlld0NvbmZpZ3VyYXRpb24/OiBWaWV3UGF0aENvbmZpZ3VyYXRpb24sXG5cdGRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZD86IGJvb2xlYW4sXG5cdGFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aD86IHN0cmluZ1xuKTogRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uIHtcblx0Y29uc3QgcmVzb2x2ZWRUYXJnZXQgPVxuXHRcdHZpc3VhbGl6YXRpb25QYXRoICE9PSBcIlwiXG5cdFx0XHQ/IGluQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbih2aXN1YWxpemF0aW9uUGF0aClcblx0XHRcdDogeyBhbm5vdGF0aW9uOiB1bmRlZmluZWQsIGNvbnZlcnRlckNvbnRleHQ6IGluQ29udmVydGVyQ29udGV4dCB9O1xuXHRjb25zdCByZXNvbHZlZEFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50ID0gYXNzb2NpYXRlZFByZXNlbnRhdGlvblZhcmlhbnRQYXRoXG5cdFx0PyBpbkNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oYXNzb2NpYXRlZFByZXNlbnRhdGlvblZhcmlhbnRQYXRoKVxuXHRcdDogbnVsbDtcblx0Y29uc3QgcmVzb2x2ZWRWaXN1YWxpemF0aW9uID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhcyBEYXRhVmlzdWFsaXphdGlvbkFubm90YXRpb25zO1xuXHRpbkNvbnZlcnRlckNvbnRleHQgPSByZXNvbHZlZFRhcmdldC5jb252ZXJ0ZXJDb250ZXh0O1xuXHRsZXQgdmlzdWFsaXphdGlvbkFubm90YXRpb25zOiBWaXN1YWxpemF0aW9uQW5kUGF0aFtdID0gW107XG5cdGxldCBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbjogUHJlc2VudGF0aW9uVmFyaWFudFR5cGU7XG5cdGxldCBwcmVzZW50YXRpb25QYXRoOiBzdHJpbmcgPSBcIlwiO1xuXHRsZXQgY2hhcnRWaXN1YWxpemF0aW9uLCB0YWJsZVZpc3VhbGl6YXRpb247XG5cdGNvbnN0IHNUZXJtID0gcmVzb2x2ZWRWaXN1YWxpemF0aW9uPy50ZXJtO1xuXHRpZiAoc1Rlcm0pIHtcblx0XHRzd2l0Y2ggKHNUZXJtKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5DaGFydDpcblx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gPSByZXNvbHZlZEFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50Py5hbm5vdGF0aW9uO1xuXHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0dmlzdWFsaXphdGlvbjogcmVzb2x2ZWRWaXN1YWxpemF0aW9uIGFzIEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyxcblx0XHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogdmlzdWFsaXphdGlvblBhdGgsXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogaW5Db252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24gPSByZXNvbHZlZFZpc3VhbGl6YXRpb247XG5cdFx0XHRcdHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucy5jb25jYXQoXG5cdFx0XHRcdFx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tUHJlc2VudGF0aW9uVmFyaWFudChyZXNvbHZlZFZpc3VhbGl6YXRpb24sIHZpc3VhbGl6YXRpb25QYXRoLCBpbkNvbnZlcnRlckNvbnRleHQpXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50OlxuXHRcdFx0XHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiA9IHJlc29sdmVkVmlzdWFsaXphdGlvbi5QcmVzZW50YXRpb25WYXJpYW50O1xuXHRcdFx0XHQvLyBQcmVzZW50YXRpb24gY2FuIGJlIGlubGluZSBvciBvdXRzaWRlIHRoZSBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHRcdHByZXNlbnRhdGlvblBhdGggPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbi5mdWxseVF1YWxpZmllZE5hbWU7XG5cdFx0XHRcdHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucy5jb25jYXQoXG5cdFx0XHRcdFx0Z2V0VmlzdWFsaXphdGlvbnNGcm9tUHJlc2VudGF0aW9uVmFyaWFudChwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiwgdmlzdWFsaXphdGlvblBhdGgsIGluQ29udmVydGVyQ29udGV4dClcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMuZm9yRWFjaCgodmlzdWFsaXphdGlvbkFubm90YXRpb24pID0+IHtcblx0XHRcdGNvbnN0IHsgdmlzdWFsaXphdGlvbiwgYW5ub3RhdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQgfSA9IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uO1xuXHRcdFx0c3dpdGNoICh2aXN1YWxpemF0aW9uLnRlcm0pIHtcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5DaGFydDpcblx0XHRcdFx0XHRjaGFydFZpc3VhbGl6YXRpb24gPSBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24oXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTpcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHR0YWJsZVZpc3VhbGl6YXRpb24gPSBUYWJsZS5jcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24oXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50LFxuXHRcdFx0XHRcdFx0dmlld0NvbmZpZ3VyYXRpb25cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHRhYmxlVmlzdWFsaXphdGlvbiA9IFRhYmxlLmNyZWF0ZURlZmF1bHRUYWJsZVZpc3VhbGl6YXRpb24oaW5Db252ZXJ0ZXJDb250ZXh0KTtcblx0XHRpbkNvbnZlcnRlckNvbnRleHQuZ2V0RGlhZ25vc3RpY3MoKS5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuTUlTU0lOR19MSU5FSVRFTSk7XG5cdH1cblx0Y29uc3QgYVZpc3VhbGl6YXRpb25zOiBhbnkgPSBbXTtcblx0bGV0IHNQYXRoID1cblx0XHRzVGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0PyBwcmVzZW50YXRpb25QYXRoXG5cdFx0XHQ6IHJlc29sdmVkVmlzdWFsaXphdGlvbiAmJiByZXNvbHZlZFZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRpZiAoc1BhdGggPT09IHVuZGVmaW5lZCkge1xuXHRcdHNQYXRoID0gXCIvXCI7XG5cdH1cblx0aWYgKGNoYXJ0VmlzdWFsaXphdGlvbikge1xuXHRcdGFWaXN1YWxpemF0aW9ucy5wdXNoKGNoYXJ0VmlzdWFsaXphdGlvbik7XG5cdH1cblx0aWYgKHRhYmxlVmlzdWFsaXphdGlvbikge1xuXHRcdGFWaXN1YWxpemF0aW9ucy5wdXNoKHRhYmxlVmlzdWFsaXphdGlvbik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR2aXN1YWxpemF0aW9uczogYVZpc3VhbGl6YXRpb25zLFxuXHRcdGFubm90YXRpb25QYXRoOiBpbkNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChzUGF0aClcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gVUkgQ29udHJvbCAoTGluZUl0ZW0vQ2hhcnQpIENvbnRleHQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBnZXRVaUNvbnRyb2xcbiAqIEBwYXJhbSBvUHJlc2VudGF0aW9uQ29udGV4dCBQcmVzZW50YXRpb24gY29udGV4dCBvYmplY3QgKFByZXNlbnRhdGlvbiB2YXJpYW50IG9yIFVJLkxpbmVJdGVtL0NoYXJ0KVxuICogQHBhcmFtIHNDb250cm9sUGF0aCBDb250cm9sIHBhdGhcbiAqIEByZXR1cm5zIFRoZSBDb250cm9sIChMaW5lSXRlbS9DaGFydCkgY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VWlDb250cm9sKG9QcmVzZW50YXRpb25Db250ZXh0OiBDb250ZXh0LCBzQ29udHJvbFBhdGg6IFN0cmluZykge1xuXHRjb25zdCBvUHJlc2VudGF0aW9uID0gb1ByZXNlbnRhdGlvbkNvbnRleHQuZ2V0T2JqZWN0KG9QcmVzZW50YXRpb25Db250ZXh0LmdldFBhdGgoKSkgYXMgYW55LFxuXHRcdG9QcmVzZW50YXRpb25WYXJpYW50UGF0aCA9IENvbW1vbkhlbHBlci5jcmVhdGVQcmVzZW50YXRpb25QYXRoQ29udGV4dChvUHJlc2VudGF0aW9uQ29udGV4dCksXG5cdFx0b01vZGVsID0gb1ByZXNlbnRhdGlvbkNvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRpZiAoQ29tbW9uSGVscGVyLl9pc1ByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uKG9QcmVzZW50YXRpb25WYXJpYW50UGF0aC5nZXRQYXRoKCkpKSB7XG5cdFx0Ly8gVW5jb21wbGV0ZSBQcmVzZW50YXRpb25WYXJpYW50IGNhbiBiZSBwYXNzZWQgdG8gbWFjcm8gdmlhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRjb25zdCBhVmlzdWFsaXphdGlvbnMgPSBvUHJlc2VudGF0aW9uLlZpc3VhbGl6YXRpb25zO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFWaXN1YWxpemF0aW9ucykpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpc3VhbGl6YXRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChhVmlzdWFsaXphdGlvbnNbaV0uJEFubm90YXRpb25QYXRoLmluZGV4T2Yoc0NvbnRyb2xQYXRoKSAhPT0gLTEpIHtcblx0XHRcdFx0XHRzQ29udHJvbFBhdGggPSBhVmlzdWFsaXphdGlvbnNbaV0uJEFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAob01vZGVsIGFzIGFueSkuZ2V0TWV0YUNvbnRleHQob1ByZXNlbnRhdGlvbkNvbnRleHQuZ2V0UGF0aCgpLnNwbGl0KFwiQFwiKVswXSArIHNDb250cm9sUGF0aCk7XG5cdH1cblx0cmV0dXJuIG9QcmVzZW50YXRpb25Db250ZXh0O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7OztFQXNDTyxJQUFNQSx3Q0FBd0MsR0FBRyxVQUN2REMsNkJBRHVELEVBRXZEQyxpQkFGdUQsRUFHdkRDLGdCQUh1RCxFQUk5QjtJQUN6QixJQUFNQyx3QkFBZ0QsR0FBRyxFQUF6RDtJQUVBLElBQU1DLE1BQU0sR0FDWEYsZ0JBQWdCLENBQUNHLGtCQUFqQixHQUFzQ0MseUJBQXRDLE1BQ0FKLGdCQUFnQixDQUFDSyxlQUFqQixPQUF1Q0MsWUFBWSxDQUFDQyxrQkFGckQ7SUFJQSxJQUFNQyxxQkFBcUIsR0FBR1QsaUJBQWlCLENBQUNVLEtBQWxCLENBQXdCLEdBQXhCLEVBQTZCLENBQTdCLENBQTlCOztJQUVBLElBQUksQ0FBQ0MsdUJBQXVCLENBQUNaLDZCQUFELEVBQWdDSSxNQUFoQyxDQUE1QixFQUFxRTtNQUNwRSxJQUFNUyxVQUFVLEdBQUdYLGdCQUFnQixDQUFDWSxhQUFqQixFQUFuQjtNQUNBLElBQU1DLHlCQUF5QixHQUFHQyxrQkFBa0IsQ0FBQ0gsVUFBRCxDQUFwRDs7TUFDQSxJQUFJRSx5QkFBSixFQUErQjtRQUM5Qlosd0JBQXdCLENBQUNjLElBQXpCLENBQThCO1VBQzdCQyxhQUFhLEVBQUVILHlCQURjO1VBRTdCSSxjQUFjLFlBQUtULHFCQUFMLFNBQTZCUixnQkFBZ0IsQ0FBQ2tCLHlCQUFqQixDQUMxQ0wseUJB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
|
|
245
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50IiwicHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24iLCJ2aXN1YWxpemF0aW9uUGF0aCIsImNvbnZlcnRlckNvbnRleHQiLCJpc01hY3JvT3JNdWx0aXBsZVZpZXciLCJ2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMiLCJiSXNBTFAiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJoYXNNdWx0aXBsZVZpc3VhbGl6YXRpb25zIiwiZ2V0VGVtcGxhdGVUeXBlIiwiVGVtcGxhdGVUeXBlIiwiQW5hbHl0aWNhbExpc3RQYWdlIiwiYmFzZVZpc3VhbGl6YXRpb25QYXRoIiwic3BsaXQiLCJpc1ByZXNlbnRhdGlvbkNvbXBsaWFudCIsImVudGl0eVR5cGUiLCJnZXRFbnRpdHlUeXBlIiwiZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbiIsImdldERlZmF1bHRMaW5lSXRlbSIsInB1c2giLCJ2aXN1YWxpemF0aW9uIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwidmlzdWFsaXphdGlvbnMiLCJWaXN1YWxpemF0aW9ucyIsInB1c2hGaXJzdFZpek9mVHlwZSIsImFsbG93ZWRUZXJtcyIsImZpcnN0Vml6IiwiZmluZCIsInZpeiIsImluZGV4T2YiLCIkdGFyZ2V0IiwidGVybSIsInZhbHVlIiwiZ2V0U2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCIsInJlc29sdmVkVGFyZ2V0IiwiZ2V0RW50aXR5VHlwZUFubm90YXRpb24iLCJzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50IiwiYW5ub3RhdGlvbiIsIkVycm9yIiwiYW5ub3RhdGlvbnMiLCJVSSIsIlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQiLCJpc1NlbGVjdGlvblByZXNlbnRhdGlvbkNvbXBsaWFudCIsInByZXNlbnRhdGlvblZhcmlhbnQiLCJQcmVzZW50YXRpb25WYXJpYW50IiwiYkhhc1RhYmxlIiwiYkhhc0NoYXJ0IiwiYVZpc3VhbGl6YXRpb25zIiwiZm9yRWFjaCIsIm9WaXN1YWxpemF0aW9uIiwiTGluZUl0ZW0iLCJnZXREZWZhdWx0Q2hhcnQiLCJDaGFydCIsImdldERlZmF1bHRQcmVzZW50YXRpb25WYXJpYW50IiwiZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQiLCJTZWxlY3Rpb25WYXJpYW50IiwiZ2V0U2VsZWN0aW9uVmFyaWFudCIsImdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoIiwic2VsZWN0aW9uVmFyaWFudCIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImlzQ29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbnQiLCJpbkNvbnZlcnRlckNvbnRleHQiLCJ2aWV3Q29uZmlndXJhdGlvbiIsImRvTm90Q2hlY2tBcHBseVN1cHBvcnRlZCIsImFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aCIsInVuZGVmaW5lZCIsInJlc29sdmVkQXNzb2NpYXRlZFByZXNlbnRhdGlvblZhcmlhbnQiLCJyZXNvbHZlZFZpc3VhbGl6YXRpb24iLCJwcmVzZW50YXRpb25QYXRoIiwiY2hhcnRWaXN1YWxpemF0aW9uIiwidGFibGVWaXN1YWxpemF0aW9uIiwic1Rlcm0iLCJjb25jYXQiLCJ2aXN1YWxpemF0aW9uQW5ub3RhdGlvbiIsImNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiIsIlRhYmxlIiwiY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uIiwiY3JlYXRlRGVmYXVsdFRhYmxlVmlzdWFsaXphdGlvbiIsImdldERpYWdub3N0aWNzIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiQW5ub3RhdGlvbiIsIklzc3VlU2V2ZXJpdHkiLCJNZWRpdW0iLCJJc3N1ZVR5cGUiLCJNSVNTSU5HX0xJTkVJVEVNIiwic1BhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZ2V0VWlDb250cm9sIiwib1ByZXNlbnRhdGlvbkNvbnRleHQiLCJzQ29udHJvbFBhdGgiLCJvUHJlc2VudGF0aW9uIiwiZ2V0T2JqZWN0IiwiZ2V0UGF0aCIsIm9QcmVzZW50YXRpb25WYXJpYW50UGF0aCIsIkNvbW1vbkhlbHBlciIsImNyZWF0ZVByZXNlbnRhdGlvblBhdGhDb250ZXh0Iiwib01vZGVsIiwiZ2V0TW9kZWwiLCJfaXNQcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImkiLCJsZW5ndGgiLCIkQW5ub3RhdGlvblBhdGgiLCJnZXRNZXRhQ29udGV4dCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0YVZpc3VhbGl6YXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENoYXJ0LFxuXHRMaW5lSXRlbSxcblx0UHJlc2VudGF0aW9uVmFyaWFudCxcblx0UHJlc2VudGF0aW9uVmFyaWFudFR5cGUsXG5cdFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQsXG5cdFNlbGVjdGlvblZhcmlhbnRcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5LCBJc3N1ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBWaWV3UGF0aENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgQ2hhcnRWaXN1YWxpemF0aW9uIH0gZnJvbSBcIi4vQ2hhcnRcIjtcbmltcG9ydCB7IGNyZWF0ZUNoYXJ0VmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL0NoYXJ0XCI7XG5pbXBvcnQgdHlwZSB7IFRhYmxlVmlzdWFsaXphdGlvbiB9IGZyb20gXCIuL1RhYmxlXCI7XG5pbXBvcnQgVGFibGUgZnJvbSBcIi4vVGFibGVcIjtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IExpbmVJdGVtIHwgQ2hhcnQgfCBQcmVzZW50YXRpb25WYXJpYW50IHwgU2VsZWN0aW9uVmFyaWFudCB8IFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cbmV4cG9ydCB0eXBlIEFjdHVhbFZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucyA9IExpbmVJdGVtIHwgQ2hhcnQ7XG5cbmV4cG9ydCB0eXBlIFZpc3VhbGl6YXRpb25BbmRQYXRoID0ge1xuXHR2aXN1YWxpemF0aW9uOiBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnM7XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHNlbGVjdGlvblZhcmlhbnRQYXRoPzogc3RyaW5nO1xuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uID0ge1xuXHR2aXN1YWxpemF0aW9uczogKFRhYmxlVmlzdWFsaXphdGlvbiB8IENoYXJ0VmlzdWFsaXphdGlvbilbXTtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50ID0gZnVuY3Rpb24gKFxuXHRwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbjogUHJlc2VudGF0aW9uVmFyaWFudFR5cGUsXG5cdHZpc3VhbGl6YXRpb25QYXRoOiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGlzTWFjcm9Pck11bHRpcGxlVmlldz86IGJvb2xlYW5cbik6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10ge1xuXHRjb25zdCB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnM6IFZpc3VhbGl6YXRpb25BbmRQYXRoW10gPSBbXTtcblxuXHRjb25zdCBiSXNBTFAgPVxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucygpIHx8XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZTtcblxuXHRjb25zdCBiYXNlVmlzdWFsaXphdGlvblBhdGggPSB2aXN1YWxpemF0aW9uUGF0aC5zcGxpdChcIkBcIilbMF07XG5cblx0aWYgKGlzTWFjcm9Pck11bHRpcGxlVmlldyAmJiAhaXNQcmVzZW50YXRpb25Db21wbGlhbnQocHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24sIGJJc0FMUCkpIHtcblx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0Y29uc3QgZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbiA9IGdldERlZmF1bHRMaW5lSXRlbShlbnRpdHlUeXBlKTtcblx0XHRpZiAoZGVmYXVsdExpbmVJdGVtQW5ub3RhdGlvbikge1xuXHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHR2aXN1YWxpemF0aW9uOiBkZWZhdWx0TGluZUl0ZW1Bbm5vdGF0aW9uLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7YmFzZVZpc3VhbGl6YXRpb25QYXRofSR7Y29udmVydGVyQ29udGV4dC5nZXRSZWxhdGl2ZUFubm90YXRpb25QYXRoKFxuXHRcdFx0XHRcdGRlZmF1bHRMaW5lSXRlbUFubm90YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lLFxuXHRcdFx0XHRcdGVudGl0eVR5cGVcblx0XHRcdFx0KX1gLFxuXHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0Y29uc3QgdmlzdWFsaXphdGlvbnMgPSBwcmVzZW50YXRpb25WYXJpYW50QW5ub3RhdGlvbi5WaXN1YWxpemF0aW9ucztcblxuXHRjb25zdCBwdXNoRmlyc3RWaXpPZlR5cGUgPSBmdW5jdGlvbiAoYWxsb3dlZFRlcm1zOiBzdHJpbmdbXSkge1xuXHRcdGNvbnN0IGZpcnN0Vml6ID0gdmlzdWFsaXphdGlvbnM/LmZpbmQoKHZpeikgPT4ge1xuXHRcdFx0cmV0dXJuIGFsbG93ZWRUZXJtcy5pbmRleE9mKHZpei4kdGFyZ2V0Py50ZXJtKSA+PSAwO1xuXHRcdH0pO1xuXG5cdFx0aWYgKGZpcnN0Vml6KSB7XG5cdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMucHVzaCh7XG5cdFx0XHRcdHZpc3VhbGl6YXRpb246IGZpcnN0Vml6LiR0YXJnZXQgYXMgQWN0dWFsVmlzdWFsaXphdGlvbkFubm90YXRpb25zLFxuXHRcdFx0XHRhbm5vdGF0aW9uUGF0aDogYCR7YmFzZVZpc3VhbGl6YXRpb25QYXRofSR7Zmlyc3RWaXoudmFsdWV9YCxcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dDogY29udmVydGVyQ29udGV4dFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xuXG5cdGlmIChiSXNBTFApIHtcblx0XHQvLyBJbiBjYXNlIG9mIEFMUCwgd2UgdXNlIHRoZSBmaXJzdCBMaW5lSXRlbSBhbmQgdGhlIGZpcnN0IENoYXJ0XG5cdFx0cHVzaEZpcnN0Vml6T2ZUeXBlKFtVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbV0pO1xuXHRcdHB1c2hGaXJzdFZpek9mVHlwZShbVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnRdKTtcblx0fSBlbHNlIHtcblx0XHQvLyBPdGhlcndpc2UsIHdlIHVzZSB0aGUgZmlyc3Qgdml6IG9ubHkgKENoYXJ0IG9yIExpbmVJdGVtKVxuXHRcdHB1c2hGaXJzdFZpek9mVHlwZShbVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0sIFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0XSk7XG5cdH1cblx0cmV0dXJuIHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucztcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KFxuXHRlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBhbnkge1xuXHRpZiAoYW5ub3RhdGlvblBhdGgpIHtcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oYW5ub3RhdGlvblBhdGgpO1xuXHRcdGNvbnN0IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0aWYgKHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdGlmIChzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQpIHtcblx0XHRcdFx0cmV0dXJuIHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihcIkFubm90YXRpb24gUGF0aCBmb3IgdGhlIFNQViBtZW50aW9uZWQgaW4gdGhlIG1hbmlmZXN0IGlzIG5vdCBmb3VuZCwgUGxlYXNlIGFkZCB0aGUgU1BWIGluIHRoZSBhbm5vdGF0aW9uXCIpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VsZWN0aW9uUHJlc2VudGF0aW9uQ29tcGxpYW50KFxuXHRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50OiBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LFxuXHRiSXNBTFA6IGJvb2xlYW5cbik6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuXHRjb25zdCBwcmVzZW50YXRpb25WYXJpYW50ID0gU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudCAmJiBTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50LlByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdGlmIChwcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0cmV0dXJuIGlzUHJlc2VudGF0aW9uQ29tcGxpYW50KHByZXNlbnRhdGlvblZhcmlhbnQsIGJJc0FMUCk7XG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiUHJlc2VudGF0aW9uIFZhcmlhbnQgaXMgbm90IHByZXNlbnQgaW4gdGhlIFNQViBhbm5vdGF0aW9uXCIpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1ByZXNlbnRhdGlvbkNvbXBsaWFudChwcmVzZW50YXRpb25WYXJpYW50OiBQcmVzZW50YXRpb25WYXJpYW50VHlwZSwgYklzQUxQID0gZmFsc2UpOiBib29sZWFuIHtcblx0bGV0IGJIYXNUYWJsZSA9IGZhbHNlLFxuXHRcdGJIYXNDaGFydCA9IGZhbHNlO1xuXHRpZiAoYklzQUxQKSB7XG5cdFx0aWYgKHByZXNlbnRhdGlvblZhcmlhbnQ/LlZpc3VhbGl6YXRpb25zKSB7XG5cdFx0XHRjb25zdCBhVmlzdWFsaXphdGlvbnMgPSBwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zO1xuXHRcdFx0YVZpc3VhbGl6YXRpb25zLmZvckVhY2goKG9WaXN1YWxpemF0aW9uKSA9PiB7XG5cdFx0XHRcdGlmIChvVmlzdWFsaXphdGlvbi4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbSkge1xuXHRcdFx0XHRcdGJIYXNUYWJsZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9WaXN1YWxpemF0aW9uLiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0KSB7XG5cdFx0XHRcdFx0Ykhhc0NoYXJ0ID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHJldHVybiBiSGFzQ2hhcnQgJiYgYkhhc1RhYmxlO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiAoXG5cdFx0XHRwcmVzZW50YXRpb25WYXJpYW50Py5WaXN1YWxpemF0aW9ucyAmJlxuXHRcdFx0ISFwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zLmZpbmQoKHZpc3VhbGl6YXRpb24pID0+IHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHR2aXN1YWxpemF0aW9uLiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtIHx8IHZpc3VhbGl6YXRpb24uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnRcblx0XHRcdFx0KTtcblx0XHRcdH0pXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdExpbmVJdGVtKGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBlbnRpdHlUeXBlLmFubm90YXRpb25zLlVJPy5MaW5lSXRlbTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q2hhcnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IENoYXJ0IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnMuVUk/LkNoYXJ0O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRQcmVzZW50YXRpb25WYXJpYW50KGVudGl0eVR5cGU6IEVudGl0eVR5cGUpOiBQcmVzZW50YXRpb25WYXJpYW50IHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5QcmVzZW50YXRpb25WYXJpYW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdFNlbGVjdGlvblZhcmlhbnQoZW50aXR5VHlwZTogRW50aXR5VHlwZSk6IFNlbGVjdGlvblZhcmlhbnQgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4gZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LlNlbGVjdGlvblZhcmlhbnQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWxlY3Rpb25WYXJpYW50KGVudGl0eVR5cGU6IEVudGl0eVR5cGUsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBTZWxlY3Rpb25WYXJpYW50IHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgYW5ub3RhdGlvblBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmdldERlZmF1bHRUZW1wbGF0ZUFubm90YXRpb25QYXRoKCk7XG5cdGNvbnN0IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQgPSBnZXRTZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KGVudGl0eVR5cGUsIGFubm90YXRpb25QYXRoLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0bGV0IHNlbGVjdGlvblZhcmlhbnQ7XG5cdGlmIChzZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50KSB7XG5cdFx0c2VsZWN0aW9uVmFyaWFudCA9IHNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQuU2VsZWN0aW9uVmFyaWFudDtcblx0XHRpZiAoc2VsZWN0aW9uVmFyaWFudCkge1xuXHRcdFx0cmV0dXJuIHNlbGVjdGlvblZhcmlhbnQ7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHNlbGVjdGlvblZhcmlhbnQgPSBnZXREZWZhdWx0U2VsZWN0aW9uVmFyaWFudChlbnRpdHlUeXBlKTtcblx0XHRyZXR1cm4gc2VsZWN0aW9uVmFyaWFudDtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uKFxuXHR2aXN1YWxpemF0aW9uUGF0aDogc3RyaW5nLFxuXHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50OiBib29sZWFuLFxuXHRpbkNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHZpZXdDb25maWd1cmF0aW9uPzogVmlld1BhdGhDb25maWd1cmF0aW9uLFxuXHRkb05vdENoZWNrQXBwbHlTdXBwb3J0ZWQ/OiBib29sZWFuLFxuXHRhc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudFBhdGg/OiBzdHJpbmcsXG5cdGlzTWFjcm9Pck11bHRpcGxlVmlldz86IGJvb2xlYW5cbik6IERhdGFWaXN1YWxpemF0aW9uRGVmaW5pdGlvbiB7XG5cdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID1cblx0XHR2aXN1YWxpemF0aW9uUGF0aCAhPT0gXCJcIlxuXHRcdFx0PyBpbkNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24odmlzdWFsaXphdGlvblBhdGgpXG5cdFx0XHQ6IHsgYW5ub3RhdGlvbjogdW5kZWZpbmVkLCBjb252ZXJ0ZXJDb250ZXh0OiBpbkNvbnZlcnRlckNvbnRleHQgfTtcblx0Y29uc3QgcmVzb2x2ZWRBc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudCA9IGFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aFxuXHRcdD8gaW5Db252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGVBbm5vdGF0aW9uKGFzc29jaWF0ZWRQcmVzZW50YXRpb25WYXJpYW50UGF0aClcblx0XHQ6IG51bGw7XG5cdGNvbnN0IHJlc29sdmVkVmlzdWFsaXphdGlvbiA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb24gYXMgRGF0YVZpc3VhbGl6YXRpb25Bbm5vdGF0aW9ucztcblx0aW5Db252ZXJ0ZXJDb250ZXh0ID0gcmVzb2x2ZWRUYXJnZXQuY29udmVydGVyQ29udGV4dDtcblx0bGV0IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uczogVmlzdWFsaXphdGlvbkFuZFBhdGhbXSA9IFtdO1xuXHRsZXQgcHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb246IFByZXNlbnRhdGlvblZhcmlhbnRUeXBlO1xuXHRsZXQgcHJlc2VudGF0aW9uUGF0aDogc3RyaW5nID0gXCJcIjtcblx0bGV0IGNoYXJ0VmlzdWFsaXphdGlvbiwgdGFibGVWaXN1YWxpemF0aW9uO1xuXHRjb25zdCBzVGVybSA9IHJlc29sdmVkVmlzdWFsaXphdGlvbj8udGVybTtcblx0aWYgKHNUZXJtKSB7XG5cdFx0c3dpdGNoIChzVGVybSkge1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTpcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQ6XG5cdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gcmVzb2x2ZWRBc3NvY2lhdGVkUHJlc2VudGF0aW9uVmFyaWFudD8uYW5ub3RhdGlvbjtcblx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zLnB1c2goe1xuXHRcdFx0XHRcdHZpc3VhbGl6YXRpb246IHJlc29sdmVkVmlzdWFsaXphdGlvbiBhcyBBY3R1YWxWaXN1YWxpemF0aW9uQW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IHZpc3VhbGl6YXRpb25QYXRoLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IGluQ29udmVydGVyQ29udGV4dFxuXHRcdFx0XHR9KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQ6XG5cdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gcmVzb2x2ZWRWaXN1YWxpemF0aW9uO1xuXHRcdFx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMgPSB2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMuY29uY2F0KFxuXHRcdFx0XHRcdGdldFZpc3VhbGl6YXRpb25zRnJvbVByZXNlbnRhdGlvblZhcmlhbnQoXG5cdFx0XHRcdFx0XHRyZXNvbHZlZFZpc3VhbGl6YXRpb24sXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uUGF0aCxcblx0XHRcdFx0XHRcdGluQ29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlld1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ6XG5cdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uID0gcmVzb2x2ZWRWaXN1YWxpemF0aW9uLlByZXNlbnRhdGlvblZhcmlhbnQ7XG5cdFx0XHRcdC8vIFByZXNlbnRhdGlvbiBjYW4gYmUgaW5saW5lIG9yIG91dHNpZGUgdGhlIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdFx0cHJlc2VudGF0aW9uUGF0aCA9IHByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZTtcblx0XHRcdFx0dmlzdWFsaXphdGlvbkFubm90YXRpb25zID0gdmlzdWFsaXphdGlvbkFubm90YXRpb25zLmNvbmNhdChcblx0XHRcdFx0XHRnZXRWaXN1YWxpemF0aW9uc0Zyb21QcmVzZW50YXRpb25WYXJpYW50KFxuXHRcdFx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24sXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uUGF0aCxcblx0XHRcdFx0XHRcdGluQ29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdGlzTWFjcm9Pck11bHRpcGxlVmlld1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHR2aXN1YWxpemF0aW9uQW5ub3RhdGlvbnMuZm9yRWFjaCgodmlzdWFsaXphdGlvbkFubm90YXRpb24pID0+IHtcblx0XHRcdGNvbnN0IHsgdmlzdWFsaXphdGlvbiwgYW5ub3RhdGlvblBhdGgsIGNvbnZlcnRlckNvbnRleHQgfSA9IHZpc3VhbGl6YXRpb25Bbm5vdGF0aW9uO1xuXHRcdFx0c3dpdGNoICh2aXN1YWxpemF0aW9uLnRlcm0pIHtcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5DaGFydDpcblx0XHRcdFx0XHRjaGFydFZpc3VhbGl6YXRpb24gPSBjcmVhdGVDaGFydFZpc3VhbGl6YXRpb24oXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0ZG9Ob3RDaGVja0FwcGx5U3VwcG9ydGVkXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTpcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHR0YWJsZVZpc3VhbGl6YXRpb24gPSBUYWJsZS5jcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24oXG5cdFx0XHRcdFx0XHR2aXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0YW5ub3RhdGlvblBhdGgsXG5cdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0cHJlc2VudGF0aW9uVmFyaWFudEFubm90YXRpb24sXG5cdFx0XHRcdFx0XHRpc0NvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW50LFxuXHRcdFx0XHRcdFx0dmlld0NvbmZpZ3VyYXRpb25cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHRhYmxlVmlzdWFsaXphdGlvbiA9IFRhYmxlLmNyZWF0ZURlZmF1bHRUYWJsZVZpc3VhbGl6YXRpb24oaW5Db252ZXJ0ZXJDb250ZXh0LCAhaXNNYWNyb09yTXVsdGlwbGVWaWV3KTtcblx0XHRpbkNvbnZlcnRlckNvbnRleHQuZ2V0RGlhZ25vc3RpY3MoKS5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTWVkaXVtLCBJc3N1ZVR5cGUuTUlTU0lOR19MSU5FSVRFTSk7XG5cdH1cblx0Y29uc3QgYVZpc3VhbGl6YXRpb25zOiBhbnkgPSBbXTtcblx0bGV0IHNQYXRoID1cblx0XHRzVGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0PyBwcmVzZW50YXRpb25QYXRoXG5cdFx0XHQ6IHJlc29sdmVkVmlzdWFsaXphdGlvbiAmJiByZXNvbHZlZFZpc3VhbGl6YXRpb24uZnVsbHlRdWFsaWZpZWROYW1lO1xuXHRpZiAoc1BhdGggPT09IHVuZGVmaW5lZCkge1xuXHRcdHNQYXRoID0gXCIvXCI7XG5cdH1cblx0aWYgKGNoYXJ0VmlzdWFsaXphdGlvbikge1xuXHRcdGFWaXN1YWxpemF0aW9ucy5wdXNoKGNoYXJ0VmlzdWFsaXphdGlvbik7XG5cdH1cblx0aWYgKHRhYmxlVmlzdWFsaXphdGlvbikge1xuXHRcdGFWaXN1YWxpemF0aW9ucy5wdXNoKHRhYmxlVmlzdWFsaXphdGlvbik7XG5cdH1cblx0cmV0dXJuIHtcblx0XHR2aXN1YWxpemF0aW9uczogYVZpc3VhbGl6YXRpb25zLFxuXHRcdGFubm90YXRpb25QYXRoOiBpbkNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChzUGF0aClcblx0fTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gVUkgQ29udHJvbCAoTGluZUl0ZW0vQ2hhcnQpIENvbnRleHQuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBnZXRVaUNvbnRyb2xcbiAqIEBwYXJhbSBvUHJlc2VudGF0aW9uQ29udGV4dCBQcmVzZW50YXRpb24gY29udGV4dCBvYmplY3QgKFByZXNlbnRhdGlvbiB2YXJpYW50IG9yIFVJLkxpbmVJdGVtL0NoYXJ0KVxuICogQHBhcmFtIHNDb250cm9sUGF0aCBDb250cm9sIHBhdGhcbiAqIEByZXR1cm5zIFRoZSBDb250cm9sIChMaW5lSXRlbS9DaGFydCkgY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VWlDb250cm9sKG9QcmVzZW50YXRpb25Db250ZXh0OiBDb250ZXh0LCBzQ29udHJvbFBhdGg6IFN0cmluZykge1xuXHRjb25zdCBvUHJlc2VudGF0aW9uID0gb1ByZXNlbnRhdGlvbkNvbnRleHQuZ2V0T2JqZWN0KG9QcmVzZW50YXRpb25Db250ZXh0LmdldFBhdGgoKSkgYXMgYW55LFxuXHRcdG9QcmVzZW50YXRpb25WYXJpYW50UGF0aCA9IENvbW1vbkhlbHBlci5jcmVhdGVQcmVzZW50YXRpb25QYXRoQ29udGV4dChvUHJlc2VudGF0aW9uQ29udGV4dCksXG5cdFx0b01vZGVsID0gb1ByZXNlbnRhdGlvbkNvbnRleHQuZ2V0TW9kZWwoKSBhcyBPRGF0YU1vZGVsO1xuXHRpZiAoQ29tbW9uSGVscGVyLl9pc1ByZXNlbnRhdGlvblZhcmlhbnRBbm5vdGF0aW9uKG9QcmVzZW50YXRpb25WYXJpYW50UGF0aC5nZXRQYXRoKCkpKSB7XG5cdFx0Ly8gVW5jb21wbGV0ZSBQcmVzZW50YXRpb25WYXJpYW50IGNhbiBiZSBwYXNzZWQgdG8gbWFjcm8gdmlhIFNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRjb25zdCBhVmlzdWFsaXphdGlvbnMgPSBvUHJlc2VudGF0aW9uLlZpc3VhbGl6YXRpb25zO1xuXHRcdGlmIChBcnJheS5pc0FycmF5KGFWaXN1YWxpemF0aW9ucykpIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYVZpc3VhbGl6YXRpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChhVmlzdWFsaXphdGlvbnNbaV0uJEFubm90YXRpb25QYXRoLmluZGV4T2Yoc0NvbnRyb2xQYXRoKSAhPT0gLTEpIHtcblx0XHRcdFx0XHRzQ29udHJvbFBhdGggPSBhVmlzdWFsaXphdGlvbnNbaV0uJEFubm90YXRpb25QYXRoO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiAob01vZGVsIGFzIGFueSkuZ2V0TWV0YUNvbnRleHQob1ByZXNlbnRhdGlvbkNvbnRleHQuZ2V0UGF0aCgpLnNwbGl0KFwiQFwiKVswXSArIHNDb250cm9sUGF0aCk7XG5cdH1cblx0cmV0dXJuIG9QcmVzZW50YXRpb25Db250ZXh0O1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7O0VBc0NPLElBQU1BLHdDQUF3QyxHQUFHLFVBQ3ZEQyw2QkFBc0QsRUFDdERDLGlCQUF5QixFQUN6QkMsZ0JBQWtDLEVBQ2xDQyxxQkFBK0IsRUFDTjtJQUN6QixJQUFNQyx3QkFBZ0QsR0FBRyxFQUFFO0lBRTNELElBQU1DLE1BQU0sR0FDWEgsZ0JBQWdCLENBQUNJLGtCQUFrQixFQUFFLENBQUNDLHlCQUF5QixFQUFFLElBQ2pFTCxnQkFBZ0IsQ0FBQ00sZUFBZSxFQUFFLEtBQUtDLFlBQVksQ0FBQ0Msa0JBQWtCO0lBRXZFLElBQU1DLHFCQUFxQixHQUFHVixpQkFBaUIsQ0FBQ1csS0FBSyxDQUFDLEdB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
|
|
@@ -39,7 +39,8 @@ export type DataVisualizationDefinition = {
|
|
|
39
39
|
export const getVisualizationsFromPresentationVariant = function (
|
|
40
40
|
presentationVariantAnnotation: PresentationVariantType,
|
|
41
41
|
visualizationPath: string,
|
|
42
|
-
converterContext: ConverterContext
|
|
42
|
+
converterContext: ConverterContext,
|
|
43
|
+
isMacroOrMultipleView?: boolean
|
|
43
44
|
): VisualizationAndPath[] {
|
|
44
45
|
const visualizationAnnotations: VisualizationAndPath[] = [];
|
|
45
46
|
|
|
@@ -49,7 +50,7 @@ export const getVisualizationsFromPresentationVariant = function (
|
|
|
49
50
|
|
|
50
51
|
const baseVisualizationPath = visualizationPath.split("@")[0];
|
|
51
52
|
|
|
52
|
-
if (!isPresentationCompliant(presentationVariantAnnotation, bIsALP)) {
|
|
53
|
+
if (isMacroOrMultipleView && !isPresentationCompliant(presentationVariantAnnotation, bIsALP)) {
|
|
53
54
|
const entityType = converterContext.getEntityType();
|
|
54
55
|
const defaultLineItemAnnotation = getDefaultLineItem(entityType);
|
|
55
56
|
if (defaultLineItemAnnotation) {
|
|
@@ -62,31 +63,30 @@ export const getVisualizationsFromPresentationVariant = function (
|
|
|
62
63
|
converterContext: converterContext
|
|
63
64
|
});
|
|
64
65
|
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const pushFirstVizOfType = function (allowedTerms: string[]) {
|
|
69
|
-
const firstViz = visualizations.find((viz) => {
|
|
70
|
-
return allowedTerms.indexOf(viz.$target.term) >= 0;
|
|
71
|
-
});
|
|
66
|
+
}
|
|
67
|
+
const visualizations = presentationVariantAnnotation.Visualizations;
|
|
72
68
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
converterContext: converterContext
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
};
|
|
69
|
+
const pushFirstVizOfType = function (allowedTerms: string[]) {
|
|
70
|
+
const firstViz = visualizations?.find((viz) => {
|
|
71
|
+
return allowedTerms.indexOf(viz.$target?.term) >= 0;
|
|
72
|
+
});
|
|
81
73
|
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
pushFirstVizOfType([UIAnnotationTerms.LineItem, UIAnnotationTerms.Chart]);
|
|
74
|
+
if (firstViz) {
|
|
75
|
+
visualizationAnnotations.push({
|
|
76
|
+
visualization: firstViz.$target as ActualVisualizationAnnotations,
|
|
77
|
+
annotationPath: `${baseVisualizationPath}${firstViz.value}`,
|
|
78
|
+
converterContext: converterContext
|
|
79
|
+
});
|
|
89
80
|
}
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
if (bIsALP) {
|
|
84
|
+
// In case of ALP, we use the first LineItem and the first Chart
|
|
85
|
+
pushFirstVizOfType([UIAnnotationTerms.LineItem]);
|
|
86
|
+
pushFirstVizOfType([UIAnnotationTerms.Chart]);
|
|
87
|
+
} else {
|
|
88
|
+
// Otherwise, we use the first viz only (Chart or LineItem)
|
|
89
|
+
pushFirstVizOfType([UIAnnotationTerms.LineItem, UIAnnotationTerms.Chart]);
|
|
90
90
|
}
|
|
91
91
|
return visualizationAnnotations;
|
|
92
92
|
};
|
|
@@ -130,10 +130,10 @@ export function isPresentationCompliant(presentationVariant: PresentationVariant
|
|
|
130
130
|
if (presentationVariant?.Visualizations) {
|
|
131
131
|
const aVisualizations = presentationVariant.Visualizations;
|
|
132
132
|
aVisualizations.forEach((oVisualization) => {
|
|
133
|
-
if (oVisualization.$target
|
|
133
|
+
if (oVisualization.$target?.term === UIAnnotationTerms.LineItem) {
|
|
134
134
|
bHasTable = true;
|
|
135
135
|
}
|
|
136
|
-
if (oVisualization.$target
|
|
136
|
+
if (oVisualization.$target?.term === UIAnnotationTerms.Chart) {
|
|
137
137
|
bHasChart = true;
|
|
138
138
|
}
|
|
139
139
|
});
|
|
@@ -143,7 +143,9 @@ export function isPresentationCompliant(presentationVariant: PresentationVariant
|
|
|
143
143
|
return (
|
|
144
144
|
presentationVariant?.Visualizations &&
|
|
145
145
|
!!presentationVariant.Visualizations.find((visualization) => {
|
|
146
|
-
return
|
|
146
|
+
return (
|
|
147
|
+
visualization.$target?.term === UIAnnotationTerms.LineItem || visualization.$target?.term === UIAnnotationTerms.Chart
|
|
148
|
+
);
|
|
147
149
|
})
|
|
148
150
|
);
|
|
149
151
|
}
|
|
@@ -184,7 +186,8 @@ export function getDataVisualizationConfiguration(
|
|
|
184
186
|
inConverterContext: ConverterContext,
|
|
185
187
|
viewConfiguration?: ViewPathConfiguration,
|
|
186
188
|
doNotCheckApplySupported?: boolean,
|
|
187
|
-
associatedPresentationVariantPath?: string
|
|
189
|
+
associatedPresentationVariantPath?: string,
|
|
190
|
+
isMacroOrMultipleView?: boolean
|
|
188
191
|
): DataVisualizationDefinition {
|
|
189
192
|
const resolvedTarget =
|
|
190
193
|
visualizationPath !== ""
|
|
@@ -214,7 +217,12 @@ export function getDataVisualizationConfiguration(
|
|
|
214
217
|
case UIAnnotationTerms.PresentationVariant:
|
|
215
218
|
presentationVariantAnnotation = resolvedVisualization;
|
|
216
219
|
visualizationAnnotations = visualizationAnnotations.concat(
|
|
217
|
-
getVisualizationsFromPresentationVariant(
|
|
220
|
+
getVisualizationsFromPresentationVariant(
|
|
221
|
+
resolvedVisualization,
|
|
222
|
+
visualizationPath,
|
|
223
|
+
inConverterContext,
|
|
224
|
+
isMacroOrMultipleView
|
|
225
|
+
)
|
|
218
226
|
);
|
|
219
227
|
break;
|
|
220
228
|
case UIAnnotationTerms.SelectionPresentationVariant:
|
|
@@ -222,7 +230,12 @@ export function getDataVisualizationConfiguration(
|
|
|
222
230
|
// Presentation can be inline or outside the SelectionPresentationVariant
|
|
223
231
|
presentationPath = presentationVariantAnnotation.fullyQualifiedName;
|
|
224
232
|
visualizationAnnotations = visualizationAnnotations.concat(
|
|
225
|
-
getVisualizationsFromPresentationVariant(
|
|
233
|
+
getVisualizationsFromPresentationVariant(
|
|
234
|
+
presentationVariantAnnotation,
|
|
235
|
+
visualizationPath,
|
|
236
|
+
inConverterContext,
|
|
237
|
+
isMacroOrMultipleView
|
|
238
|
+
)
|
|
226
239
|
);
|
|
227
240
|
|
|
228
241
|
break;
|
|
@@ -254,7 +267,7 @@ export function getDataVisualizationConfiguration(
|
|
|
254
267
|
}
|
|
255
268
|
});
|
|
256
269
|
} else {
|
|
257
|
-
tableVisualization = Table.createDefaultTableVisualization(inConverterContext);
|
|
270
|
+
tableVisualization = Table.createDefaultTableVisualization(inConverterContext, !isMacroOrMultipleView);
|
|
258
271
|
inConverterContext.getDiagnostics().addIssue(IssueCategory.Annotation, IssueSeverity.Medium, IssueType.MISSING_LINEITEM);
|
|
259
272
|
}
|
|
260
273
|
const aVisualizations: any = [];
|