@sapui5/sap.fe.core 1.100.0 → 1.102.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 +4 -4
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AppComponent.js +23 -30
- package/src/sap/fe/core/AppComponent.ts +35 -40
- package/src/sap/fe/core/AppStateHandler.js +8 -8
- package/src/sap/fe/core/AppStateHandler.ts +11 -11
- package/src/sap/fe/core/BaseController.js +9 -9
- package/src/sap/fe/core/BaseController.ts +3 -4
- package/src/sap/fe/core/CommonUtils.js +122 -101
- package/src/sap/fe/core/CommonUtils.ts +239 -193
- package/src/sap/fe/core/ExtensionAPI.js +12 -13
- package/src/sap/fe/core/ExtensionAPI.ts +21 -31
- package/src/sap/fe/core/PageController.js +19 -13
- package/src/sap/fe/core/PageController.ts +40 -34
- package/src/sap/fe/core/TemplateComponent.js +198 -123
- package/src/sap/fe/core/TemplateComponent.ts +109 -121
- package/src/sap/fe/core/TemplateModel.js +7 -9
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +60 -0
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +37 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +165 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +178 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +935 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +837 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +436 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +431 -0
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +660 -288
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +513 -331
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +11 -11
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +6 -7
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +43 -25
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +132 -103
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +16 -16
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +64 -55
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +166 -99
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +187 -149
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +14 -14
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +12 -11
- package/src/sap/fe/core/controllerextensions/MassEdit.js +13 -12
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +22 -22
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +14 -26
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +20 -30
- package/src/sap/fe/core/controllerextensions/PageReady.js +25 -23
- package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -47
- package/src/sap/fe/core/controllerextensions/Paginator.js +24 -15
- package/src/sap/fe/core/controllerextensions/Paginator.ts +35 -20
- package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -10
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +11 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +34 -16
- package/src/sap/fe/core/controllerextensions/Share.ts +50 -32
- package/src/sap/fe/core/controllerextensions/SideEffects.js +15 -15
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +64 -65
- package/src/sap/fe/core/controllerextensions/ViewState.js +27 -31
- package/src/sap/fe/core/controllerextensions/ViewState.ts +103 -102
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +98 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +90 -132
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +18 -8
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +35 -33
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1584 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +190 -159
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +780 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +329 -76
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1149 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +169 -97
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +190 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/sticky.ts +76 -12
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +592 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +83 -60
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +940 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +52 -36
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/Any.js +28 -0
- package/src/sap/fe/core/controls/Any.ts +30 -0
- package/src/sap/fe/core/controls/CommandExecution.js +50 -16
- package/src/sap/fe/core/controls/CommandExecution.ts +31 -22
- package/src/sap/fe/core/controls/ConditionalWrapper.js +136 -65
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +49 -58
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +371 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +282 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +74 -36
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +23 -32
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +52 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +127 -67
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +127 -67
- package/src/sap/fe/core/controls/FieldWrapper.js +171 -87
- package/src/sap/fe/core/controls/FieldWrapper.ts +69 -80
- package/src/sap/fe/core/controls/FileWrapper.js +360 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +202 -0
- package/src/sap/fe/core/controls/FilterBar.js +154 -119
- package/src/sap/fe/core/controls/FilterBar.ts +128 -123
- package/src/sap/fe/core/controls/FormElementWrapper.js +102 -37
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -35
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +45 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +111 -89
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +86 -82
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +242 -193
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +211 -204
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +152 -116
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +105 -105
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +23 -28
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +41 -81
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +550 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +604 -35
- package/src/sap/fe/core/converters/ManifestSettings.js +3 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +9 -2
- package/src/sap/fe/core/converters/MetaModelConverter.js +11 -40
- package/src/sap/fe/core/converters/MetaModelConverter.ts +56 -84
- package/src/sap/fe/core/converters/annotations/DataField.js +20 -5
- package/src/sap/fe/core/converters/annotations/DataField.ts +27 -6
- package/src/sap/fe/core/converters/controls/Common/Action.js +14 -21
- package/src/sap/fe/core/converters/controls/Common/Action.ts +23 -28
- package/src/sap/fe/core/converters/controls/Common/Chart.js +17 -10
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -14
- package/src/sap/fe/core/converters/controls/Common/Form.js +16 -18
- package/src/sap/fe/core/converters/controls/Common/Form.ts +20 -20
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -3
- package/src/sap/fe/core/converters/controls/Common/Table.js +389 -173
- package/src/sap/fe/core/converters/controls/Common/Table.ts +440 -244
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +26 -16
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +27 -19
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +78 -47
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +146 -107
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +20 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +30 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +39 -34
- package/src/sap/fe/core/converters/helpers/Aggregation.js +10 -2
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +18 -13
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +3 -2
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +6 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +0 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +27 -24
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +49 -40
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +33 -22
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +77 -62
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +28 -28
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +38 -45
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +3 -3
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +8 -6
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +74 -13
- package/src/sap/fe/core/formatters/TableFormatter.ts +71 -16
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +4 -7
- package/src/sap/fe/core/fpm/Component.js +46 -17
- package/src/sap/fe/core/fpm/Component.ts +11 -16
- package/src/sap/fe/core/helpers/AppStartupHelper.js +4 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +3 -3
- package/src/sap/fe/core/helpers/BindingExpression.js +10 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +37 -35
- package/src/sap/fe/core/helpers/ClassSupport.js +273 -256
- package/src/sap/fe/core/helpers/ClassSupport.ts +315 -237
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +9 -8
- package/src/sap/fe/core/helpers/MassEditHelper.js +522 -147
- package/src/sap/fe/core/helpers/MassEditHelper.ts +563 -236
- package/src/sap/fe/core/helpers/ModelHelper.js +29 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +39 -26
- package/src/sap/fe/core/helpers/PasteHelper.js +4 -4
- package/src/sap/fe/core/helpers/PasteHelper.ts +4 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +3 -3
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +3 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js +5 -7
- package/src/sap/fe/core/helpers/StableIdHelper.ts +8 -8
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +22 -8
- package/src/sap/fe/core/library.js +13 -5
- package/src/sap/fe/core/library.ts +26 -17
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +0 -3
- package/src/sap/fe/core/messagebundle.properties +135 -180
- package/src/sap/fe/core/messagebundle_ar.properties +31 -64
- package/src/sap/fe/core/messagebundle_bg.properties +31 -64
- package/src/sap/fe/core/messagebundle_ca.properties +31 -64
- package/src/sap/fe/core/messagebundle_cs.properties +31 -64
- package/src/sap/fe/core/messagebundle_cy.properties +32 -65
- package/src/sap/fe/core/messagebundle_da.properties +31 -64
- package/src/sap/fe/core/messagebundle_de.properties +29 -62
- package/src/sap/fe/core/messagebundle_el.properties +32 -65
- package/src/sap/fe/core/messagebundle_en.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_GB.properties +29 -62
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -74
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +32 -65
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +20 -6
- package/src/sap/fe/core/messagebundle_es.properties +31 -64
- package/src/sap/fe/core/messagebundle_es_MX.properties +31 -64
- package/src/sap/fe/core/messagebundle_et.properties +31 -64
- package/src/sap/fe/core/messagebundle_fi.properties +29 -62
- package/src/sap/fe/core/messagebundle_fr.properties +36 -69
- package/src/sap/fe/core/messagebundle_fr_CA.properties +33 -66
- package/src/sap/fe/core/messagebundle_hi.properties +29 -62
- package/src/sap/fe/core/messagebundle_hr.properties +32 -65
- package/src/sap/fe/core/messagebundle_hu.properties +30 -63
- package/src/sap/fe/core/messagebundle_id.properties +32 -65
- package/src/sap/fe/core/messagebundle_it.properties +31 -64
- package/src/sap/fe/core/messagebundle_iw.properties +31 -64
- package/src/sap/fe/core/messagebundle_ja.properties +29 -62
- package/src/sap/fe/core/messagebundle_kk.properties +31 -64
- package/src/sap/fe/core/messagebundle_ko.properties +31 -64
- package/src/sap/fe/core/messagebundle_lt.properties +31 -64
- package/src/sap/fe/core/messagebundle_lv.properties +32 -65
- package/src/sap/fe/core/messagebundle_ms.properties +31 -64
- package/src/sap/fe/core/messagebundle_nl.properties +31 -64
- package/src/sap/fe/core/messagebundle_no.properties +31 -64
- package/src/sap/fe/core/messagebundle_pl.properties +34 -67
- package/src/sap/fe/core/messagebundle_pt.properties +32 -65
- package/src/sap/fe/core/messagebundle_pt_PT.properties +31 -64
- package/src/sap/fe/core/messagebundle_ro.properties +33 -66
- package/src/sap/fe/core/messagebundle_ru.properties +33 -66
- package/src/sap/fe/core/messagebundle_sh.properties +31 -64
- package/src/sap/fe/core/messagebundle_sk.properties +31 -64
- package/src/sap/fe/core/messagebundle_sl.properties +29 -62
- package/src/sap/fe/core/messagebundle_sv.properties +30 -63
- package/src/sap/fe/core/messagebundle_th.properties +31 -64
- package/src/sap/fe/core/messagebundle_tr.properties +31 -64
- package/src/sap/fe/core/messagebundle_uk.properties +32 -65
- package/src/sap/fe/core/messagebundle_vi.properties +31 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +32 -65
- package/src/sap/fe/core/messagebundle_zh_TW.properties +34 -67
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +4 -4
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +1 -2
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +11 -8
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -13
- package/src/sap/fe/core/services/NavigationServiceFactory.js +5 -5
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +9 -5
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -4
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +105 -66
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +59 -49
- package/src/sap/fe/core/services/ShellServicesFactory.js +104 -29
- package/src/sap/fe/core/services/ShellServicesFactory.ts +64 -30
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +11 -10
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +38 -51
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +43 -5
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +6 -3
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +0 -3
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -9
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +32 -38
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +27 -6
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -9
- package/src/sap/fe/core/templating/EntitySetHelper.ts +11 -13
- package/src/sap/fe/core/templating/FilterHelper.js +4 -4
- package/src/sap/fe/core/templating/FilterHelper.ts +6 -5
- package/src/sap/fe/core/templating/PropertyHelper.js +70 -33
- package/src/sap/fe/core/templating/PropertyHelper.ts +49 -27
- package/src/sap/fe/core/templating/UIFormatters.js +133 -22
- package/src/sap/fe/core/templating/UIFormatters.ts +144 -50
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +8 -7
- package/src/sap/fe/core/AnnotationHelper.js +0 -312
- package/src/sap/fe/core/AnnotationHelper.ts +0 -315
- package/src/sap/fe/core/RouterProxy.js +0 -926
- package/src/sap/fe/core/TransactionHelper.js +0 -1562
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -392
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +0 -136
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -262
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +0 -103
- package/src/sap/fe/core/actions/draft.js +0 -523
- package/src/sap/fe/core/actions/messageHandling.js +0 -567
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -78
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +0 -65
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import ManagedObject from "sap/ui/base/ManagedObject";
|
|
2
|
+
import XMLPreprocessor from "sap/ui/core/util/XMLPreprocessor";
|
|
3
|
+
//Trace information
|
|
4
|
+
const aTraceInfo: any[] = [
|
|
5
|
+
/* Structure for a macro
|
|
6
|
+
{
|
|
7
|
+
macro: '', //name of macro
|
|
8
|
+
metaDataContexts: [ //Properties of type sap.ui.model.Context
|
|
9
|
+
{
|
|
10
|
+
name: '', //context property name / key
|
|
11
|
+
path: '', //from oContext.getPath()
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
properties: { // Other properties which become part of {this>}
|
|
15
|
+
property1: value,
|
|
16
|
+
property2: value
|
|
17
|
+
}
|
|
18
|
+
viewInfo: {
|
|
19
|
+
viewInfo: {} // As specified in view or fragement creation
|
|
20
|
+
},
|
|
21
|
+
traceID: this.index, //ID for this trace information,
|
|
22
|
+
macroInfo: {
|
|
23
|
+
macroID: index, // traceID of this macro (redundant for macros)
|
|
24
|
+
parentMacroID, index // traceID of the parent macro (if it has a parent)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Structure for a control
|
|
28
|
+
{
|
|
29
|
+
control: '', //control class
|
|
30
|
+
properties: { // Other properties which become part of {this>}
|
|
31
|
+
property1: {
|
|
32
|
+
originalValue: '', //Value before templating
|
|
33
|
+
resolvedValue: '' //Value after templating
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
contexts: { //Models and Contexts used during templating
|
|
37
|
+
// Model or context name used for this control
|
|
38
|
+
modelName1: { // For ODataMetaModel
|
|
39
|
+
path1: {
|
|
40
|
+
path: '', //absolut path within metamodel
|
|
41
|
+
data: '', //data of path unless type Object
|
|
42
|
+
}
|
|
43
|
+
modelName2: {
|
|
44
|
+
// for other model types
|
|
45
|
+
{
|
|
46
|
+
property1: value,
|
|
47
|
+
property2: value
|
|
48
|
+
}
|
|
49
|
+
// In case binding cannot be resolved -> mark as runtime binding
|
|
50
|
+
// This is not always true, e.g. in case the path is metamodelpath
|
|
51
|
+
{
|
|
52
|
+
"bindingFor": "Runtime"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
viewInfo: {
|
|
57
|
+
viewInfo: {} // As specified in view or fragement creation
|
|
58
|
+
},
|
|
59
|
+
macroInfo: {
|
|
60
|
+
macroID: index, // traceID of the macro that created this control
|
|
61
|
+
parentMacroID, index // traceID of the macro's parent macro
|
|
62
|
+
},
|
|
63
|
+
traceID: this.index //ID for this trace information
|
|
64
|
+
}
|
|
65
|
+
*/
|
|
66
|
+
];
|
|
67
|
+
const traceNamespace = "http://schemas.sap.com/sapui5/extension/sap.fe.info/1",
|
|
68
|
+
xmlns = "http://www.w3.org/2000/xmlns/",
|
|
69
|
+
/**
|
|
70
|
+
* Switch is currently based on url parameter
|
|
71
|
+
*/
|
|
72
|
+
traceIsOn = location.search.indexOf("sap-ui-xx-feTraceInfo=true") > -1,
|
|
73
|
+
/**
|
|
74
|
+
* Specify all namespaces that shall be traced during templating
|
|
75
|
+
*/
|
|
76
|
+
aNamespaces = [
|
|
77
|
+
"sap.m",
|
|
78
|
+
"sap.uxap",
|
|
79
|
+
"sap.ui.unified",
|
|
80
|
+
"sap.f",
|
|
81
|
+
"sap.ui.table",
|
|
82
|
+
"sap.suite.ui.microchart",
|
|
83
|
+
"sap.ui.layout.form",
|
|
84
|
+
"sap.ui.mdc",
|
|
85
|
+
"sap.ui.mdc.link",
|
|
86
|
+
"sap.ui.mdc.field",
|
|
87
|
+
"sap.fe.fpm"
|
|
88
|
+
],
|
|
89
|
+
oCallbacks: any = {};
|
|
90
|
+
|
|
91
|
+
function fnClone(oObject: any) {
|
|
92
|
+
return JSON.parse(JSON.stringify(oObject));
|
|
93
|
+
}
|
|
94
|
+
function collectContextInfo(sValue: any, oContexts: any, oVisitor: any, oNode: any) {
|
|
95
|
+
let aContexts;
|
|
96
|
+
const aPromises: any[] = [];
|
|
97
|
+
try {
|
|
98
|
+
aContexts = (ManagedObject as any).bindingParser(sValue, undefined, false, true) || [];
|
|
99
|
+
} catch (e) {
|
|
100
|
+
aContexts = [];
|
|
101
|
+
}
|
|
102
|
+
aContexts = Array.isArray(aContexts) ? aContexts : [aContexts];
|
|
103
|
+
aContexts
|
|
104
|
+
.filter(function (oContext: any) {
|
|
105
|
+
return oContext.path || oContext.parts;
|
|
106
|
+
})
|
|
107
|
+
.forEach(function (oContext: any) {
|
|
108
|
+
const aParts = oContext.parts || [oContext];
|
|
109
|
+
aParts
|
|
110
|
+
.filter(function (oContext: any) {
|
|
111
|
+
return oContext.path;
|
|
112
|
+
})
|
|
113
|
+
.forEach(function (oContext: any) {
|
|
114
|
+
const oModel = (oContexts[oContext.model] = oContexts[oContext.model] || {});
|
|
115
|
+
const sSimplePath =
|
|
116
|
+
oContext.path.indexOf(">") < 0 ? (oContext.model && oContext.model + ">") + oContext.path : oContext.path;
|
|
117
|
+
let oRealContext: any;
|
|
118
|
+
let aParts;
|
|
119
|
+
|
|
120
|
+
if (typeof oContext.model === "undefined" && sSimplePath.indexOf(">") > -1) {
|
|
121
|
+
aParts = sSimplePath.split(">");
|
|
122
|
+
oContext.model = aParts[0];
|
|
123
|
+
oContext.path = aParts[1];
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
oRealContext = oVisitor.getContext(sSimplePath);
|
|
127
|
+
aPromises.push(
|
|
128
|
+
oVisitor
|
|
129
|
+
.getResult("{" + sSimplePath + "}", oNode)
|
|
130
|
+
.then(function (oResult: any) {
|
|
131
|
+
if (oRealContext.getModel().getMetadata().getName() === "sap.ui.model.json.JSONModel") {
|
|
132
|
+
if (!oResult.oModel) {
|
|
133
|
+
oModel[oContext.path] = oResult; //oRealContext.getObject(oContext.path);
|
|
134
|
+
} else {
|
|
135
|
+
oModel[oContext.path] = "Context from " + oResult.getPath();
|
|
136
|
+
}
|
|
137
|
+
} else {
|
|
138
|
+
oModel[oContext.path] = {
|
|
139
|
+
path: oRealContext.getPath(),
|
|
140
|
+
data: typeof oResult === "object" ? "[ctrl/cmd-click] on path to see data" : oResult
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
.catch(function () {
|
|
145
|
+
oModel[oContext.path] = {
|
|
146
|
+
bindingFor: "Runtime"
|
|
147
|
+
};
|
|
148
|
+
})
|
|
149
|
+
);
|
|
150
|
+
} catch (exc) {
|
|
151
|
+
oModel[oContext.path] = {
|
|
152
|
+
bindingFor: "Runtime"
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
return Promise.all(aPromises);
|
|
158
|
+
}
|
|
159
|
+
function fillAttributes(oResults: any, oAttributes: any, sName: any, sValue: any) {
|
|
160
|
+
return oResults
|
|
161
|
+
.then(function (result: any) {
|
|
162
|
+
oAttributes[sName] =
|
|
163
|
+
sValue !== result
|
|
164
|
+
? {
|
|
165
|
+
originalValue: sValue,
|
|
166
|
+
resolvedValue: result
|
|
167
|
+
}
|
|
168
|
+
: sValue;
|
|
169
|
+
})
|
|
170
|
+
.catch(function (e: any) {
|
|
171
|
+
oAttributes[sName] = {
|
|
172
|
+
originalValue: sValue,
|
|
173
|
+
error: (e.stack && e.stack.toString()) || e
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
function collectInfo(oNode: any, oVisitor: any) {
|
|
178
|
+
const oAttributes = {};
|
|
179
|
+
const aPromises = [];
|
|
180
|
+
const oContexts = {};
|
|
181
|
+
let oResults;
|
|
182
|
+
for (let i = oNode.attributes.length >>> 0; i--; ) {
|
|
183
|
+
const oAttribute = oNode.attributes[i],
|
|
184
|
+
sName = oAttribute.nodeName,
|
|
185
|
+
sValue = oNode.getAttribute(sName);
|
|
186
|
+
if (!["core:require"].includes(sName)) {
|
|
187
|
+
aPromises.push(collectContextInfo(sValue, oContexts, oVisitor, oNode));
|
|
188
|
+
oResults = oVisitor.getResult(sValue, oNode);
|
|
189
|
+
if (oResults) {
|
|
190
|
+
aPromises.push(fillAttributes(oResults, oAttributes, sName, sValue));
|
|
191
|
+
} else {
|
|
192
|
+
//What
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return Promise.all(aPromises).then(function () {
|
|
197
|
+
return { properties: oAttributes, contexts: oContexts };
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
function resolve(oNode: any, oVisitor: any) {
|
|
201
|
+
const sControlName = oNode.nodeName.split(":")[1] || oNode.nodeName,
|
|
202
|
+
bIsControl = /^[A-Z]/.test(sControlName),
|
|
203
|
+
oTraceMetadataContext: any = {
|
|
204
|
+
control: oNode.namespaceURI + "." + (oNode.nodeName.split(":")[1] || oNode.nodeName)
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
if (bIsControl) {
|
|
208
|
+
if (!oNode.ownerDocument.firstChild.getAttribute("xmlns:trace")) {
|
|
209
|
+
oNode.ownerDocument.firstChild.setAttributeNS(xmlns, "xmlns:trace", traceNamespace);
|
|
210
|
+
oNode.ownerDocument.firstChild.setAttributeNS(traceNamespace, "trace:is", "on");
|
|
211
|
+
}
|
|
212
|
+
return collectInfo(oNode, oVisitor)
|
|
213
|
+
.then(function (result: { properties: {}; contexts: {} }) {
|
|
214
|
+
const bRelevant = Object.keys(result.contexts).length > 0; //If no context was used it is not relevant so we ignore Object.keys(result.properties).length
|
|
215
|
+
if (bRelevant) {
|
|
216
|
+
Object.assign(oTraceMetadataContext, result);
|
|
217
|
+
oTraceMetadataContext.viewInfo = oVisitor.getViewInfo();
|
|
218
|
+
oTraceMetadataContext.macroInfo = oVisitor.getSettings()["_macroInfo"];
|
|
219
|
+
oTraceMetadataContext.traceID = aTraceInfo.length;
|
|
220
|
+
oNode.setAttributeNS(traceNamespace, "trace:traceID", oTraceMetadataContext.traceID);
|
|
221
|
+
aTraceInfo.push(oTraceMetadataContext);
|
|
222
|
+
}
|
|
223
|
+
return oVisitor.visitAttributes(oNode).then(function () {
|
|
224
|
+
return oVisitor.visitChildNodes(oNode);
|
|
225
|
+
});
|
|
226
|
+
})
|
|
227
|
+
.catch(function (exc: any) {
|
|
228
|
+
oTraceMetadataContext.error = {
|
|
229
|
+
exception: exc,
|
|
230
|
+
node: new XMLSerializer().serializeToString(oNode)
|
|
231
|
+
};
|
|
232
|
+
});
|
|
233
|
+
} else {
|
|
234
|
+
return oVisitor.visitAttributes(oNode).then(function () {
|
|
235
|
+
return oVisitor.visitChildNodes(oNode);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Register path-through XMLPreprocessor plugin for all namespaces
|
|
241
|
+
* given above in aNamespaces
|
|
242
|
+
*/
|
|
243
|
+
if (traceIsOn) {
|
|
244
|
+
aNamespaces.forEach(function (namespace: string) {
|
|
245
|
+
oCallbacks[namespace] = XMLPreprocessor.plugIn(resolve.bind(namespace), namespace);
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Adds information about the processing of one macro to the collection.
|
|
250
|
+
*
|
|
251
|
+
* @name sap.fe.macros.TraceInfo.traceMacroCalls
|
|
252
|
+
* @param {string} sName Macro class name
|
|
253
|
+
* @param {object} oMetadata Definition from (macro).metadata.js
|
|
254
|
+
* @param {object} mContexts Available named contexts
|
|
255
|
+
* @param {XMLNode} oNode
|
|
256
|
+
* @param {object} oVisitor
|
|
257
|
+
* @returns {object}
|
|
258
|
+
* @private
|
|
259
|
+
* @ui5-restricted
|
|
260
|
+
* @static
|
|
261
|
+
*/
|
|
262
|
+
function traceMacroCalls(sName: string, oMetadata: any, mContexts: any, oNode: any, oVisitor: any) {
|
|
263
|
+
let aMetadataContextKeys = (oMetadata.metadataContexts && Object.keys(oMetadata.metadataContexts)) || [];
|
|
264
|
+
const aProperties = (oMetadata.properties && Object.keys(oMetadata.properties)) || [];
|
|
265
|
+
const macroInfo = fnClone(oVisitor.getSettings()["_macroInfo"] || {});
|
|
266
|
+
const oTraceMetadataContext: any = {
|
|
267
|
+
macro: sName,
|
|
268
|
+
metaDataContexts: [] as any[],
|
|
269
|
+
properties: {}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
if (aMetadataContextKeys.length === 0) {
|
|
273
|
+
//In case the macro has not metadata.js we take all metadataContexts except this
|
|
274
|
+
aMetadataContextKeys = Object.keys(mContexts).filter(function (name: string) {
|
|
275
|
+
return name !== "this";
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
if (!oNode.getAttribute("xmlns:trace")) {
|
|
280
|
+
oNode.setAttributeNS(xmlns, "xmlns:trace", traceNamespace);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if (aMetadataContextKeys.length > 0) {
|
|
284
|
+
aMetadataContextKeys.forEach(function (sKey: any) {
|
|
285
|
+
const oContext = mContexts[sKey],
|
|
286
|
+
oMetaDataContext: any = oContext && {
|
|
287
|
+
name: sKey,
|
|
288
|
+
path: oContext.getPath()
|
|
289
|
+
//data: JSON.stringify(oContext.getObject(),null,2)
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
if (oMetaDataContext) {
|
|
293
|
+
oTraceMetadataContext.metaDataContexts.push(oMetaDataContext);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
aProperties.forEach(function (sKey: any) {
|
|
298
|
+
const //oPropertySettings = oMetadata.properties[sKey],
|
|
299
|
+
oProperty = mContexts.this.getObject(sKey);
|
|
300
|
+
// (oNode.hasAttribute(sKey) && oNode.getAttribute(sKey)) ||
|
|
301
|
+
// (oPropertySettings.hasOwnProperty("defaultValue") && oPropertySettings.define) ||
|
|
302
|
+
// false;
|
|
303
|
+
|
|
304
|
+
if (oProperty) {
|
|
305
|
+
oTraceMetadataContext.properties[sKey] = oProperty;
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
oTraceMetadataContext.viewInfo = oVisitor.getViewInfo();
|
|
309
|
+
oTraceMetadataContext.traceID = aTraceInfo.length;
|
|
310
|
+
macroInfo.parentMacroID = macroInfo.macroID;
|
|
311
|
+
macroInfo.macroID = oTraceMetadataContext.traceID;
|
|
312
|
+
oTraceMetadataContext.macroInfo = macroInfo;
|
|
313
|
+
oNode.setAttributeNS(traceNamespace, "trace:macroID", oTraceMetadataContext.traceID);
|
|
314
|
+
aTraceInfo.push(oTraceMetadataContext);
|
|
315
|
+
return oTraceMetadataContext;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Returns the globally stored trace information for the macro or
|
|
320
|
+
* control marked with the given id.
|
|
321
|
+
*
|
|
322
|
+
* Returns all trace information if no id is specified
|
|
323
|
+
*
|
|
324
|
+
*
|
|
325
|
+
<pre>Structure for a macro
|
|
326
|
+
{
|
|
327
|
+
macro: '', //name of macro
|
|
328
|
+
metaDataContexts: [ //Properties of type sap.ui.model.Context
|
|
329
|
+
{
|
|
330
|
+
name: '', //context property name / key
|
|
331
|
+
path: '', //from oContext.getPath()
|
|
332
|
+
}
|
|
333
|
+
],
|
|
334
|
+
properties: { // Other properties which become part of {this>}
|
|
335
|
+
property1: value,
|
|
336
|
+
property2: value
|
|
337
|
+
}
|
|
338
|
+
viewInfo: {
|
|
339
|
+
viewInfo: {} // As specified in view or fragement creation
|
|
340
|
+
},
|
|
341
|
+
traceID: this.index, //ID for this trace information,
|
|
342
|
+
macroInfo: {
|
|
343
|
+
macroID: index, // traceID of this macro (redundant for macros)
|
|
344
|
+
parentMacroID, index // traceID of the parent macro (if it has a parent)
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
Structure for a control
|
|
348
|
+
{
|
|
349
|
+
control: '', //control class
|
|
350
|
+
properties: { // Other properties which become part of {this>}
|
|
351
|
+
property1: {
|
|
352
|
+
originalValue: '', //Value before templating
|
|
353
|
+
resolvedValue: '' //Value after templating
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
contexts: { //Models and Contexts used during templating
|
|
357
|
+
// Model or context name used for this control
|
|
358
|
+
modelName1: { // For ODataMetaModel
|
|
359
|
+
path1: {
|
|
360
|
+
path: '', //absolut path within metamodel
|
|
361
|
+
data: '', //data of path unless type Object
|
|
362
|
+
}
|
|
363
|
+
modelName2: {
|
|
364
|
+
// for other model types
|
|
365
|
+
{
|
|
366
|
+
property1: value,
|
|
367
|
+
property2: value
|
|
368
|
+
}
|
|
369
|
+
// In case binding cannot be resolved -> mark as runtime binding
|
|
370
|
+
// This is not always true, e.g. in case the path is metamodelpath
|
|
371
|
+
{
|
|
372
|
+
"bindingFor": "Runtime"
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
},
|
|
376
|
+
viewInfo: {
|
|
377
|
+
viewInfo: {} // As specified in view or fragement creation
|
|
378
|
+
},
|
|
379
|
+
macroInfo: {
|
|
380
|
+
macroID: index, // traceID of the macro that created this control
|
|
381
|
+
parentMacroID, index // traceID of the macro's parent macro
|
|
382
|
+
},
|
|
383
|
+
traceID: this.index //ID for this trace information
|
|
384
|
+
}</pre>.
|
|
385
|
+
*
|
|
386
|
+
* @function
|
|
387
|
+
* @name sap.fe.macros.TraceInfo.getTraceInfo
|
|
388
|
+
* @param {number} id TraceInfo id
|
|
389
|
+
* @returns {object|Array} Object / Array for TraceInfo
|
|
390
|
+
* @private
|
|
391
|
+
* @static
|
|
392
|
+
*/
|
|
393
|
+
function getTraceInfo(id: number) {
|
|
394
|
+
if (id) {
|
|
395
|
+
return aTraceInfo[id];
|
|
396
|
+
}
|
|
397
|
+
const aErrors = aTraceInfo.filter(function (traceInfo: any) {
|
|
398
|
+
return traceInfo.error;
|
|
399
|
+
});
|
|
400
|
+
return (aErrors.length > 0 && aErrors) || aTraceInfo;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Returns true if TraceInfo is active.
|
|
404
|
+
*
|
|
405
|
+
* @function
|
|
406
|
+
* @name sap.fe.macros.TraceInfo.isTraceInfoActive
|
|
407
|
+
* @returns {boolean} `true` when active
|
|
408
|
+
* @private
|
|
409
|
+
* @static
|
|
410
|
+
*/
|
|
411
|
+
function isTraceInfoActive() {
|
|
412
|
+
return traceIsOn;
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* @typedef sap.fe.macros.TraceInfo
|
|
416
|
+
* TraceInfo for SAP Fiori elements
|
|
417
|
+
*
|
|
418
|
+
* Once traces is switched, information about macros and controls
|
|
419
|
+
* that are processed during xml preprocessing ( @see {@link sap.ui.core.util.XMLPreprocessor})
|
|
420
|
+
* will be collected within this singleton
|
|
421
|
+
* @namespace
|
|
422
|
+
* @private
|
|
423
|
+
* @global
|
|
424
|
+
* @experimental This module is only for experimental use! <br/><b>This is only a POC and maybe deleted</b>
|
|
425
|
+
* @since 1.74.0
|
|
426
|
+
*/
|
|
427
|
+
export default {
|
|
428
|
+
isTraceInfoActive: isTraceInfoActive,
|
|
429
|
+
traceMacroCalls: traceMacroCalls,
|
|
430
|
+
getTraceInfo: getTraceInfo
|
|
431
|
+
};
|
|
@@ -104,4 +104,4 @@ sap.ui.define(["sap/base/Log"], function (Log) {
|
|
|
104
104
|
};
|
|
105
105
|
return BusyLocker;
|
|
106
106
|
}, false);
|
|
107
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJ1c3lMb2NrZXIudHMiXSwibmFtZXMiOlsiX2lUaW1lb3V0SW5TZWNvbmRzIiwiX21Mb2NrQ291bnRlcnMiLCJfb1JlZmVyZW5jZUR1bW15IiwiZ2V0SWQiLCJzZXRCdXN5IiwiYkJ1c3kiLCJMb2ciLCJpbmZvIiwiZ2V0TG9ja0NvdW50SWQiLCJvUmVmZXJlbmNlIiwic1BhdGgiLCJpc0xvY2tlZCIsImdldExvY2tDb3VudEVudHJ5Iiwid2FybmluZyIsInNJZCIsImlkIiwicGF0aCIsInJlZmVyZW5jZSIsImNvdW50IiwiZGVsZXRlTG9ja0NvdW50RW50cnkiLCJtTG9ja0NvdW50RW50cnkiLCJhcHBseUxvY2tTdGF0ZSIsImJJc01vZGVsIiwiaXNBIiwic2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJjbGVhclRpbWVvdXQiLCJ0aW1lb3V0Iiwic2V0VGltZW91dCIsImVycm9yIiwiY2hhbmdlTG9ja0NvdW50IiwiaURlbHRhIiwiQnVzeUxvY2tlciIsImxvY2siLCJvTW9kZWxPckNvbnRyb2wiLCJfdXBkYXRlTG9jayIsInVubG9jayJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQURBLE1BQU1BLGtCQUFrQixHQUFHLEVBQTNCO0FBQUEsTUFDQ0MsY0FBbUIsR0FBRyxFQUR2QjtBQUFBLE1BRUNDLGdCQUFnQixHQUFHO0FBQ2xCQyxJQUFBQSxLQUFLLEVBQUUsWUFBWTtBQUNsQixhQUFPLDJCQUFQO0FBQ0EsS0FIaUI7QUFJbEJDLElBQUFBLE9BQU8sRUFBRSxVQUFVQyxLQUFWLEVBQXNCO0FBQzlCQyxNQUFBQSxHQUFHLENBQUNDLElBQUosbUJBQW9CRixLQUFwQjtBQUNBO0FBTmlCLEdBRnBCOztBQVVBLFdBQVNHLGNBQVQsQ0FBd0JDLFVBQXhCLEVBQXlDQyxLQUF6QyxFQUFxRDtBQUNwRCxXQUFPRCxVQUFVLENBQUNOLEtBQVgsTUFBc0JPLEtBQUssSUFBSSxPQUEvQixDQUFQO0FBQ0E7O0FBQ0QsV0FBU0MsUUFBVCxDQUFrQkYs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ZSxDQUFDRixLQUF2RTtBQUNBO0FBQ0Q7O0FBRUQsTUFBTWMsVUFBVSxHQUFHO0FBQ2xCQyxJQUFBQSxJQUFJLEVBQUUsVUFBVUMsZUFBVixFQUFnQ3hCLEtBQWhDLEVBQWdEO0FBQ3JELGFBQU8sS0FBS3lCLFdBQUwsQ0FBaUJELGVBQWpCLEVBQWtDeEIsS0FBbEMsRUFBeUMsQ0FBekMsQ0FBUDtBQUNBLEtBSGlCO0FBS2xCMEIsSUFBQUEsTUFBTSxFQUFFLFVBQVVGLGVBQVYsRUFBZ0N4QixLQUFoQyxFQUFnRDtBQUN2RCxhQUFPLEtBQUt5QixXQUFMLENBQWlCRCxlQUFqQixFQUFrQ3hCLEtBQWxDLEVBQXlDLENBQUMsQ0FBMUMsQ0FBUDtBQUNBLEtBUGlCO0FBU2xCQyxJQUFBQSxRQUFRLEVBQUUsVUFBVXVCLGVBQVYsRUFBZ0N4QixLQUFoQyxFQUFnRDtBQUN6RCxhQUFPQyxRQUFRLENBQUN1QixlQUFELEVBQWtCeEIsS0FBbEIsQ0FBZjtBQUNBLEtBWGlCO0FBYWxCeUIsSUFBQUEsV0FBVyxFQUFFLFVBQVUxQixVQUFWLEVBQTJCQyxLQUEzQixFQUF1Q3FCLE1BQXZDLEVBQW9EO0FBQ2hFLFVBQU1YLGVBQWUsR0FBR1IsaUJBQWlCLENBQUNILFVBQUQsRUFBYUMsS0FBYixDQUF6QztBQUNBb0IsTUFBQUEsZUFBZSxDQUFDVixlQUFELEVBQWtCVyxNQUFsQixDQUFmO0FBQ0EsYUFBT1YsY0FBYyxDQUFDRCxlQUFELENBQXJCO0FBQ0E7QUFqQmlCLEdBQW5CO1NBb0JlWSxVIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmNvbnN0IF9pVGltZW91dEluU2Vjb25kcyA9IDMwLFxuXHRfbUxvY2tDb3VudGVyczogYW55ID0ge30sXG5cdF9vUmVmZXJlbmNlRHVtbXkgPSB7XG5cdFx0Z2V0SWQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBcIkJ1c3lMb2NrZXIuUmVmZXJlbmNlRHVtbXlcIjtcblx0XHR9LFxuXHRcdHNldEJ1c3k6IGZ1bmN0aW9uIChiQnVzeTogYW55KSB7XG5cdFx0XHRMb2cuaW5mbyhgc2V0QnVzeSgke2JCdXN5fSkgdHJpZ2dlcmVkIG9uIGR1bW15IHJlZmVyZW5jZWApO1xuXHRcdH1cblx0fTtcbmZ1bmN0aW9uIGdldExvY2tDb3VudElkKG9SZWZlcmVuY2U6IGFueSwgc1BhdGg6IGFueSkge1xuXHRyZXR1cm4gb1JlZmVyZW5jZS5nZXRJZCgpICsgKHNQYXRoIHx8IFwiL2J1c3lcIik7XG59XG5mdW5jdGlvbiBpc0xvY2tlZChvUmVmZXJlbmNlOiBhbnksIHNQYXRoOiBhbnkpIHtcblx0cmV0dXJuIGdldExvY2tDb3VudElkKG9SZWZlcmVuY2UsIHNQYXRoKSBpbiBfbUxvY2tDb3VudGVycztcbn1cbmZ1bmN0aW9uIGdldExvY2tDb3VudEVudHJ5KG9SZWZlcmVuY2U6IGFueSwgc1BhdGg6IGFueSkge1xuXHRpZiAoIW9SZWZlcmVuY2UgfHwgIW9SZWZlcmVuY2UuZ2V0SWQpIHtcblx0XHRMb2cud2FybmluZyhcIk5vIHJlZmVyZW5jZSBmb3IgQnVzeUxvY2tlciwgdXNpbmcgZHVtbXkgcmVmZXJlbmNlXCIpO1xuXHRcdG9SZWZlcmVuY2UgPSBfb1JlZmVyZW5jZUR1bW15O1xuXHR9XG5cblx0c1BhdGggPSBzUGF0aCB8fCBcIi9idXN5XCI7XG5cdGNvbnN0IHNJZCA9IGdldExvY2tDb3VudElkKG9SZWZlcmVuY2UsIHNQYXRoKTtcblxuXHRpZiAoIShzSWQgaW4gX21Mb2NrQ291bnRlcnMpKSB7XG5cdFx0X21Mb2NrQ291bnRlcnNbc0lkXSA9IHtcblx0XHRcdGlkOiBzSWQsXG5cdFx0XHRwYXRoOiBzUGF0aCxcblx0XHRcdHJlZmVyZW5jZTogb1JlZmVyZW5jZSxcblx0XHRcdGNvdW50OiAwXG5cdFx0fTtcblx0fVxuXHRyZXR1cm4gX21Mb2NrQ291bnRlcnNbc0lkXTtcbn1cbi8qKlxuICogQHBhcmFtIG1Mb2NrQ291bnRFbnRyeVxuICovXG5mdW5jdGlvbiBkZWxldGVMb2NrQ291bnRFbnRyeShtTG9ja0NvdW50RW50cnk6IGFueSkge1xuXHRkZWxldGUgX21Mb2NrQ291bnRlcnNbbUxvY2tDb3VudEVudHJ5LmlkXTtcbn1cblxuZnVuY3Rpb24gYXBwbHlMb2NrU3RhdGUobUxvY2tDb3VudEVudHJ5OiBhbnkpIHtcblx0Y29uc3QgYklzTW9kZWwgPSBtTG9ja0NvdW50RW50cnkucmVmZXJlbmNlLmlzQSAmJiBtTG9ja0NvdW50RW50cnkucmVmZXJlbmNlLmlzQShcInNhcC51aS5tb2RlbC5Nb2RlbFwiKSxcblx0XHRiQnVzeSA9IG1Mb2NrQ291bnRFbnRyeS5jb3VudCAhPT0gMDtcblxuXHRpZiAoYklzTW9kZWwpIHtcblx0XHRtTG9ja0NvdW50RW50cnkucmVmZXJlbmNlLnNldFByb3BlcnR5KG1Mb2NrQ291bnRFbnRyeS5wYXRoLCBiQnVzeSwgdW5kZWZpbmVkLCB0cnVlKTtcblx0fSBlbHNlIGlmIChtTG9ja0NvdW50RW50cnkucmVmZXJlbmNlLnNldEJ1c3kpIHtcblx0XHRtTG9ja0NvdW50RW50cnkucmVmZXJlbmNlLnNldEJ1c3koYkJ1c3kpO1xuXHR9XG5cblx0Y2xlYXJUaW1lb3V0KG1Mb2NrQ291bnRFbnRyeS50aW1lb3V0KTtcblx0aWYgKGJCdXN5KSB7XG5cdFx0bUxvY2tDb3VudEVudHJ5LnRpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdExvZy5lcnJvcihcblx0XHRcdFx0YGJ1c3kgbG9jayBmb3IgJHttTG9ja0NvdW50RW50cnkuaWR9IHdpdGggdmFsdWUgJHttTG9ja0NvdW50RW50cnkuY291bnR9IHRpbWVkIG91dCBhZnRlciAke19pVGltZW91dEluU2Vjb25kc30gc2Vjb25kcyFgXG5cdFx0XHQpO1xuXHRcdH0sIF9pVGltZW91dEluU2Vjb25kcyAqIDEwMDApO1xuXHR9IGVsc2Uge1xuXHRcdGRlbGV0ZUxvY2tDb3VudEVudHJ5KG1Mb2NrQ291bnRFbnRyeSk7XG5cdH1cblxuXHRyZXR1cm4gYkJ1c3k7XG59XG5cbmZ1bmN0aW9uIGNoYW5nZUxvY2tDb3VudChtTG9ja0NvdW50RW50cnk6IGFueSwgaURlbHRhOiBhbnkpIHtcblx0aWYgKGlEZWx0YSA9PT0gMCkge1xuXHRcdG1Mb2NrQ291bnRFbnRyeS5jb3VudCA9IDA7XG5cdFx0TG9nLmluZm8oYGJ1c3kgbG9jayBjb3VudCAnJHttTG9ja0NvdW50RW50cnkuaWR9JyB3YXMgcmVzZXQgdG8gMGApO1xuXHR9IGVsc2Uge1xuXHRcdG1Mb2NrQ291bnRFbnRyeS5jb3VudCArPSBpRGVsdGE7XG5cdFx0TG9nLmluZm8oYGJ1c3kgbG9jayBjb3VudCAnJHttTG9ja0NvdW50RW50cnkuaWR9JyBpcyAke21Mb2NrQ291bnRFbnRyeS5jb3VudH1gKTtcblx0fVxufVxuXG5jb25zdCBCdXN5TG9ja2VyID0ge1xuXHRsb2NrOiBmdW5jdGlvbiAob01vZGVsT3JDb250cm9sOiBhbnksIHNQYXRoPzogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3VwZGF0ZUxvY2sob01vZGVsT3JDb250cm9sLCBzUGF0aCwgMSk7XG5cdH0sXG5cblx0dW5sb2NrOiBmdW5jdGlvbiAob01vZGVsT3JDb250cm9sOiBhbnksIHNQYXRoPzogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3VwZGF0ZUxvY2sob01vZGVsT3JDb250cm9sLCBzUGF0aCwgLTEpO1xuXHR9LFxuXG5cdGlzTG9ja2VkOiBmdW5jdGlvbiAob01vZGVsT3JDb250cm9sOiBhbnksIHNQYXRoPzogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGlzTG9ja2VkKG9Nb2RlbE9yQ29udHJvbCwgc1BhdGgpO1xuXHR9LFxuXG5cdF91cGRhdGVMb2NrOiBmdW5jdGlvbiAob1JlZmVyZW5jZTogYW55LCBzUGF0aDogYW55LCBpRGVsdGE6IGFueSkge1xuXHRcdGNvbnN0IG1Mb2NrQ291bnRFbnRyeSA9IGdldExvY2tDb3VudEVudHJ5KG9SZWZlcmVuY2UsIHNQYXRoKTtcblx0XHRjaGFuZ2VMb2NrQ291bnQobUxvY2tDb3VudEVudHJ5LCBpRGVsdGEpO1xuXHRcdHJldHVybiBhcHBseUxvY2tTdGF0ZShtTG9ja0NvdW50RW50cnkpO1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCdXN5TG9ja2VyO1xuIl19
|
|
@@ -2,10 +2,10 @@ import Log from "sap/base/Log";
|
|
|
2
2
|
const _iTimeoutInSeconds = 30,
|
|
3
3
|
_mLockCounters: any = {},
|
|
4
4
|
_oReferenceDummy = {
|
|
5
|
-
getId: function() {
|
|
5
|
+
getId: function () {
|
|
6
6
|
return "BusyLocker.ReferenceDummy";
|
|
7
7
|
},
|
|
8
|
-
setBusy: function(bBusy: any) {
|
|
8
|
+
setBusy: function (bBusy: any) {
|
|
9
9
|
Log.info(`setBusy(${bBusy}) triggered on dummy reference`);
|
|
10
10
|
}
|
|
11
11
|
};
|
|
@@ -53,7 +53,7 @@ function applyLockState(mLockCountEntry: any) {
|
|
|
53
53
|
|
|
54
54
|
clearTimeout(mLockCountEntry.timeout);
|
|
55
55
|
if (bBusy) {
|
|
56
|
-
mLockCountEntry.timeout = setTimeout(function() {
|
|
56
|
+
mLockCountEntry.timeout = setTimeout(function () {
|
|
57
57
|
Log.error(
|
|
58
58
|
`busy lock for ${mLockCountEntry.id} with value ${mLockCountEntry.count} timed out after ${_iTimeoutInSeconds} seconds!`
|
|
59
59
|
);
|
|
@@ -76,19 +76,19 @@ function changeLockCount(mLockCountEntry: any, iDelta: any) {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
const BusyLocker = {
|
|
79
|
-
lock: function(oModelOrControl: any, sPath?: string) {
|
|
79
|
+
lock: function (oModelOrControl: any, sPath?: string) {
|
|
80
80
|
return this._updateLock(oModelOrControl, sPath, 1);
|
|
81
81
|
},
|
|
82
82
|
|
|
83
|
-
unlock: function(oModelOrControl: any, sPath?: string) {
|
|
83
|
+
unlock: function (oModelOrControl: any, sPath?: string) {
|
|
84
84
|
return this._updateLock(oModelOrControl, sPath, -1);
|
|
85
85
|
},
|
|
86
86
|
|
|
87
|
-
isLocked: function(oModelOrControl: any, sPath?: string) {
|
|
87
|
+
isLocked: function (oModelOrControl: any, sPath?: string) {
|
|
88
88
|
return isLocked(oModelOrControl, sPath);
|
|
89
89
|
},
|
|
90
90
|
|
|
91
|
-
_updateLock: function(oReference: any, sPath: any, iDelta: any) {
|
|
91
|
+
_updateLock: function (oReference: any, sPath: any, iDelta: any) {
|
|
92
92
|
const mLockCountEntry = getLockCountEntry(oReference, sPath);
|
|
93
93
|
changeLockCount(mLockCountEntry, iDelta);
|
|
94
94
|
return applyLockState(mLockCountEntry);
|