@sapui5/sap.fe.core 1.98.0 → 1.101.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 +8 -5
- package/src/sap/fe/core/.library +2 -3
- package/src/sap/fe/core/AnnotationHelper.js +328 -405
- package/src/sap/fe/core/AnnotationHelper.ts +321 -0
- package/src/sap/fe/core/AppComponent.js +382 -399
- package/src/sap/fe/core/AppComponent.ts +397 -0
- package/src/sap/fe/core/AppStateHandler.js +198 -181
- package/src/sap/fe/core/AppStateHandler.ts +171 -0
- package/src/sap/fe/core/BaseController.js +83 -58
- package/src/sap/fe/core/BaseController.ts +67 -0
- package/src/sap/fe/core/BusyLocker.js +105 -121
- package/src/sap/fe/core/BusyLocker.ts +98 -0
- package/src/sap/fe/core/CommonUtils.js +2221 -2399
- package/src/sap/fe/core/CommonUtils.ts +2248 -0
- package/src/sap/fe/core/ExtensionAPI.js +280 -274
- package/src/sap/fe/core/ExtensionAPI.ts +242 -0
- package/src/sap/fe/core/PageController.js +219 -131
- package/src/sap/fe/core/PageController.ts +129 -0
- package/src/sap/fe/core/RouterProxy.js +936 -823
- package/src/sap/fe/core/RouterProxy.ts +854 -0
- package/src/sap/fe/core/Synchronization.js +41 -35
- package/src/sap/fe/core/Synchronization.ts +29 -0
- package/src/sap/fe/core/TemplateComponent.js +248 -164
- package/src/sap/fe/core/TemplateComponent.ts +161 -0
- package/src/sap/fe/core/TemplateModel.js +77 -54
- package/src/sap/fe/core/TemplateModel.ts +63 -0
- package/src/sap/fe/core/TransactionHelper.js +1575 -1664
- package/src/sap/fe/core/TransactionHelper.ts +1736 -0
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +406 -0
- package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +362 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +146 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +129 -0
- package/src/sap/fe/core/actions/collaboration/Manage.js +264 -0
- package/src/sap/fe/core/actions/collaboration/Manage.ts +246 -0
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +100 -0
- package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/src/sap/fe/core/actions/draft.js +663 -608
- package/src/sap/fe/core/actions/draft.ts +669 -0
- package/src/sap/fe/core/actions/messageHandling.js +576 -514
- package/src/sap/fe/core/actions/messageHandling.ts +562 -0
- package/src/sap/fe/core/actions/nonDraft.js +17 -19
- package/src/sap/fe/core/actions/nonDraft.ts +12 -0
- package/src/sap/fe/core/actions/operations.js +1093 -1215
- package/src/sap/fe/core/actions/operations.ts +1193 -0
- package/src/sap/fe/core/actions/sticky.js +114 -104
- package/src/sap/fe/core/actions/sticky.ts +119 -0
- 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 +707 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +628 -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/controllerextensions/EditFlow.js +1855 -1827
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1792 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +80 -54
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +60 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +717 -512
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +785 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +797 -815
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +810 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1057 -1004
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +1001 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +498 -533
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +36 -32
- package/src/sap/fe/core/controllerextensions/MassEdit.js +142 -77
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +155 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +222 -236
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +215 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +312 -345
- package/src/sap/fe/core/controllerextensions/PageReady.ts +63 -55
- package/src/sap/fe/core/controllerextensions/Paginator.js +189 -175
- package/src/sap/fe/core/controllerextensions/Paginator.ts +169 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +158 -149
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +149 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +145 -121
- package/src/sap/fe/core/controllerextensions/Routing.ts +131 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +8 -6
- package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Share.js +231 -268
- package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +603 -644
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +79 -79
- package/src/sap/fe/core/controllerextensions/ViewState.js +775 -806
- package/src/sap/fe/core/controllerextensions/ViewState.ts +796 -0
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
- 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 +93 -68
- package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +166 -79
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +74 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +366 -0
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +278 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +168 -125
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +116 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +44 -5
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +164 -122
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +155 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +213 -153
- package/src/sap/fe/core/controls/FieldWrapper.ts +104 -0
- package/src/sap/fe/core/controls/FileWrapper.js +313 -0
- package/src/sap/fe/core/controls/FileWrapper.ts +169 -0
- package/src/sap/fe/core/controls/FilterBar.js +198 -159
- package/src/sap/fe/core/controls/FilterBar.ts +148 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +101 -39
- package/src/sap/fe/core/controls/FormElementWrapper.ts +37 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +38 -42
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +148 -115
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +102 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +301 -265
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +252 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +186 -140
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +336 -322
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +37 -42
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +76 -74
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +71 -0
- package/src/sap/fe/core/converters/ConverterContext.js +348 -379
- package/src/sap/fe/core/converters/ConverterContext.ts +23 -19
- package/src/sap/fe/core/converters/ManifestSettings.js +13 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +18 -2
- package/src/sap/fe/core/converters/ManifestWrapper.js +354 -365
- package/src/sap/fe/core/converters/ManifestWrapper.ts +19 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +16 -11
- package/src/sap/fe/core/converters/MetaModelConverter.ts +21 -18
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +4 -3
- package/src/sap/fe/core/converters/annotations/DataField.js +26 -13
- package/src/sap/fe/core/converters/annotations/DataField.ts +40 -17
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +17 -13
- package/src/sap/fe/core/converters/controls/Common/Action.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/Action.ts +22 -21
- package/src/sap/fe/core/converters/controls/Common/Chart.js +12 -10
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +23 -14
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +2 -2
- package/src/sap/fe/core/converters/controls/Common/Form.js +9 -7
- package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -5
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +2 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +562 -218
- package/src/sap/fe/core/converters/controls/Common/Table.ts +670 -320
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +218 -94
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +265 -159
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +495 -77
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +535 -130
- 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 +10 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +13 -16
- package/src/sap/fe/core/converters/helpers/Aggregation.js +117 -127
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +20 -5
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +4 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +3 -0
- package/src/sap/fe/core/converters/helpers/Key.js +42 -57
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- 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 +54 -30
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +69 -43
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +52 -28
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +111 -74
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +11 -9
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -8
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +93 -98
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +4 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +3 -12
- package/src/sap/fe/core/formatters/KPIFormatter.ts +4 -1
- package/src/sap/fe/core/formatters/TableFormatter.js +91 -29
- package/src/sap/fe/core/formatters/TableFormatter.ts +94 -28
- package/src/sap/fe/core/formatters/ValueFormatter.js +4 -4
- package/src/sap/fe/core/formatters/ValueFormatter.ts +5 -7
- package/src/sap/fe/core/fpm/Component.js +81 -55
- package/src/sap/fe/core/fpm/Component.ts +43 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +324 -310
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +370 -341
- package/src/sap/fe/core/helpers/BindingExpression.js +319 -360
- package/src/sap/fe/core/helpers/BindingExpression.ts +323 -397
- package/src/sap/fe/core/helpers/ClassSupport.js +321 -168
- package/src/sap/fe/core/helpers/ClassSupport.ts +362 -158
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +64 -59
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +52 -0
- package/src/sap/fe/core/helpers/EditState.js +81 -84
- package/src/sap/fe/core/helpers/EditState.ts +81 -0
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +62 -48
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +49 -0
- package/src/sap/fe/core/helpers/FPMHelper.js +52 -56
- package/src/sap/fe/core/helpers/FPMHelper.ts +62 -0
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +3 -4
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +9 -9
- package/src/sap/fe/core/helpers/MassEditHelper.js +736 -676
- package/src/sap/fe/core/helpers/MassEditHelper.ts +803 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +281 -225
- package/src/sap/fe/core/helpers/ModelHelper.ts +273 -0
- package/src/sap/fe/core/helpers/PasteHelper.js +210 -132
- package/src/sap/fe/core/helpers/PasteHelper.ts +197 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +336 -313
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +336 -0
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +66 -67
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +73 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -10
- package/src/sap/fe/core/helpers/StableIdHelper.ts +2 -10
- package/src/sap/fe/core/jsx-runtime/jsx.js +35 -5
- package/src/sap/fe/core/jsx-runtime/jsx.ts +23 -9
- package/src/sap/fe/core/library.js +426 -451
- package/src/sap/fe/core/library.support.js +23 -33
- package/src/sap/fe/core/library.support.ts +23 -0
- package/src/sap/fe/core/library.ts +420 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +5 -5
- package/src/sap/fe/core/messagebundle.properties +63 -18
- package/src/sap/fe/core/messagebundle_ar.properties +37 -6
- package/src/sap/fe/core/messagebundle_bg.properties +37 -6
- package/src/sap/fe/core/messagebundle_ca.properties +37 -6
- package/src/sap/fe/core/messagebundle_cs.properties +38 -7
- package/src/sap/fe/core/messagebundle_cy.properties +37 -6
- package/src/sap/fe/core/messagebundle_da.properties +37 -6
- package/src/sap/fe/core/messagebundle_de.properties +37 -6
- package/src/sap/fe/core/messagebundle_el.properties +37 -6
- package/src/sap/fe/core/messagebundle_en.properties +37 -6
- package/src/sap/fe/core/messagebundle_en_GB.properties +37 -6
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +37 -6
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +37 -6
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +37 -6
- package/src/sap/fe/core/messagebundle_es.properties +37 -6
- package/src/sap/fe/core/messagebundle_es_MX.properties +37 -6
- package/src/sap/fe/core/messagebundle_et.properties +37 -6
- package/src/sap/fe/core/messagebundle_fi.properties +38 -7
- package/src/sap/fe/core/messagebundle_fr.properties +43 -12
- package/src/sap/fe/core/messagebundle_fr_CA.properties +45 -14
- package/src/sap/fe/core/messagebundle_hi.properties +43 -12
- package/src/sap/fe/core/messagebundle_hr.properties +43 -12
- package/src/sap/fe/core/messagebundle_hu.properties +37 -6
- package/src/sap/fe/core/messagebundle_id.properties +38 -7
- package/src/sap/fe/core/messagebundle_it.properties +37 -6
- package/src/sap/fe/core/messagebundle_iw.properties +37 -6
- package/src/sap/fe/core/messagebundle_ja.properties +36 -5
- package/src/sap/fe/core/messagebundle_kk.properties +43 -12
- package/src/sap/fe/core/messagebundle_ko.properties +37 -6
- package/src/sap/fe/core/messagebundle_lt.properties +37 -6
- package/src/sap/fe/core/messagebundle_lv.properties +44 -13
- package/src/sap/fe/core/messagebundle_ms.properties +42 -11
- package/src/sap/fe/core/messagebundle_nl.properties +37 -6
- package/src/sap/fe/core/messagebundle_no.properties +37 -6
- package/src/sap/fe/core/messagebundle_pl.properties +37 -6
- package/src/sap/fe/core/messagebundle_pt.properties +38 -7
- package/src/sap/fe/core/messagebundle_pt_PT.properties +37 -6
- package/src/sap/fe/core/messagebundle_ro.properties +37 -6
- package/src/sap/fe/core/messagebundle_ru.properties +37 -6
- package/src/sap/fe/core/messagebundle_sh.properties +39 -8
- package/src/sap/fe/core/messagebundle_sk.properties +37 -6
- package/src/sap/fe/core/messagebundle_sl.properties +43 -12
- package/src/sap/fe/core/messagebundle_sv.properties +38 -7
- package/src/sap/fe/core/messagebundle_th.properties +36 -5
- package/src/sap/fe/core/messagebundle_tr.properties +39 -8
- package/src/sap/fe/core/messagebundle_uk.properties +37 -6
- package/src/sap/fe/core/messagebundle_vi.properties +37 -6
- package/src/sap/fe/core/messagebundle_zh_CN.properties +37 -6
- package/src/sap/fe/core/messagebundle_zh_TW.properties +43 -12
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +47 -73
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +231 -202
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +211 -0
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +70 -96
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +10 -8
- package/src/sap/fe/core/services/NavigationServiceFactory.js +351 -300
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +313 -0
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +114 -81
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +83 -0
- package/src/sap/fe/core/services/RoutingServiceFactory.js +963 -899
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +907 -0
- package/src/sap/fe/core/services/ShellServicesFactory.js +694 -741
- package/src/sap/fe/core/services/ShellServicesFactory.ts +45 -40
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +572 -643
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +67 -96
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +429 -487
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +449 -0
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +48 -8
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +11 -0
- package/src/sap/fe/core/support/AnnotationIssue.support.js +15 -3
- package/src/sap/fe/core/support/AnnotationIssue.support.ts +16 -2
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -2
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +1 -4
- package/src/sap/fe/core/support/Diagnostics.js +36 -48
- package/src/sap/fe/core/templating/DataModelPathHelper.js +91 -90
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +126 -123
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +23 -3
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +26 -5
- package/src/sap/fe/core/templating/FieldControlHelper.js +8 -8
- package/src/sap/fe/core/templating/FieldControlHelper.ts +25 -7
- package/src/sap/fe/core/templating/FilterHelper.js +138 -79
- package/src/sap/fe/core/templating/FilterHelper.ts +148 -79
- package/src/sap/fe/core/templating/PropertyHelper.js +16 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +31 -24
- package/src/sap/fe/core/templating/UIFormatters.js +179 -43
- package/src/sap/fe/core/templating/UIFormatters.ts +190 -61
- package/src/sap/fe/core/type/Email.js +26 -8
- package/src/sap/fe/core/type/Email.ts +10 -11
- package/ui5.yaml +0 -3
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +0 -74
|
@@ -1,17 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
1
|
+
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
2
|
+
import { defineUI5Class, methodOverride, publicExtension } from "../helpers/ClassSupport";
|
|
3
|
+
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
4
|
+
import ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
5
|
+
import Context from "sap/ui/model/odata/v4/Context";
|
|
6
|
+
import Log from "sap/base/Log";
|
|
7
7
|
import { KPIChartDefinition, KPIDefinition, NavigationInfo } from "sap/fe/core/converters/controls/Common/KPI";
|
|
8
|
-
import
|
|
8
|
+
import BaseController from "sap/fe/core/BaseController";
|
|
9
9
|
import { MessageType } from "sap/fe/core/formatters/TableFormatterTypes";
|
|
10
10
|
import { FilterDefinition, RangeDefinition } from "sap/fe/core/converters/helpers/SelectionVariantHelper";
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import
|
|
11
|
+
import NumberFormat from "sap/ui/core/format/NumberFormat";
|
|
12
|
+
import DateFormat from "sap/ui/core/format/DateFormat";
|
|
13
|
+
import Locale from "sap/ui/core/Locale";
|
|
14
|
+
import Filter from "sap/ui/model/Filter";
|
|
15
|
+
import FilterOperator from "sap/ui/model/FilterOperator";
|
|
16
|
+
import Sorter from "sap/ui/model/Sorter";
|
|
17
|
+
import GenericTag from "sap/m/GenericTag";
|
|
18
|
+
import Popover from "sap/m/Popover";
|
|
19
|
+
import { CoreEx } from "types/extension_types";
|
|
20
|
+
import Core from "sap/ui/core/Core";
|
|
15
21
|
|
|
16
22
|
const MessageTypeFromCriticality: Record<string, MessageType> = {
|
|
17
23
|
"1": MessageType.Error,
|
|
@@ -211,7 +217,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
|
|
|
211
217
|
.getConfiguration()
|
|
212
218
|
.getLanguage()
|
|
213
219
|
);
|
|
214
|
-
const resBundle =
|
|
220
|
+
const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
215
221
|
const dateFormat = DateFormat.getDateInstance({ style: "medium" }, currentLocale);
|
|
216
222
|
|
|
217
223
|
function formatRange(range: RangeDefinition): string {
|
|
@@ -263,7 +269,7 @@ function getFilterStringFromDefinition(filterDefinition: FilterDefinition): stri
|
|
|
263
269
|
}
|
|
264
270
|
|
|
265
271
|
function formatChartTitle(kpiDef: KPIDefinition): string {
|
|
266
|
-
const resBundle =
|
|
272
|
+
const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
267
273
|
|
|
268
274
|
function formatList(items: { name: string; label: string }[]) {
|
|
269
275
|
if (items.length === 0) {
|
|
@@ -562,7 +568,7 @@ function getNavigationParameters(
|
|
|
562
568
|
* @private
|
|
563
569
|
* @since 1.93.0
|
|
564
570
|
*/
|
|
565
|
-
@
|
|
571
|
+
@defineUI5Class("sap.fe.core.controllerextensions.KPIManagement")
|
|
566
572
|
class KPIManagementControllerExtension extends ControllerExtension {
|
|
567
573
|
protected aKPIDefinitions?: KPIDefinition[];
|
|
568
574
|
protected oCard: any;
|
|
@@ -574,7 +580,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
574
580
|
* @param kpiDefinition The KPI definition
|
|
575
581
|
* @param oKPIModel The JSON model in which the manifest will be stored
|
|
576
582
|
*/
|
|
577
|
-
protected initCardManifest(kpiDefinition: KPIDefinition, oKPIModel: JSONModel
|
|
583
|
+
protected initCardManifest(kpiDefinition: KPIDefinition, oKPIModel: JSONModel): void {
|
|
578
584
|
const oCardManifest: any = {
|
|
579
585
|
"sap.app": {
|
|
580
586
|
id: "sap.fe",
|
|
@@ -618,7 +624,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
618
624
|
|
|
619
625
|
// Add side indicators in the card header if a target is defined for the KPI
|
|
620
626
|
if (kpiDefinition.datapoint.targetPath || kpiDefinition.datapoint.targetValue !== undefined) {
|
|
621
|
-
const resBundle =
|
|
627
|
+
const resBundle = (Core as CoreEx).getLibraryResourceBundle("sap.fe.core");
|
|
622
628
|
oCardManifest["sap.card"].header.sideIndicators = [
|
|
623
629
|
{
|
|
624
630
|
title: resBundle.getText("C_KPICARD_INDICATOR_TARGET"),
|
|
@@ -665,7 +671,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
665
671
|
});
|
|
666
672
|
}
|
|
667
673
|
|
|
668
|
-
protected initNavigationInfo(kpiDefinition: KPIDefinition, oKPIModel: JSONModel
|
|
674
|
+
protected initNavigationInfo(kpiDefinition: KPIDefinition, oKPIModel: JSONModel, oShellService: any): Promise<void> {
|
|
669
675
|
// Add navigation
|
|
670
676
|
if (kpiDefinition.navigation) {
|
|
671
677
|
return getNavigationParameters(kpiDefinition.navigation, oShellService).then(oNavInfo => {
|
|
@@ -683,7 +689,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
683
689
|
}
|
|
684
690
|
}
|
|
685
691
|
|
|
686
|
-
@
|
|
692
|
+
@methodOverride()
|
|
687
693
|
public onInit(): void {
|
|
688
694
|
this.aKPIDefinitions = this.getKPIData();
|
|
689
695
|
|
|
@@ -712,9 +718,9 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
712
718
|
}
|
|
713
719
|
}
|
|
714
720
|
|
|
715
|
-
@
|
|
721
|
+
@methodOverride()
|
|
716
722
|
public onExit(): void {
|
|
717
|
-
const oKPIModel = this.getView().getModel("kpiModel") as JSONModel
|
|
723
|
+
const oKPIModel = this.getView().getModel("kpiModel") as JSONModel;
|
|
718
724
|
|
|
719
725
|
if (oKPIModel) {
|
|
720
726
|
oKPIModel.destroy();
|
|
@@ -737,7 +743,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
737
743
|
}
|
|
738
744
|
}
|
|
739
745
|
|
|
740
|
-
private updateDatapointValueAndCurrency(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel
|
|
746
|
+
private updateDatapointValueAndCurrency(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
|
|
741
747
|
const currentLocale = new Locale(
|
|
742
748
|
sap.ui
|
|
743
749
|
.getCore()
|
|
@@ -814,7 +820,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
814
820
|
}
|
|
815
821
|
}
|
|
816
822
|
|
|
817
|
-
private updateDatapointCriticality(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel
|
|
823
|
+
private updateDatapointCriticality(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
|
|
818
824
|
const rawValue = Number.parseFloat(kpiContext.getProperty(kpiDefinition.datapoint.propertyPath));
|
|
819
825
|
|
|
820
826
|
let criticalityValue = MessageType.None;
|
|
@@ -856,7 +862,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
856
862
|
);
|
|
857
863
|
}
|
|
858
864
|
|
|
859
|
-
private updateDatapointTrend(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel
|
|
865
|
+
private updateDatapointTrend(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
|
|
860
866
|
const rawValue = Number.parseFloat(kpiContext.getProperty(kpiDefinition.datapoint.propertyPath));
|
|
861
867
|
|
|
862
868
|
let trendValue = "None";
|
|
@@ -891,7 +897,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
891
897
|
oKPIModel.setProperty("/" + kpiDefinition.id + "/manifest/sap.card/data/json/trend", trendValue);
|
|
892
898
|
}
|
|
893
899
|
|
|
894
|
-
private updateTargetValue(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel
|
|
900
|
+
private updateTargetValue(kpiDefinition: KPIDefinition, kpiContext: Context, oKPIModel: JSONModel) {
|
|
895
901
|
if (kpiDefinition.datapoint.targetValue === undefined && kpiDefinition.datapoint.targetPath === undefined) {
|
|
896
902
|
return; // No target set for the KPI
|
|
897
903
|
}
|
|
@@ -958,7 +964,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
958
964
|
* @param loadFull If not true, loads only data for the KPI tag
|
|
959
965
|
* @returns {Promise} Returns the promise that is resolved when data is loaded.
|
|
960
966
|
*/
|
|
961
|
-
protected loadKPITagData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel
|
|
967
|
+
protected loadKPITagData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel, loadFull?: boolean): any {
|
|
962
968
|
// If loadFull=false, then we're just loading data for the tag and we use the "$auto.LongRunners" groupID
|
|
963
969
|
// If loadFull=true, we're loading data for the whole KPI (tag + card) and we use the default ("$auto") groupID
|
|
964
970
|
const oListBinding = loadFull
|
|
@@ -1041,7 +1047,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
1041
1047
|
* @param {JSONModel} oKPIModel The JSON model where the data will be stored
|
|
1042
1048
|
* @returns {Promise} Returns the promise that is resolved when data is loaded.
|
|
1043
1049
|
*/
|
|
1044
|
-
protected loadKPICardData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel
|
|
1050
|
+
protected loadKPICardData(kpiDefinition: KPIDefinition, oMainModel: ODataModel, oKPIModel: JSONModel): any {
|
|
1045
1051
|
const oListBinding = oMainModel.bindList("/" + kpiDefinition.entitySet);
|
|
1046
1052
|
const oGroup: Record<string, Object> = {};
|
|
1047
1053
|
const oAggregate: Record<string, Object> = {};
|
|
@@ -1102,8 +1108,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
1102
1108
|
protected getPopover(oKPITag: GenericTag): Promise<Popover> {
|
|
1103
1109
|
if (!this.oPopover) {
|
|
1104
1110
|
return new Promise((resolve, reject) => {
|
|
1105
|
-
|
|
1106
|
-
.getCore()
|
|
1111
|
+
(Core as CoreEx)
|
|
1107
1112
|
.loadLibrary("sap/ui/integration", { async: true })
|
|
1108
1113
|
.then(() => {
|
|
1109
1114
|
sap.ui.require(["sap/ui/integration/widgets/Card", "sap/ui/integration/Host"], (Card: any, Host: any) => {
|
|
@@ -1131,8 +1136,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
1131
1136
|
});
|
|
1132
1137
|
this.oCard.setHost(oHost as any);
|
|
1133
1138
|
|
|
1134
|
-
this.oPopover = new Popover({
|
|
1135
|
-
id: "kpi-Popover",
|
|
1139
|
+
this.oPopover = new Popover("kpi-Popover", {
|
|
1136
1140
|
showHeader: false,
|
|
1137
1141
|
placement: "Auto",
|
|
1138
1142
|
content: [this.oCard]
|
|
@@ -1152,9 +1156,9 @@ class KPIManagementControllerExtension extends ControllerExtension {
|
|
|
1152
1156
|
}
|
|
1153
1157
|
}
|
|
1154
1158
|
|
|
1155
|
-
@
|
|
1159
|
+
@publicExtension()
|
|
1156
1160
|
public onKPIPressed(oKPITag: any, kpiID: string): void {
|
|
1157
|
-
const oKPIModel = oKPITag.getModel("kpiModel") as JSONModel
|
|
1161
|
+
const oKPIModel = oKPITag.getModel("kpiModel") as JSONModel;
|
|
1158
1162
|
|
|
1159
1163
|
if (this.aKPIDefinitions && this.aKPIDefinitions.length) {
|
|
1160
1164
|
const kpiDefinition = this.aKPIDefinitions.find(function(oDef) {
|
|
@@ -1,79 +1,144 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* SAPUI5
|
|
3
|
-
*
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
);
|
|
5
|
+
sap.ui.define(["sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "sap/fe/core/helpers/MassEditHelper", "sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/fe/core/helpers/ModelHelper", "sap/m/MessageBox"], function (ControllerExtension, OverrideExecution, MassEditHelper, Log, ClassSupport, ModelHelper, MessageBox) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
|
|
9
|
+
|
|
10
|
+
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
11
|
+
var publicExtension = ClassSupport.publicExtension;
|
|
12
|
+
var privateExtension = ClassSupport.privateExtension;
|
|
13
|
+
var finalExtension = ClassSupport.finalExtension;
|
|
14
|
+
var extensible = ClassSupport.extensible;
|
|
15
|
+
|
|
16
|
+
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
17
|
+
|
|
18
|
+
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
19
|
+
|
|
20
|
+
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @class Controller extension providing hooks for the mass edit in a table
|
|
24
|
+
*
|
|
25
|
+
* @name sap.fe.core.controllerextensions.MassEdit
|
|
26
|
+
* @hideconstructor
|
|
27
|
+
* @private
|
|
28
|
+
*/
|
|
29
|
+
var MassEdit = (_dec = defineUI5Class("sap.fe.core.controllerextensions.MassEdit"), _dec2 = publicExtension(), _dec3 = finalExtension(), _dec4 = publicExtension(), _dec5 = finalExtension(), _dec6 = privateExtension(), _dec7 = extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
|
|
30
|
+
_inheritsLoose(MassEdit, _ControllerExtension);
|
|
31
|
+
|
|
32
|
+
function MassEdit() {
|
|
33
|
+
return _ControllerExtension.apply(this, arguments) || this;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var _proto = MassEdit.prototype;
|
|
37
|
+
|
|
38
|
+
_proto.getMessageDetailForNonEditable = function getMessageDetailForNonEditable(oResourceBundle) {
|
|
39
|
+
var sHeader = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_HEADER"),
|
|
40
|
+
sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
|
|
41
|
+
sReasonDraft = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_DRAFT"),
|
|
42
|
+
sReasonNonEditable = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE");
|
|
43
|
+
return "<p><strong>" + sHeader + "</strong></p>\n" + "<p>" + sReasonGroup + "</p>\n" + "<ul>" + "<li>" + sReasonDraft + "</li>" + "<li>" + sReasonNonEditable + "</li>" + "</ul>";
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
_proto._openConfirmDialog = function _openConfirmDialog(oTable, aContexts, iSelectedContexts) {
|
|
47
|
+
var _this = this;
|
|
48
|
+
|
|
49
|
+
var iUpdatableContexts = (aContexts || []).length;
|
|
50
|
+
return new Promise(function (resolve) {
|
|
51
|
+
_this.getView().getModel("sap.fe.i18n").getResourceBundle().then(function (oResourceBundle) {
|
|
52
|
+
var sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
|
|
53
|
+
sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
|
|
54
|
+
iNonEditable = iSelectedContexts - iUpdatableContexts,
|
|
55
|
+
sMessage = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE", [iNonEditable, iSelectedContexts, iUpdatableContexts]),
|
|
56
|
+
sPath = oTable.data("targetCollectionPath"),
|
|
57
|
+
oMetaModel = oTable.getModel().getMetaModel(),
|
|
58
|
+
bIsDraft = ModelHelper.isDraftSupported(oMetaModel, sPath),
|
|
59
|
+
bDisplayMode = oTable.data("displayModePropertyBinding") === "true",
|
|
60
|
+
sMessageDetail = bIsDraft && bDisplayMode && _this.getMessageDetailForNonEditable(oResourceBundle);
|
|
61
|
+
|
|
62
|
+
MessageBox.warning(sMessage, {
|
|
63
|
+
details: sMessageDetail,
|
|
64
|
+
actions: [sEditButton, sCancelButton],
|
|
65
|
+
emphasizedAction: sEditButton,
|
|
66
|
+
contentWidth: "100px",
|
|
67
|
+
onClose: function (sSelection) {
|
|
68
|
+
var aContextsForEdit = [];
|
|
69
|
+
|
|
70
|
+
if (sSelection === sEditButton) {
|
|
71
|
+
Log.info("Mass Edit: Confirmed to edit ", iUpdatableContexts.toString(), " selections.");
|
|
72
|
+
aContextsForEdit = aContexts;
|
|
73
|
+
} else if (sSelection === sCancelButton) {
|
|
74
|
+
Log.info("Mass Edit: Cancelled.");
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
resolve(aContextsForEdit);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}).catch(function (error) {
|
|
81
|
+
Log.error(error);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
_proto._confirmContexts = function _confirmContexts(oTable, aContexts) {
|
|
87
|
+
var oInternalModelContext = oTable.getBindingContext("internal"),
|
|
88
|
+
iSelectedContexts = +oInternalModelContext.getProperty("numberOfSelectedContexts") || 0;
|
|
89
|
+
aContexts = aContexts || [];
|
|
90
|
+
|
|
91
|
+
if (aContexts.length && aContexts.length !== iSelectedContexts) {
|
|
92
|
+
return this._openConfirmDialog(oTable, aContexts, iSelectedContexts);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return Promise.resolve(aContexts);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The following operations are performed by method openMassEditDialog:
|
|
99
|
+
* => Opens the mass edit dialog.
|
|
100
|
+
* => Implements the save and cancel functionality.
|
|
101
|
+
* => Sets the runtime model to the dialog.
|
|
102
|
+
* => Sets the static model's context to the dialog.
|
|
103
|
+
*
|
|
104
|
+
* @param {sap.ui.mdc.Table} oTable Instance of the table
|
|
105
|
+
* @returns {Promise} A promise that resolves on open of the mass edit dialog.
|
|
106
|
+
* @private
|
|
107
|
+
*/
|
|
108
|
+
;
|
|
109
|
+
|
|
110
|
+
_proto.openMassEditDialog = function openMassEditDialog(oTable) {
|
|
111
|
+
var oController = this.getView().getController(),
|
|
112
|
+
pContextsForEdit = this.fetchContextsForEdit(oTable);
|
|
113
|
+
return pContextsForEdit.then(this._confirmContexts.bind(this, oTable)).then(function (aContexts) {
|
|
114
|
+
return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
|
|
115
|
+
}).then(function (oDialog) {
|
|
116
|
+
if (oDialog) {
|
|
117
|
+
oDialog.open();
|
|
118
|
+
}
|
|
119
|
+
}).catch(function (oError) {
|
|
120
|
+
Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Returns a promise that resolves to the contexts for mass edit.
|
|
125
|
+
* @function
|
|
126
|
+
* @param {sap.ui.mdc.Table} oTable Table for mass edit.
|
|
127
|
+
* @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
|
|
128
|
+
* @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
|
|
129
|
+
* @private
|
|
130
|
+
**/
|
|
131
|
+
;
|
|
132
|
+
|
|
133
|
+
_proto.fetchContextsForEdit = function fetchContextsForEdit(oTable) {
|
|
134
|
+
//To be overridden by the application
|
|
135
|
+
var oInternalModelContext = oTable.getBindingContext("internal"),
|
|
136
|
+
aSelectedContexts = oInternalModelContext.getProperty("updatableContexts") || [];
|
|
137
|
+
return Promise.resolve(aSelectedContexts);
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
return MassEdit;
|
|
141
|
+
}(ControllerExtension), (_applyDecoratedDescriptor(_class2.prototype, "getMessageDetailForNonEditable", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "getMessageDetailForNonEditable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "openMassEditDialog", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "openMassEditDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "fetchContextsForEdit", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "fetchContextsForEdit"), _class2.prototype)), _class2)) || _class);
|
|
142
|
+
return MassEdit;
|
|
143
|
+
}, false);
|
|
144
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiZGVmaW5lVUk1Q2xhc3MiLCJwdWJsaWNFeHRlbnNpb24iLCJmaW5hbEV4dGVuc2lvbiIsInByaXZhdGVFeHRlbnNpb24iLCJleHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLGNBQWMsQ0FBQywyQ0FBRCxDLFVBRWJDLGVBQWUsRSxVQUNmQyxjQUFjLEUsVUEyRmRELGVBQWUsRSxVQUNmQyxjQUFjLEUsVUE0QmRDLGdCQUFnQixFLFVBQ2hCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFuQixDOzs7Ozs7Ozs7V0F4SFhDLDhCLEdBRkEsd0NBRStCQyxlQUYvQixFQUVnRTtBQUMvRCxVQUFNQyxPQUFPLEdBQUdELGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBQWhCO0FBQUEsVUFDQ0MsWUFBWSxHQUFHSCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLDJDQUF4QixDQURoQjtBQUFBLFVBRUNFLFlBQVksR0FBR0osZUFBZSxDQUFDRSxPQUFoQixDQUF3QixpREFBeEIsQ0FGaEI7QUFBQSxVQUdDRyxrQkFBa0IsR0FBR0wsZUFBZSxDQUFDRSxPQUFoQixDQUF3Qix3REFBeEIsQ0FIdEI7QUFLQSxhQUNDLGdCQUNBRCxPQURBLEdBRUEsaUJBRkEsR0FHQSxLQUhBLEdBSUFFLFlBSkEsR0FLQSxRQUxBLEdBTUEsTUFOQSxHQU9BLE1BUEEsR0FRQUMsWUFSQSxHQVNBLE9BVEEsR0FVQSxNQVZBLEdBV0FDLGtCQVhBLEdBWUEsT0FaQSxHQWFBLE9BZEQ7QUFnQkEsSzs7V0FFREMsa0IsR0FBQSw0QkFBbUJDLE1BQW5CLEVBQWtDQyxTQUFsQyxFQUF3REMsaUJBQXhELEVBQW1GO0FBQUE7O0FBQ2xGLFVBQU1DLGtC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VUFBTXVDLHFCQUFxQixHQUFHdkMsTUFBTSxDQUFDd0MsaUJBQVAsQ0FBeUIsVUFBekIsQ0FBOUI7QUFBQSxVQUNDYSxpQkFBaUIsR0FBR2QscUJBQXFCLENBQUNFLFdBQXRCLENBQWtDLG1CQUFsQyxLQUEwRCxFQUQvRTtBQUdBLGFBQU9wQyxPQUFPLENBQUNDLE9BQVIsQ0FBZ0IrQyxpQkFBaEIsQ0FBUDtBQUNBLEs7OztJQWxJcUJDLG1CO1NBcUlSdEUsUSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IE1hc3NFZGl0SGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01hc3NFZGl0SGVscGVyXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBUYWJsZSBmcm9tIFwic2FwL3VpL21kYy9UYWJsZVwiO1xuaW1wb3J0IHsgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIHByaXZhdGVFeHRlbnNpb24sIHB1YmxpY0V4dGVuc2lvbiwgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBNb2RlbEhlbHBlciwgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IFJlc291cmNlQnVuZGxlIGZyb20gXCJzYXAvYmFzZS9pMThuL1Jlc291cmNlQnVuZGxlXCI7XG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBSZXNvdXJjZU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvcmVzb3VyY2UvUmVzb3VyY2VNb2RlbFwiO1xuaW1wb3J0IFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuXG4vKipcbiAqIEBjbGFzcyBDb250cm9sbGVyIGV4dGVuc2lvbiBwcm92aWRpbmcgaG9va3MgZm9yIHRoZSBtYXNzIGVkaXQgaW4gYSB0YWJsZVxuICpcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLk1hc3NFZGl0XG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHJpdmF0ZVxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFwiKVxuY2xhc3MgTWFzc0VkaXQgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGU6IFJlc291cmNlQnVuZGxlKSB7XG5cdFx0Y29uc3Qgc0hlYWRlciA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9IRUFERVJcIiksXG5cdFx0XHRzUmVhc29uR3JvdXAgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OXCIpLFxuXHRcdFx0c1JlYXNvbkRyYWZ0ID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTl9EUkFGVFwiKSxcblx0XHRcdHNSZWFzb25Ob25FZGl0YWJsZSA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05fTk9OX0VESVRBQkxFXCIpO1xuXG5cdFx0cmV0dXJuIChcblx0XHRcdFwiPHA+PHN0cm9uZz5cIiArXG5cdFx0XHRzSGVhZGVyICtcblx0XHRcdFwiPC9zdHJvbmc+PC9wPlxcblwiICtcblx0XHRcdFwiPHA+XCIgK1xuXHRcdFx0c1JlYXNvbkdyb3VwICtcblx0XHRcdFwiPC9wPlxcblwiICtcblx0XHRcdFwiPHVsPlwiICtcblx0XHRcdFwiPGxpPlwiICtcblx0XHRcdHNSZWFzb25EcmFmdCArXG5cdFx0XHRcIjwvbGk+XCIgK1xuXHRcdFx0XCI8bGk+XCIgK1xuXHRcdFx0c1JlYXNvbk5vbkVkaXRhYmxlICtcblx0XHRcdFwiPC9saT5cIiArXG5cdFx0XHRcIjwvdWw+XCJcblx0XHQpO1xuXHR9XG5cblx0X29wZW5Db25maXJtRGlhbG9nKG9UYWJsZTogVGFibGUsIGFDb250ZXh0czogQ29udGV4dFtdLCBpU2VsZWN0ZWRDb250ZXh0czogbnVtYmVyKSB7XG5cdFx0Y29uc3QgaVVwZGF0YWJsZUNvbnRleHRzID0gKGFDb250ZXh0cyB8fCBbXSkubGVuZ3RoO1xuXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuXHRcdFx0KCh0aGlzLmdldFZpZXcoKS5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpIGFzIFJlc291cmNlTW9kZWwpLmdldFJlc291cmNlQnVuZGxlKCkgYXMgUHJvbWlzZTxSZXNvdXJjZUJ1bmRsZT4pXG5cdFx0XHRcdC50aGVuKG9SZXNvdXJjZUJ1bmRsZSA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgc0VkaXRCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fQlVUVE9OX1RFWFRcIiksXG5cdFx0XHRcdFx0XHRzQ2FuY2VsQnV0dG9uID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DQU5DRUxfQlVUVE9OX1RFWFRcIiksXG5cdFx0XHRcdFx0XHRpTm9uRWRpdGFibGUgPSBpU2VsZWN0ZWRDb250ZXh0cyAtIGlVcGRhdGFibGVDb250ZXh0cyxcblx0XHRcdFx0XHRcdHNNZXNzYWdlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VcIiwgW1xuXHRcdFx0XHRcdFx0XHRpTm9uRWRpdGFibGUsXG5cdFx0XHRcdFx0XHRcdGlTZWxlY3RlZENvbnRleHRzLFxuXHRcdFx0XHRcdFx0XHRpVXBkYXRhYmxlQ29udGV4dHNcblx0XHRcdFx0XHRcdF0pLFxuXHRcdFx0XHRcdFx0c1BhdGggPSBvVGFibGUuZGF0YShcInRhcmdldENvbGxlY3Rpb25QYXRoXCIpLFxuXHRcdFx0XHRcdFx0b01ldGFNb2RlbCA9IG9UYWJsZS5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpLFxuXHRcdFx0XHRcdFx0YklzRHJhZnQgPSBNb2RlbEhlbHBlci5pc0RyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwsIHNQYXRoKSxcblx0XHRcdFx0XHRcdGJEaXNwbGF5TW9kZSA9IG9UYWJsZS5kYXRhKFwiZGlzcGxheU1vZGVQcm9wZXJ0eUJpbmRpbmdcIikgPT09IFwidHJ1ZVwiLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2VEZXRhaWwgPSBiSXNEcmFmdCAmJiBiRGlzcGxheU1vZGUgJiYgdGhpcy5nZXRNZXNzYWdlRGV0YWlsRm9yTm9uRWRpdGFibGUob1Jlc291cmNlQnVuZGxlKTtcblxuXHRcdFx0XHRcdE1lc3NhZ2VCb3gud2FybmluZyhzTWVzc2FnZSwge1xuXHRcdFx0XHRcdFx0ZGV0YWlsczogc01lc3NhZ2VEZXRhaWwsXG5cdFx0XHRcdFx0XHRhY3Rpb25zOiBbc0VkaXRCdXR0b24sIHNDYW5jZWxCdXR0b25dLFxuXHRcdFx0XHRcdFx0ZW1waGFzaXplZEFjdGlvbjogc0VkaXRCdXR0b24sXG5cdFx0XHRcdFx0XHRjb250ZW50V2lkdGg6IFwiMTAwcHhcIixcblx0XHRcdFx0XHRcdG9uQ2xvc2U6IGZ1bmN0aW9uKHNTZWxlY3Rpb246IHN0cmluZykge1xuXHRcdFx0XHRcdFx0XHRsZXQgYUNvbnRleHRzRm9yRWRpdDogYW55W10gPSBbXTtcblx0XHRcdFx0XHRcdFx0aWYgKHNTZWxlY3Rpb24gPT09IHNFZGl0QnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENvbmZpcm1lZCB0byBlZGl0IFwiLCBpVXBkYXRhYmxlQ29udGV4dHMudG9TdHJpbmcoKSwgXCIgc2VsZWN0aW9ucy5cIik7XG5cdFx0XHRcdFx0XHRcdFx0YUNvbnRleHRzRm9yRWRpdCA9IGFDb250ZXh0cztcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChzU2VsZWN0aW9uID09PSBzQ2FuY2VsQnV0dG9uKSB7XG5cdFx0XHRcdFx0XHRcdFx0TG9nLmluZm8oXCJNYXNzIEVkaXQ6IENhbmNlbGxlZC5cIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShhQ29udGV4dHNGb3JFZGl0KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGFzIGFueSk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbihlcnJvcikge1xuXHRcdFx0XHRcdExvZy5lcnJvcihlcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0X2NvbmZpcm1Db250ZXh0cyhvVGFibGU6IFRhYmxlLCBhQ29udGV4dHM6IENvbnRleHRbXSkge1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0aVNlbGVjdGVkQ29udGV4dHMgPSArb0ludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIpIHx8IDA7XG5cblx0XHRhQ29udGV4dHMgPSBhQ29udGV4dHMgfHwgW107XG5cblx0XHRpZiAoYUNvbnRleHRzLmxlbmd0aCAmJiBhQ29udGV4dHMubGVuZ3RoICE9PSBpU2VsZWN0ZWRDb250ZXh0cykge1xuXHRcdFx0cmV0dXJuIHRoaXMuX29wZW5Db25maXJtRGlhbG9nKG9UYWJsZSwgYUNvbnRleHRzLCBpU2VsZWN0ZWRDb250ZXh0cyk7XG5cdFx0fVxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYUNvbnRleHRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBieSBtZXRob2Qgb3Blbk1hc3NFZGl0RGlhbG9nOlxuXHQgKiA9PiBPcGVucyB0aGUgbWFzcyBlZGl0IGRpYWxvZy5cblx0ICogPT4gSW1wbGVtZW50cyB0aGUgc2F2ZSBhbmQgY2FuY2VsIGZ1bmN0aW9uYWxpdHkuXG5cdCAqID0+IFNldHMgdGhlIHJ1bnRpbWUgbW9kZWwgdG8gdGhlIGRpYWxvZy5cblx0ICogPT4gU2V0cyB0aGUgc3RhdGljIG1vZGVsJ3MgY29udGV4dCB0byB0aGUgZGlhbG9nLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3NhcC51aS5tZGMuVGFibGV9IG9UYWJsZSBJbnN0YW5jZSBvZiB0aGUgdGFibGVcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIG9uIG9wZW4gb2YgdGhlIG1hc3MgZWRpdCBkaWFsb2cuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0b3Blbk1hc3NFZGl0RGlhbG9nKG9UYWJsZTogVGFibGUpIHtcblx0XHRjb25zdCBvQ29udHJvbGxlciA9IHRoaXMuZ2V0VmlldygpLmdldENvbnRyb2xsZXIoKSBhcyBQYWdlQ29udHJvbGxlcixcblx0XHRcdHBDb250ZXh0c0ZvckVkaXQgPSB0aGlzLmZldGNoQ29udGV4dHNGb3JFZGl0KG9UYWJsZSk7XG5cblx0XHRyZXR1cm4gcENvbnRleHRzRm9yRWRpdFxuXHRcdFx0LnRoZW4odGhpcy5fY29uZmlybUNvbnRleHRzLmJpbmQodGhpcywgb1RhYmxlKSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uKGFDb250ZXh0czogYW55KSB7XG5cdFx0XHRcdHJldHVybiBhQ29udGV4dHMgJiYgYUNvbnRleHRzLmxlbmd0aCA+IDAgPyBNYXNzRWRpdEhlbHBlci5jcmVhdGVEaWFsb2cob1RhYmxlLCBhQ29udGV4dHMsIG9Db250cm9sbGVyKSA6IFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uKG9EaWFsb2c/OiBhbnkpIHtcblx0XHRcdFx0aWYgKG9EaWFsb2cpIHtcblx0XHRcdFx0XHRvRGlhbG9nLm9wZW4oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbihvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJNYXNzIEVkaXQ6IFNvbWV0aGluZyB3ZW50IHdyb25nIGluIG1hc3MgZWRpdCBkaWFsb2cgY3JlYXRpb24uXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBjb250ZXh0cyBmb3IgbWFzcyBlZGl0LlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQHBhcmFtIHtzYXAudWkubWRjLlRhYmxlfSBvVGFibGUgVGFibGUgZm9yIG1hc3MgZWRpdC5cblx0ICogQGFsaWFzIHNhcC5mZS5jb3JlLmNvbnRybGxlcmV4dGVuc2lvbnMuTWFzc0VkaXQjZmV0Y2hDb250ZXh0c0ZvckVkaXRcblx0ICogQHJldHVybnMge1Byb21pc2V9IEEgcHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aXRoIGFuIGFycmF5IG9mIGNvbnRleHQocykgd2hpY2ggc2hvdWxkIGJlIGNvbnNpZGVyZWQgZm9yIG1hc3MgZWRpdC5cblx0ICogQHByaXZhdGVcblx0ICoqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHRmZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGU6IFRhYmxlKSB7XG5cdFx0Ly9UbyBiZSBvdmVycmlkZGVuIGJ5IHRoZSBhcHBsaWNhdGlvblxuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9UYWJsZS5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0LFxuXHRcdFx0YVNlbGVjdGVkQ29udGV4dHMgPSBvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ1cGRhdGFibGVDb250ZXh0c1wiKSB8fCBbXTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoYVNlbGVjdGVkQ29udGV4dHMpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IE1hc3NFZGl0O1xuIl19
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
2
|
+
import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
|
|
3
|
+
import MassEditHelper from "sap/fe/core/helpers/MassEditHelper";
|
|
4
|
+
import Log from "sap/base/Log";
|
|
5
|
+
import Table from "sap/ui/mdc/Table";
|
|
6
|
+
import { extensible, finalExtension, privateExtension, publicExtension, defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
|
|
7
|
+
import ModelHelper, { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
8
|
+
import MessageBox from "sap/m/MessageBox";
|
|
9
|
+
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
10
|
+
import Context from "sap/ui/model/Context";
|
|
11
|
+
import ResourceModel from "sap/ui/model/resource/ResourceModel";
|
|
12
|
+
import PageController from "sap/fe/core/PageController";
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @class Controller extension providing hooks for the mass edit in a table
|
|
16
|
+
*
|
|
17
|
+
* @name sap.fe.core.controllerextensions.MassEdit
|
|
18
|
+
* @hideconstructor
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
@defineUI5Class("sap.fe.core.controllerextensions.MassEdit")
|
|
22
|
+
class MassEdit extends ControllerExtension {
|
|
23
|
+
@publicExtension()
|
|
24
|
+
@finalExtension()
|
|
25
|
+
getMessageDetailForNonEditable(oResourceBundle: ResourceBundle) {
|
|
26
|
+
const sHeader = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_HEADER"),
|
|
27
|
+
sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
|
|
28
|
+
sReasonDraft = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_DRAFT"),
|
|
29
|
+
sReasonNonEditable = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE");
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
"<p><strong>" +
|
|
33
|
+
sHeader +
|
|
34
|
+
"</strong></p>\n" +
|
|
35
|
+
"<p>" +
|
|
36
|
+
sReasonGroup +
|
|
37
|
+
"</p>\n" +
|
|
38
|
+
"<ul>" +
|
|
39
|
+
"<li>" +
|
|
40
|
+
sReasonDraft +
|
|
41
|
+
"</li>" +
|
|
42
|
+
"<li>" +
|
|
43
|
+
sReasonNonEditable +
|
|
44
|
+
"</li>" +
|
|
45
|
+
"</ul>"
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
_openConfirmDialog(oTable: Table, aContexts: Context[], iSelectedContexts: number) {
|
|
50
|
+
const iUpdatableContexts = (aContexts || []).length;
|
|
51
|
+
|
|
52
|
+
return new Promise(resolve => {
|
|
53
|
+
((this.getView().getModel("sap.fe.i18n") as ResourceModel).getResourceBundle() as Promise<ResourceBundle>)
|
|
54
|
+
.then(oResourceBundle => {
|
|
55
|
+
const sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
|
|
56
|
+
sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
|
|
57
|
+
iNonEditable = iSelectedContexts - iUpdatableContexts,
|
|
58
|
+
sMessage = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE", [
|
|
59
|
+
iNonEditable,
|
|
60
|
+
iSelectedContexts,
|
|
61
|
+
iUpdatableContexts
|
|
62
|
+
]),
|
|
63
|
+
sPath = oTable.data("targetCollectionPath"),
|
|
64
|
+
oMetaModel = oTable.getModel().getMetaModel(),
|
|
65
|
+
bIsDraft = ModelHelper.isDraftSupported(oMetaModel, sPath),
|
|
66
|
+
bDisplayMode = oTable.data("displayModePropertyBinding") === "true",
|
|
67
|
+
sMessageDetail = bIsDraft && bDisplayMode && this.getMessageDetailForNonEditable(oResourceBundle);
|
|
68
|
+
|
|
69
|
+
MessageBox.warning(sMessage, {
|
|
70
|
+
details: sMessageDetail,
|
|
71
|
+
actions: [sEditButton, sCancelButton],
|
|
72
|
+
emphasizedAction: sEditButton,
|
|
73
|
+
contentWidth: "100px",
|
|
74
|
+
onClose: function(sSelection: string) {
|
|
75
|
+
let aContextsForEdit: any[] = [];
|
|
76
|
+
if (sSelection === sEditButton) {
|
|
77
|
+
Log.info("Mass Edit: Confirmed to edit ", iUpdatableContexts.toString(), " selections.");
|
|
78
|
+
aContextsForEdit = aContexts;
|
|
79
|
+
} else if (sSelection === sCancelButton) {
|
|
80
|
+
Log.info("Mass Edit: Cancelled.");
|
|
81
|
+
}
|
|
82
|
+
resolve(aContextsForEdit);
|
|
83
|
+
}
|
|
84
|
+
} as any);
|
|
85
|
+
})
|
|
86
|
+
.catch(function(error) {
|
|
87
|
+
Log.error(error);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
_confirmContexts(oTable: Table, aContexts: Context[]) {
|
|
93
|
+
const oInternalModelContext = oTable.getBindingContext("internal") as InternalModelContext,
|
|
94
|
+
iSelectedContexts = +oInternalModelContext.getProperty("numberOfSelectedContexts") || 0;
|
|
95
|
+
|
|
96
|
+
aContexts = aContexts || [];
|
|
97
|
+
|
|
98
|
+
if (aContexts.length && aContexts.length !== iSelectedContexts) {
|
|
99
|
+
return this._openConfirmDialog(oTable, aContexts, iSelectedContexts);
|
|
100
|
+
}
|
|
101
|
+
return Promise.resolve(aContexts);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The following operations are performed by method openMassEditDialog:
|
|
106
|
+
* => Opens the mass edit dialog.
|
|
107
|
+
* => Implements the save and cancel functionality.
|
|
108
|
+
* => Sets the runtime model to the dialog.
|
|
109
|
+
* => Sets the static model's context to the dialog.
|
|
110
|
+
*
|
|
111
|
+
* @param {sap.ui.mdc.Table} oTable Instance of the table
|
|
112
|
+
* @returns {Promise} A promise that resolves on open of the mass edit dialog.
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
@publicExtension()
|
|
116
|
+
@finalExtension()
|
|
117
|
+
openMassEditDialog(oTable: Table) {
|
|
118
|
+
const oController = this.getView().getController() as PageController,
|
|
119
|
+
pContextsForEdit = this.fetchContextsForEdit(oTable);
|
|
120
|
+
|
|
121
|
+
return pContextsForEdit
|
|
122
|
+
.then(this._confirmContexts.bind(this, oTable))
|
|
123
|
+
.then(function(aContexts: any) {
|
|
124
|
+
return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
|
|
125
|
+
})
|
|
126
|
+
.then(function(oDialog?: any) {
|
|
127
|
+
if (oDialog) {
|
|
128
|
+
oDialog.open();
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
.catch(function(oError: any) {
|
|
132
|
+
Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Returns a promise that resolves to the contexts for mass edit.
|
|
138
|
+
* @function
|
|
139
|
+
* @param {sap.ui.mdc.Table} oTable Table for mass edit.
|
|
140
|
+
* @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
|
|
141
|
+
* @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
|
|
142
|
+
* @private
|
|
143
|
+
**/
|
|
144
|
+
@privateExtension()
|
|
145
|
+
@extensible(OverrideExecution.After)
|
|
146
|
+
fetchContextsForEdit(oTable: Table) {
|
|
147
|
+
//To be overridden by the application
|
|
148
|
+
const oInternalModelContext = oTable.getBindingContext("internal") as InternalModelContext,
|
|
149
|
+
aSelectedContexts = oInternalModelContext.getProperty("updatableContexts") || [];
|
|
150
|
+
|
|
151
|
+
return Promise.resolve(aSelectedContexts);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export default MassEdit;
|