@sapui5/sap.fe.core 1.99.0 → 1.100.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 -2
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AnnotationHelper.js +1 -69
- package/src/sap/fe/core/AnnotationHelper.ts +0 -70
- package/src/sap/fe/core/AppComponent.js +388 -399
- package/src/sap/fe/core/AppComponent.ts +403 -0
- package/src/sap/fe/core/AppStateHandler.js +127 -158
- package/src/sap/fe/core/BaseController.js +82 -58
- package/src/sap/fe/core/BaseController.ts +68 -0
- package/src/sap/fe/core/CommonUtils.js +111 -20
- package/src/sap/fe/core/CommonUtils.ts +131 -32
- package/src/sap/fe/core/ExtensionAPI.js +278 -274
- package/src/sap/fe/core/ExtensionAPI.ts +250 -0
- package/src/sap/fe/core/PageController.js +157 -29
- package/src/sap/fe/core/PageController.ts +60 -32
- package/src/sap/fe/core/RouterProxy.js +694 -756
- package/src/sap/fe/core/RouterProxy.ts +11 -9
- package/src/sap/fe/core/Synchronization.js +21 -31
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +10 -3
- package/src/sap/fe/core/TemplateModel.js +20 -38
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/TransactionHelper.js +1354 -1370
- package/src/sap/fe/core/TransactionHelper.ts +33 -22
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
- package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
- package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
- package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
- package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
- package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
- package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/src/sap/fe/core/actions/draft.js +30 -68
- package/src/sap/fe/core/actions/draft.ts +44 -71
- package/src/sap/fe/core/actions/messageHandling.js +55 -36
- package/src/sap/fe/core/actions/messageHandling.ts +66 -46
- package/src/sap/fe/core/actions/operations.js +34 -15
- package/src/sap/fe/core/actions/operations.ts +48 -18
- package/src/sap/fe/core/actions/sticky.js +17 -4
- package/src/sap/fe/core/actions/sticky.ts +21 -4
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +69 -66
- package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1593 -1669
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +718 -779
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1004 -1005
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +487 -521
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +233 -244
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
- package/src/sap/fe/core/controllerextensions/PageReady.js +301 -336
- package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
- package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
- package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
- package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
- package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
- package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
- package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/src/sap/fe/core/controllerextensions/Share.js +230 -268
- package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/src/sap/fe/core/controllerextensions/SideEffects.js +592 -633
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
- package/src/sap/fe/core/controllerextensions/ViewState.js +788 -806
- package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -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/CommandExecution.js +67 -66
- package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/src/sap/fe/core/controls/ConditionalWrapper.js +90 -75
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +130 -125
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +103 -112
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
- package/src/sap/fe/core/controls/FieldWrapper.js +122 -135
- package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
- package/src/sap/fe/core/controls/FilterBar.js +162 -159
- package/src/sap/fe/core/controls/FilterBar.ts +143 -0
- package/src/sap/fe/core/controls/FormElementWrapper.js +45 -39
- package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +126 -116
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +241 -255
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +150 -141
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +74 -74
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
- package/src/sap/fe/core/converters/ConverterContext.js +348 -379
- package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
- package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
- package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
- package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +26 -12
- package/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
- package/src/sap/fe/core/converters/controls/Common/Form.js +2 -2
- package/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +130 -23
- package/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +118 -53
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +161 -207
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
- package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
- 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/Key.js +42 -57
- package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +25 -4
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +10 -4
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -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/TableFormatter.js +53 -2
- package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
- package/src/sap/fe/core/fpm/Component.js +50 -54
- package/src/sap/fe/core/fpm/Component.ts +48 -0
- package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
- package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
- package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +186 -62
- package/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js +601 -684
- package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +5 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
- package/src/sap/fe/core/library.js +426 -451
- package/src/sap/fe/core/library.support.js +22 -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 +4 -1
- package/src/sap/fe/core/messagebundle.properties +22 -5
- package/src/sap/fe/core/messagebundle_ar.properties +27 -7
- package/src/sap/fe/core/messagebundle_bg.properties +27 -7
- package/src/sap/fe/core/messagebundle_ca.properties +27 -7
- package/src/sap/fe/core/messagebundle_cs.properties +27 -7
- package/src/sap/fe/core/messagebundle_cy.properties +27 -7
- package/src/sap/fe/core/messagebundle_da.properties +27 -7
- package/src/sap/fe/core/messagebundle_de.properties +27 -7
- package/src/sap/fe/core/messagebundle_el.properties +27 -7
- package/src/sap/fe/core/messagebundle_en.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
- package/src/sap/fe/core/messagebundle_es.properties +27 -7
- package/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
- package/src/sap/fe/core/messagebundle_et.properties +27 -7
- package/src/sap/fe/core/messagebundle_fi.properties +28 -8
- package/src/sap/fe/core/messagebundle_fr.properties +28 -8
- package/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
- package/src/sap/fe/core/messagebundle_hi.properties +27 -7
- package/src/sap/fe/core/messagebundle_hr.properties +27 -7
- package/src/sap/fe/core/messagebundle_hu.properties +27 -7
- package/src/sap/fe/core/messagebundle_id.properties +27 -7
- package/src/sap/fe/core/messagebundle_it.properties +27 -7
- package/src/sap/fe/core/messagebundle_iw.properties +27 -7
- package/src/sap/fe/core/messagebundle_ja.properties +26 -6
- package/src/sap/fe/core/messagebundle_kk.properties +27 -7
- package/src/sap/fe/core/messagebundle_ko.properties +27 -7
- package/src/sap/fe/core/messagebundle_lt.properties +27 -7
- package/src/sap/fe/core/messagebundle_lv.properties +28 -8
- package/src/sap/fe/core/messagebundle_ms.properties +27 -7
- package/src/sap/fe/core/messagebundle_nl.properties +27 -7
- package/src/sap/fe/core/messagebundle_no.properties +27 -7
- package/src/sap/fe/core/messagebundle_pl.properties +27 -7
- package/src/sap/fe/core/messagebundle_pt.properties +28 -8
- package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
- package/src/sap/fe/core/messagebundle_ro.properties +27 -7
- package/src/sap/fe/core/messagebundle_ru.properties +27 -7
- package/src/sap/fe/core/messagebundle_sh.properties +27 -7
- package/src/sap/fe/core/messagebundle_sk.properties +27 -7
- package/src/sap/fe/core/messagebundle_sl.properties +27 -7
- package/src/sap/fe/core/messagebundle_sv.properties +27 -7
- package/src/sap/fe/core/messagebundle_th.properties +26 -6
- package/src/sap/fe/core/messagebundle_tr.properties +30 -10
- package/src/sap/fe/core/messagebundle_uk.properties +27 -7
- package/src/sap/fe/core/messagebundle_vi.properties +27 -7
- package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
- package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +154 -192
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +66 -92
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js +284 -339
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +67 -102
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +754 -814
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
- package/src/sap/fe/core/services/ShellServicesFactory.js +649 -736
- package/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +567 -592
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +354 -386
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.ts +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +36 -48
- package/src/sap/fe/core/templating/DataModelPathHelper.js +93 -85
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
- package/src/sap/fe/core/templating/FilterHelper.js +25 -32
- package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
- package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
- package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +32 -26
- package/src/sap/fe/core/templating/UIFormatters.ts +37 -24
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
|
|
2
|
-
import
|
|
2
|
+
import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
|
|
3
3
|
import { UI5Class, Override, Public } from "../helpers/ClassSupport";
|
|
4
4
|
import JSONModel from "sap/ui/model/json/JSONModel";
|
|
5
5
|
import ODataModel from "sap/ui/model/odata/v4/ODataModel";
|
|
6
6
|
import Context from "sap/ui/model/odata/v4/Context";
|
|
7
7
|
import Log from "sap/base/Log";
|
|
8
8
|
import { KPIChartDefinition, KPIDefinition, NavigationInfo } from "sap/fe/core/converters/controls/Common/KPI";
|
|
9
|
-
import
|
|
9
|
+
import BaseController from "sap/fe/core/BaseController";
|
|
10
10
|
import { MessageType } from "sap/fe/core/formatters/TableFormatterTypes";
|
|
11
11
|
import { FilterDefinition, RangeDefinition } from "sap/fe/core/converters/helpers/SelectionVariantHelper";
|
|
12
12
|
import NumberFormat from "sap/ui/core/format/NumberFormat";
|
|
@@ -1,172 +1,144 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
5
4
|
*/
|
|
6
|
-
sap.ui.define(
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
.then(function(oDialog) {
|
|
146
|
-
if (oDialog) {
|
|
147
|
-
oDialog.open();
|
|
148
|
-
}
|
|
149
|
-
})
|
|
150
|
-
.catch(function(oError) {
|
|
151
|
-
Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
|
|
152
|
-
});
|
|
153
|
-
},
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Returns a promise that resolves to the contexts for mass edit.
|
|
157
|
-
* @function
|
|
158
|
-
* @param {string} oTable Table for mass edit.
|
|
159
|
-
* @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
|
|
160
|
-
* @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
|
|
161
|
-
* @private
|
|
162
|
-
**/
|
|
163
|
-
fetchContextsForEdit: function(oTable) {
|
|
164
|
-
//To be overridden by the application
|
|
165
|
-
var oInternalModelContext = oTable.getBindingContext("internal"),
|
|
166
|
-
aSelectedContexts = oInternalModelContext.getProperty("updatableContexts") || [];
|
|
167
|
-
|
|
168
|
-
return Promise.resolve(aSelectedContexts);
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
);
|
|
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/controllerextensions/ControllerExtensionMetadata", "sap/fe/core/helpers/ModelHelper", "sap/m/MessageBox"], function (ControllerExtension, OverrideExecution, MassEditHelper, Log, ClassSupport, ControllerExtensionMetadata, ModelHelper, MessageBox) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _dec, _dec2, _class, _class2;
|
|
9
|
+
|
|
10
|
+
var UI5Class = ClassSupport.UI5Class;
|
|
11
|
+
var Public = ClassSupport.Public;
|
|
12
|
+
var Private = ClassSupport.Private;
|
|
13
|
+
var Final = ClassSupport.Final;
|
|
14
|
+
var Extensible = ClassSupport.Extensible;
|
|
15
|
+
|
|
16
|
+
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _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 = UI5Class("sap.fe.core.controllerextensions.MassEdit", ControllerExtensionMetadata), _dec2 = Extensible(OverrideExecution.After), _dec(_class = (_class2 = /*#__PURE__*/function (_ControllerExtension) {
|
|
30
|
+
_inherits(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", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "getMessageDetailForNonEditable"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "openMassEditDialog", [Public, Final], Object.getOwnPropertyDescriptor(_class2.prototype, "openMassEditDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "fetchContextsForEdit", [Private, _dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "fetchContextsForEdit"), _class2.prototype)), _class2)) || _class);
|
|
142
|
+
return MassEdit;
|
|
143
|
+
}, false);
|
|
144
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hc3NFZGl0LnRzIl0sIm5hbWVzIjpbIk1hc3NFZGl0IiwiVUk1Q2xhc3MiLCJDb250cm9sbGVyRXh0ZW5zaW9uTWV0YWRhdGEiLCJFeHRlbnNpYmxlIiwiT3ZlcnJpZGVFeGVjdXRpb24iLCJBZnRlciIsImdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZSIsIm9SZXNvdXJjZUJ1bmRsZSIsInNIZWFkZXIiLCJnZXRUZXh0Iiwic1JlYXNvbkdyb3VwIiwic1JlYXNvbkRyYWZ0Iiwic1JlYXNvbk5vbkVkaXRhYmxlIiwiX29wZW5Db25maXJtRGlhbG9nIiwib1RhYmxlIiwiYUNvbnRleHRzIiwiaVNlbGVjdGVkQ29udGV4dHMiLCJpVXBkYXRhYmxlQ29udGV4dHMiLCJsZW5ndGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsImdldFZpZXciLCJnZXRNb2RlbCIsImdldFJlc291cmNlQnVuZGxlIiwidGhlbiIsInNFZGl0QnV0dG9uIiwic0NhbmNlbEJ1dHRvbiIsImlOb25FZGl0YWJsZSIsInNNZXNzYWdlIiwic1BhdGgiLCJkYXRhIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImJJc0RyYWZ0IiwiTW9kZWxIZWxwZXIiLCJpc0RyYWZ0U3VwcG9ydGVkIiwiYkRpc3BsYXlNb2RlIiwic01lc3NhZ2VEZXRhaWwiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImRldGFpbHMiLCJhY3Rpb25zIiwiZW1waGFzaXplZEFjdGlvbiIsImNvbnRlbnRXaWR0aCIsIm9uQ2xvc2UiLCJzU2VsZWN0aW9uIiwiYUNvbnRleHRzRm9yRWRpdCIsIkxvZyIsImluZm8iLCJ0b1N0cmluZyIsImNhdGNoIiwiZXJyb3IiLCJfY29uZmlybUNvbnRleHRzIiwib0ludGVybmFsTW9kZWxDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJnZXRQcm9wZXJ0eSIsIm9wZW5NYXNzRWRpdERpYWxvZyIsIm9Db250cm9sbGVyIiwiZ2V0Q29udHJvbGxlciIsInBDb250ZXh0c0ZvckVkaXQiLCJmZXRjaENvbnRleHRzRm9yRWRpdCIsImJpbmQiLCJNYXNzRWRpdEhlbHBlciIsImNyZWF0ZURpYWxvZyIsIm9EaWFsb2ciLCJvcGVuIiwib0Vycm9yIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiUHVibGljIiwiRmluYWwiLCJQcml2YXRlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFZQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUVNQSxRLFdBRExDLFFBQVEsQ0FBQywyQ0FBRCxFQUE4Q0MsMkJBQTlDLEMsVUE0SFBDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQW5CLEM7Ozs7Ozs7OztXQXhIWEMsOEIsR0FGQSx3Q0FFK0JDLGVBRi9CLEVBRWdFO0FBQy9ELFVBQU1DLE9BQU8sR0FBR0QsZUFBZSxDQUFDRSxPQUFoQixDQUF3QiwyQ0FBeEIsQ0FBaEI7QUFBQSxVQUNDQyxZQUFZLEdBQUdILGVBQWUsQ0FBQ0UsT0FBaEIsQ0FBd0IsMkNBQXhCLENBRGhCO0FBQUEsVUFFQ0UsWUFBWSxHQUFHSixlQUFlLENBQUNFLE9BQWhCLENBQXdCLGlEQUF4QixDQUZoQjtBQUFBLFVBR0NHLGtCQUFrQixHQUFHTCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLHdEQUF4QixDQUh0QjtBQUtBLGFBQ0MsZ0JBQ0FELE9BREEsR0FFQSxpQkFGQSxHQUdBLEtBSEEsR0FJQUUsWUFKQSxHQUtBLFFBTEEsR0FNQSxNQU5BLEdBT0EsTUFQQSxHQVFBQyxZQVJBLEdBU0EsT0FUQSxHQVVBLE1BVkEsR0FXQUMsa0JBWEEsR0FZQSxPQVpBLEdBYUEsT0FkRDtBQWdCQSxLOztXQUVEQyxrQixHQUFBLDRCQUFtQkMsTUFBbkIsRUFBa0NDLFNBQWxDLEVBQXdEQyxpQkFBeEQsRUFBbUY7QUFBQTs7QUFDbEYsVUFBTUMsa0JBQWtCLEdBQUcsQ0FBQ0YsU0FBUyxJQUFJLEVBQWQsRUFBa0JHLE1BQTdDO0FBRUEsYUFBTyxJQUFJ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QUFBLFVBQ0NhLGlCQUFpQixHQUFHZCxxQkFBcUIsQ0FBQ0UsV0FBdEIsQ0FBa0MsbUJBQWxDLEtBQTBELEVBRC9FO0FBR0EsYUFBT3BDLE9BQU8sQ0FBQ0MsT0FBUixDQUFnQitDLGlCQUFoQixDQUFQO0FBQ0EsSzs7O0lBbElxQkMsbUIsb0ZBQ3JCQyxNLEVBQ0FDLEssaUxBMkZBRCxNLEVBQ0FDLEssdUtBNEJBQyxPO1NBV2F2RSxRIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgTWFzc0VkaXRIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWFzc0VkaXRIZWxwZXJcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFRhYmxlIGZyb20gXCJzYXAvdWkvbWRjL1RhYmxlXCI7XG5pbXBvcnQgeyBFeHRlbnNpYmxlLCBGaW5hbCwgUHJpdmF0ZSwgUHVibGljLCBVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb25NZXRhZGF0YSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIsIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcblxuLyoqXG4gKiBAY2xhc3MgQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbWFzcyBlZGl0IGluIGEgdGFibGVcbiAqXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NYXNzRWRpdFxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHByaXZhdGVcbiAqL1xuQFVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuTWFzc0VkaXRcIiwgQ29udHJvbGxlckV4dGVuc2lvbk1ldGFkYXRhKVxuY2xhc3MgTWFzc0VkaXQgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0QFB1YmxpY1xuXHRARmluYWxcblx0Z2V0TWVzc2FnZURldGFpbEZvck5vbkVkaXRhYmxlKG9SZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUpIHtcblx0XHRjb25zdCBzSGVhZGVyID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX0hFQURFUlwiKSxcblx0XHRcdHNSZWFzb25Hcm91cCA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9NRVNTQUdFX0RFVEFJTF9SRUFTT05cIiksXG5cdFx0XHRzUmVhc29uRHJhZnQgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRV9ERVRBSUxfUkVBU09OX0RSQUZUXCIpLFxuXHRcdFx0c1JlYXNvbk5vbkVkaXRhYmxlID0gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01BU1NfRURJVF9DT05GSVJNX01FU1NBR0VfREVUQUlMX1JFQVNPTl9OT05fRURJVEFCTEVcIik7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0XCI8cD48c3Ryb25nPlwiICtcblx0XHRcdHNIZWFkZXIgK1xuXHRcdFx0XCI8L3N0cm9uZz48L3A+XFxuXCIgK1xuXHRcdFx0XCI8cD5cIiArXG5cdFx0XHRzUmVhc29uR3JvdXAgK1xuXHRcdFx0XCI8L3A+XFxuXCIgK1xuXHRcdFx0XCI8dWw+XCIgK1xuXHRcdFx0XCI8bGk+XCIgK1xuXHRcdFx0c1JlYXNvbkRyYWZ0ICtcblx0XHRcdFwiPC9saT5cIiArXG5cdFx0XHRcIjxsaT5cIiArXG5cdFx0XHRzUmVhc29uTm9uRWRpdGFibGUgK1xuXHRcdFx0XCI8L2xpPlwiICtcblx0XHRcdFwiPC91bD5cIlxuXHRcdCk7XG5cdH1cblxuXHRfb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlOiBUYWJsZSwgYUNvbnRleHRzOiBDb250ZXh0W10sIGlTZWxlY3RlZENvbnRleHRzOiBudW1iZXIpIHtcblx0XHRjb25zdCBpVXBkYXRhYmxlQ29udGV4dHMgPSAoYUNvbnRleHRzIHx8IFtdKS5sZW5ndGg7XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG5cdFx0XHQoKHRoaXMuZ2V0VmlldygpLmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKSBhcyBQcm9taXNlPFJlc291cmNlQnVuZGxlPilcblx0XHRcdFx0LnRoZW4ob1Jlc291cmNlQnVuZGxlID0+IHtcblx0XHRcdFx0XHRjb25zdCBzRWRpdEJ1dHRvbiA9IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NQVNTX0VESVRfQ09ORklSTV9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdHNDYW5jZWxCdXR0b24gPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NBTkNFTF9CVVRUT05fVEVYVFwiKSxcblx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSA9IGlTZWxlY3RlZENvbnRleHRzIC0gaVVwZGF0YWJsZUNvbnRleHRzLFxuXHRcdFx0XHRcdFx0c01lc3NhZ2UgPSBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfTUFTU19FRElUX0NPTkZJUk1fTUVTU0FHRVwiLCBbXG5cdFx0XHRcdFx0XHRcdGlOb25FZGl0YWJsZSxcblx0XHRcdFx0XHRcdFx0aVNlbGVjdGVkQ29udGV4dHMsXG5cdFx0XHRcdFx0XHRcdGlVcGRhdGFibGVDb250ZXh0c1xuXHRcdFx0XHRcdFx0XSksXG5cdFx0XHRcdFx0XHRzUGF0aCA9IG9UYWJsZS5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIiksXG5cdFx0XHRcdFx0XHRvTWV0YU1vZGVsID0gb1RhYmxlLmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdFx0XHRiSXNEcmFmdCA9IE1vZGVsSGVscGVyLmlzRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCwgc1BhdGgpLFxuXHRcdFx0XHRcdFx0YkRpc3BsYXlNb2RlID0gb1RhYmxlLmRhdGEoXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiKSA9PT0gXCJ0cnVlXCIsXG5cdFx0XHRcdFx0XHRzTWVzc2FnZURldGFpbCA9IGJJc0RyYWZ0ICYmIGJEaXNwbGF5TW9kZSAmJiB0aGlzLmdldE1lc3NhZ2VEZXRhaWxGb3JOb25FZGl0YWJsZShvUmVzb3VyY2VCdW5kbGUpO1xuXG5cdFx0XHRcdFx0TWVzc2FnZUJveC53YXJuaW5nKHNNZXNzYWdlLCB7XG5cdFx0XHRcdFx0XHRkZXRhaWxzOiBzTWVzc2FnZURldGFpbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IFtzRWRpdEJ1dHRvbiwgc0NhbmNlbEJ1dHRvbl0sXG5cdFx0XHRcdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBzRWRpdEJ1dHRvbixcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxMDBweFwiLFxuXHRcdFx0XHRcdFx0b25DbG9zZTogZnVuY3Rpb24oc1NlbGVjdGlvbjogc3RyaW5nKSB7XG5cdFx0XHRcdFx0XHRcdGxldCBhQ29udGV4dHNGb3JFZGl0OiBhbnlbXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRpZiAoc1NlbGVjdGlvbiA9PT0gc0VkaXRCdXR0b24pIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cuaW5mbyhcIk1hc3MgRWRpdDogQ29uZmlybWVkIHRvIGVkaXQgXCIsIGlVcGRhdGFibGVDb250ZXh0cy50b1N0cmluZygpLCBcIiBzZWxlY3Rpb25zLlwiKTtcblx0XHRcdFx0XHRcdFx0XHRhQ29udGV4dHNGb3JFZGl0ID0gYUNvbnRleHRzO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHNTZWxlY3Rpb24gPT09IHNDYW5jZWxCdXR0b24pIHtcblx0XHRcdFx0XHRcdFx0XHRMb2cuaW5mbyhcIk1hc3MgRWRpdDogQ2FuY2VsbGVkLlwiKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKGFDb250ZXh0c0ZvckVkaXQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gYXMgYW55KTtcblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGVycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRfY29uZmlybUNvbnRleHRzKG9UYWJsZTogVGFibGUsIGFDb250ZXh0czogQ29udGV4dFtdKSB7XG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRpU2VsZWN0ZWRDb250ZXh0cyA9ICtvSW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIikgfHwgMDtcblxuXHRcdGFDb250ZXh0cyA9IGFDb250ZXh0cyB8fCBbXTtcblxuXHRcdGlmIChhQ29udGV4dHMubGVuZ3RoICYmIGFDb250ZXh0cy5sZW5ndGggIT09IGlTZWxlY3RlZENvbnRleHRzKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5fb3BlbkNvbmZpcm1EaWFsb2cob1RhYmxlLCBhQ29udGV4dHMsIGlTZWxlY3RlZENvbnRleHRzKTtcblx0XHR9XG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhQ29udGV4dHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIGJ5IG1ldGhvZCBvcGVuTWFzc0VkaXREaWFsb2c6XG5cdCAqID0+IE9wZW5zIHRoZSBtYXNzIGVkaXQgZGlhbG9nLlxuXHQgKiA9PiBJbXBsZW1lbnRzIHRoZSBzYXZlIGFuZCBjYW5jZWwgZnVuY3Rpb25hbGl0eS5cblx0ICogPT4gU2V0cyB0aGUgcnVudGltZSBtb2RlbCB0byB0aGUgZGlhbG9nLlxuXHQgKiA9PiBTZXRzIHRoZSBzdGF0aWMgbW9kZWwncyBjb250ZXh0IHRvIHRoZSBkaWFsb2cuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1kYy5UYWJsZX0gb1RhYmxlIEluc3RhbmNlIG9mIHRoZSB0YWJsZVxuXHQgKiBAcmV0dXJucyB7UHJvbWlzZX0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgb24gb3BlbiBvZiB0aGUgbWFzcyBlZGl0IGRpYWxvZy5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdEBQdWJsaWNcblx0QEZpbmFsXG5cdG9wZW5NYXNzRWRpdERpYWxvZyhvVGFibGU6IFRhYmxlKSB7XG5cdFx0Y29uc3Qgb0NvbnRyb2xsZXIgPSB0aGlzLmdldFZpZXcoKS5nZXRDb250cm9sbGVyKCkgYXMgUGFnZUNvbnRyb2xsZXIsXG5cdFx0XHRwQ29udGV4dHNGb3JFZGl0ID0gdGhpcy5mZXRjaENvbnRleHRzRm9yRWRpdChvVGFibGUpO1xuXG5cdFx0cmV0dXJuIHBDb250ZXh0c0ZvckVkaXRcblx0XHRcdC50aGVuKHRoaXMuX2NvbmZpcm1Db250ZXh0cy5iaW5kKHRoaXMsIG9UYWJsZSkpXG5cdFx0XHQudGhlbihmdW5jdGlvbihhQ29udGV4dHM6IGFueSkge1xuXHRcdFx0XHRyZXR1cm4gYUNvbnRleHRzICYmIGFDb250ZXh0cy5sZW5ndGggPiAwID8gTWFzc0VkaXRIZWxwZXIuY3JlYXRlRGlhbG9nKG9UYWJsZSwgYUNvbnRleHRzLCBvQ29udHJvbGxlcikgOiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihmdW5jdGlvbihvRGlhbG9nPzogYW55KSB7XG5cdFx0XHRcdGlmIChvRGlhbG9nKSB7XG5cdFx0XHRcdFx0b0RpYWxvZy5vcGVuKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24ob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiTWFzcyBFZGl0OiBTb21ldGhpbmcgd2VudCB3cm9uZyBpbiBtYXNzIGVkaXQgZGlhbG9nIGNyZWF0aW9uLlwiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyBhIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY29udGV4dHMgZm9yIG1hc3MgZWRpdC5cblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1kYy5UYWJsZX0gb1RhYmxlIFRhYmxlIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBhbGlhcyBzYXAuZmUuY29yZS5jb250cmxsZXJleHRlbnNpb25zLk1hc3NFZGl0I2ZldGNoQ29udGV4dHNGb3JFZGl0XG5cdCAqIEByZXR1cm5zIHtQcm9taXNlfSBBIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2l0aCBhbiBhcnJheSBvZiBjb250ZXh0KHMpIHdoaWNoIHNob3VsZCBiZSBjb25zaWRlcmVkIGZvciBtYXNzIGVkaXQuXG5cdCAqIEBwcml2YXRlXG5cdCAqKi9cblx0QFByaXZhdGVcblx0QEV4dGVuc2libGUoT3ZlcnJpZGVFeGVjdXRpb24uQWZ0ZXIpXG5cdGZldGNoQ29udGV4dHNGb3JFZGl0KG9UYWJsZTogVGFibGUpIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdFx0Y29uc3Qgb0ludGVybmFsTW9kZWxDb250ZXh0ID0gb1RhYmxlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IG9JbnRlcm5hbE1vZGVsQ29udGV4dC5nZXRQcm9wZXJ0eShcInVwZGF0YWJsZUNvbnRleHRzXCIpIHx8IFtdO1xuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZShhU2VsZWN0ZWRDb250ZXh0cyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFzc0VkaXQ7XG4iXX0=
|
|
@@ -0,0 +1,156 @@
|
|
|
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, Final, Private, Public, UI5Class } from "sap/fe/core/helpers/ClassSupport";
|
|
7
|
+
import ControllerExtensionMetadata from "sap/fe/core/controllerextensions/ControllerExtensionMetadata";
|
|
8
|
+
import ModelHelper, { InternalModelContext } from "sap/fe/core/helpers/ModelHelper";
|
|
9
|
+
import MessageBox from "sap/m/MessageBox";
|
|
10
|
+
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
11
|
+
import Context from "sap/ui/model/Context";
|
|
12
|
+
import ResourceModel from "sap/ui/model/resource/ResourceModel";
|
|
13
|
+
import PageController from "sap/fe/core/PageController";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @class Controller extension providing hooks for the mass edit in a table
|
|
17
|
+
*
|
|
18
|
+
* @name sap.fe.core.controllerextensions.MassEdit
|
|
19
|
+
* @hideconstructor
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
@UI5Class("sap.fe.core.controllerextensions.MassEdit", ControllerExtensionMetadata)
|
|
23
|
+
class MassEdit extends ControllerExtension {
|
|
24
|
+
@Public
|
|
25
|
+
@Final
|
|
26
|
+
getMessageDetailForNonEditable(oResourceBundle: ResourceBundle) {
|
|
27
|
+
const sHeader = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_HEADER"),
|
|
28
|
+
sReasonGroup = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON"),
|
|
29
|
+
sReasonDraft = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_DRAFT"),
|
|
30
|
+
sReasonNonEditable = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE_DETAIL_REASON_NON_EDITABLE");
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
"<p><strong>" +
|
|
34
|
+
sHeader +
|
|
35
|
+
"</strong></p>\n" +
|
|
36
|
+
"<p>" +
|
|
37
|
+
sReasonGroup +
|
|
38
|
+
"</p>\n" +
|
|
39
|
+
"<ul>" +
|
|
40
|
+
"<li>" +
|
|
41
|
+
sReasonDraft +
|
|
42
|
+
"</li>" +
|
|
43
|
+
"<li>" +
|
|
44
|
+
sReasonNonEditable +
|
|
45
|
+
"</li>" +
|
|
46
|
+
"</ul>"
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
_openConfirmDialog(oTable: Table, aContexts: Context[], iSelectedContexts: number) {
|
|
51
|
+
const iUpdatableContexts = (aContexts || []).length;
|
|
52
|
+
|
|
53
|
+
return new Promise(resolve => {
|
|
54
|
+
((this.getView().getModel("sap.fe.i18n") as ResourceModel).getResourceBundle() as Promise<ResourceBundle>)
|
|
55
|
+
.then(oResourceBundle => {
|
|
56
|
+
const sEditButton = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_BUTTON_TEXT"),
|
|
57
|
+
sCancelButton = oResourceBundle.getText("C_MASS_EDIT_CANCEL_BUTTON_TEXT"),
|
|
58
|
+
iNonEditable = iSelectedContexts - iUpdatableContexts,
|
|
59
|
+
sMessage = oResourceBundle.getText("C_MASS_EDIT_CONFIRM_MESSAGE", [
|
|
60
|
+
iNonEditable,
|
|
61
|
+
iSelectedContexts,
|
|
62
|
+
iUpdatableContexts
|
|
63
|
+
]),
|
|
64
|
+
sPath = oTable.data("targetCollectionPath"),
|
|
65
|
+
oMetaModel = oTable.getModel().getMetaModel(),
|
|
66
|
+
bIsDraft = ModelHelper.isDraftSupported(oMetaModel, sPath),
|
|
67
|
+
bDisplayMode = oTable.data("displayModePropertyBinding") === "true",
|
|
68
|
+
sMessageDetail = bIsDraft && bDisplayMode && this.getMessageDetailForNonEditable(oResourceBundle);
|
|
69
|
+
|
|
70
|
+
MessageBox.warning(sMessage, {
|
|
71
|
+
details: sMessageDetail,
|
|
72
|
+
actions: [sEditButton, sCancelButton],
|
|
73
|
+
emphasizedAction: sEditButton,
|
|
74
|
+
contentWidth: "100px",
|
|
75
|
+
onClose: function(sSelection: string) {
|
|
76
|
+
let aContextsForEdit: any[] = [];
|
|
77
|
+
if (sSelection === sEditButton) {
|
|
78
|
+
Log.info("Mass Edit: Confirmed to edit ", iUpdatableContexts.toString(), " selections.");
|
|
79
|
+
aContextsForEdit = aContexts;
|
|
80
|
+
} else if (sSelection === sCancelButton) {
|
|
81
|
+
Log.info("Mass Edit: Cancelled.");
|
|
82
|
+
}
|
|
83
|
+
resolve(aContextsForEdit);
|
|
84
|
+
}
|
|
85
|
+
} as any);
|
|
86
|
+
})
|
|
87
|
+
.catch(function(error) {
|
|
88
|
+
Log.error(error);
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
_confirmContexts(oTable: Table, aContexts: Context[]) {
|
|
94
|
+
const oInternalModelContext = oTable.getBindingContext("internal") as InternalModelContext,
|
|
95
|
+
iSelectedContexts = +oInternalModelContext.getProperty("numberOfSelectedContexts") || 0;
|
|
96
|
+
|
|
97
|
+
aContexts = aContexts || [];
|
|
98
|
+
|
|
99
|
+
if (aContexts.length && aContexts.length !== iSelectedContexts) {
|
|
100
|
+
return this._openConfirmDialog(oTable, aContexts, iSelectedContexts);
|
|
101
|
+
}
|
|
102
|
+
return Promise.resolve(aContexts);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* The following operations are performed by method openMassEditDialog:
|
|
107
|
+
* => Opens the mass edit dialog.
|
|
108
|
+
* => Implements the save and cancel functionality.
|
|
109
|
+
* => Sets the runtime model to the dialog.
|
|
110
|
+
* => Sets the static model's context to the dialog.
|
|
111
|
+
*
|
|
112
|
+
* @param {sap.ui.mdc.Table} oTable Instance of the table
|
|
113
|
+
* @returns {Promise} A promise that resolves on open of the mass edit dialog.
|
|
114
|
+
* @private
|
|
115
|
+
*/
|
|
116
|
+
@Public
|
|
117
|
+
@Final
|
|
118
|
+
openMassEditDialog(oTable: Table) {
|
|
119
|
+
const oController = this.getView().getController() as PageController,
|
|
120
|
+
pContextsForEdit = this.fetchContextsForEdit(oTable);
|
|
121
|
+
|
|
122
|
+
return pContextsForEdit
|
|
123
|
+
.then(this._confirmContexts.bind(this, oTable))
|
|
124
|
+
.then(function(aContexts: any) {
|
|
125
|
+
return aContexts && aContexts.length > 0 ? MassEditHelper.createDialog(oTable, aContexts, oController) : Promise.resolve();
|
|
126
|
+
})
|
|
127
|
+
.then(function(oDialog?: any) {
|
|
128
|
+
if (oDialog) {
|
|
129
|
+
oDialog.open();
|
|
130
|
+
}
|
|
131
|
+
})
|
|
132
|
+
.catch(function(oError: any) {
|
|
133
|
+
Log.error("Mass Edit: Something went wrong in mass edit dialog creation.", oError);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Returns a promise that resolves to the contexts for mass edit.
|
|
139
|
+
* @function
|
|
140
|
+
* @param {sap.ui.mdc.Table} oTable Table for mass edit.
|
|
141
|
+
* @alias sap.fe.core.contrllerextensions.MassEdit#fetchContextsForEdit
|
|
142
|
+
* @returns {Promise} A promise to be resolved with an array of context(s) which should be considered for mass edit.
|
|
143
|
+
* @private
|
|
144
|
+
**/
|
|
145
|
+
@Private
|
|
146
|
+
@Extensible(OverrideExecution.After)
|
|
147
|
+
fetchContextsForEdit(oTable: Table) {
|
|
148
|
+
//To be overridden by the application
|
|
149
|
+
const oInternalModelContext = oTable.getBindingContext("internal") as InternalModelContext,
|
|
150
|
+
aSelectedContexts = oInternalModelContext.getProperty("updatableContexts") || [];
|
|
151
|
+
|
|
152
|
+
return Promise.resolve(aSelectedContexts);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export default MassEdit;
|