@openui5/sap.ui.fl 1.139.0 → 1.141.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/.eslint-rules/import-check.js +71 -0
- package/THIRDPARTY.txt +2 -2
- package/package.json +3 -3
- package/src/sap/ui/fl/.library +1 -1
- package/src/sap/ui/fl/FakeLrepConnectorLocalStorage.js +1 -1
- package/src/sap/ui/fl/FakeLrepConnectorSessionStorage.js +1 -1
- package/src/sap/ui/fl/FakeLrepLocalStorage.js +1 -1
- package/src/sap/ui/fl/LayerUtils.js +1 -1
- package/src/sap/ui/fl/Utils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/DelegateMediator.js +13 -3
- package/src/sap/ui/fl/apply/_internal/changes/Applier.js +3 -2
- package/src/sap/ui/fl/apply/_internal/changes/FlexCustomData.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/Reverter.js +4 -1
- package/src/sap/ui/fl/apply/_internal/changes/Utils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/Preprocessor.js +2 -2
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/Registration.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/RegistrationBuild.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddAnnotationsToOData.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewDataSource.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewInbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewOutbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddTechnicalAttributes.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeDataSource.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeInbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeOutbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/RemoveAllInboundsExceptOne.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetAch.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetDescription.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetTitle.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetAbstract.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetCloudDevAdaptationStatus.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetRegistrationIds.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/AddNewCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/ChangeCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/DeleteCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddComponentUsages.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddLibrary.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModel.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModelEnhanceWith.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/ChangeModel.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetFlexExtensionPointEnabled.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetMinUI5Version.js +1 -1
- package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageUtils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/controlVariants/URLHandler.js +14 -12
- package/src/sap/ui/fl/apply/_internal/extensionPoint/Processor.js +2 -2
- package/src/sap/ui/fl/apply/_internal/extensionPoint/Registry.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/AnnotationChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/AppDescriptorChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariant.js +13 -10
- package/src/sap/ui/fl/apply/_internal/flexObjects/ControllerExtensionChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlVariant.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObject.js +2 -2
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObjectFactory.js +2 -8
- package/src/sap/ui/fl/apply/_internal/flexObjects/UIChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/Variant.js +2 -2
- package/src/sap/ui/fl/apply/_internal/flexObjects/VariantChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/VariantManagementChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/getVariantAuthor.js +6 -3
- package/src/sap/ui/fl/apply/_internal/flexState/DataSelector.js +5 -5
- package/src/sap/ui/fl/apply/_internal/flexState/FlexObjectState.js +12 -26
- package/src/sap/ui/fl/apply/_internal/flexState/FlexState.js +68 -229
- package/src/sap/ui/fl/apply/_internal/flexState/InitialPrepareFunctions.js +0 -8
- package/src/sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/ExtensionPointState.js +3 -3
- package/src/sap/ui/fl/apply/_internal/flexState/changes/UIChangesState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/communication/FLPAboutInfo.js +2 -2
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantManagementState.js +287 -10
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/applyChangesOnVariant.js +61 -0
- package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/Switcher.js +22 -5
- package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState.js +72 -19
- package/src/sap/ui/fl/apply/_internal/init.js +47 -0
- package/src/sap/ui/fl/apply/_internal/preprocessors/ComponentLifecycleHooks.js +17 -7
- package/src/sap/ui/fl/apply/api/AnnotationChangeHandlerAPI.js +2 -1
- package/src/sap/ui/fl/apply/api/ControlVariantApplyAPI.js +190 -53
- package/src/sap/ui/fl/apply/api/DelegateMediatorAPI.js +17 -1
- package/src/sap/ui/fl/apply/api/ExtensionPointRegistryAPI.js +2 -1
- package/src/sap/ui/fl/apply/api/FlexRuntimeInfoAPI.js +6 -5
- package/src/sap/ui/fl/apply/api/SmartVariantManagementApplyAPI.js +45 -45
- package/src/sap/ui/fl/apply/api/UI2PersonalizationApplyAPI.js +2 -1
- package/src/sap/ui/fl/changeHandler/AddIFrame.js +1 -1
- package/src/sap/ui/fl/changeHandler/AddXML.js +2 -2
- package/src/sap/ui/fl/changeHandler/AddXMLAtExtensionPoint.js +4 -4
- package/src/sap/ui/fl/changeHandler/Base.js +3 -2
- package/src/sap/ui/fl/changeHandler/BaseAddViaDelegate.js +1 -1
- package/src/sap/ui/fl/changeHandler/BaseAddXml.js +21 -9
- package/src/sap/ui/fl/changeHandler/BaseRename.js +1 -1
- package/src/sap/ui/fl/changeHandler/ChangeAnnotation.js +7 -2
- package/src/sap/ui/fl/changeHandler/HideControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/MoveControls.js +1 -1
- package/src/sap/ui/fl/changeHandler/MoveElements.js +1 -1
- package/src/sap/ui/fl/changeHandler/PropertyBindingChange.js +1 -1
- package/src/sap/ui/fl/changeHandler/PropertyChange.js +1 -1
- package/src/sap/ui/fl/changeHandler/StashControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UnhideControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UnstashControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UpdateIFrame.js +1 -1
- package/src/sap/ui/fl/changeHandler/common/createIFrame.js +1 -4
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorChange.js +3 -3
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory.js +3 -3
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory.js +1 -1
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorVariantFactory.js +1 -1
- package/src/sap/ui/fl/designtime/variants/VariantManagement.designtime.js +14 -12
- package/src/sap/ui/fl/initial/_internal/FlexConfiguration.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Loader.js +372 -0
- package/src/sap/ui/fl/{apply/_internal/flexState → initial/_internal}/ManifestUtils.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Settings.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Storage.js +1 -1
- package/src/sap/ui/fl/initial/_internal/StorageFeaturesMerger.js +1 -1
- package/src/sap/ui/fl/initial/_internal/StorageUtils.js +67 -9
- package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerRegistration.js +1 -1
- package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerStorage.js +12 -5
- package/src/sap/ui/fl/initial/_internal/connectors/Utils.js +1 -1
- package/src/sap/ui/fl/{apply → initial}/_internal/preprocessors/ControllerExtension.js +16 -5
- package/src/sap/ui/fl/{apply → initial}/_internal/preprocessors/RegistrationDelegator.js +9 -40
- package/src/sap/ui/fl/{apply → initial}/_internal/preprocessors/XmlPreprocessor.js +29 -21
- package/src/sap/ui/fl/initial/_internal/storageResultDisassemble.js +1 -1
- package/src/sap/ui/fl/initial/api/InitialFlexAPI.js +1 -1
- package/src/sap/ui/fl/interfaces/BaseLoadConnector.js +1 -1
- package/src/sap/ui/fl/interfaces/Delegate.js +1 -1
- package/src/sap/ui/fl/library.js +44 -44
- package/src/sap/ui/fl/messagebundle_vi.properties +1 -1
- package/src/sap/ui/fl/support/_internal/extractChangeDependencies.js +1 -1
- package/src/sap/ui/fl/support/_internal/getAllUIChanges.js +2 -2
- package/src/sap/ui/fl/support/_internal/getChangeDependencies.js +1 -1
- package/src/sap/ui/fl/support/_internal/getFlexObjectInfos.js +2 -2
- package/src/sap/ui/fl/support/_internal/getFlexSettings.js +1 -1
- package/src/sap/ui/fl/support/api/SupportAPI.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetails.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetailsEdit.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/LayerContentMaster.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/Layers.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/lrepConnector/LRepConnector.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/utils/DataUtils.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/utils/ErrorUtils.js +1 -1
- package/src/sap/ui/fl/transport/TransportSelection.js +1 -1
- package/src/sap/ui/fl/util/IFrame.js +5 -4
- package/src/sap/ui/fl/util/ManagedObjectModel.js +1 -1
- package/src/sap/ui/fl/variants/VariantManagement.js +88 -36
- package/src/sap/ui/fl/variants/VariantManager.js +81 -21
- package/src/sap/ui/fl/variants/VariantModel.js +38 -189
- package/src/sap/ui/fl/write/_internal/SaveAs.js +1 -1
- package/src/sap/ui/fl/write/_internal/Storage.js +14 -1
- package/src/sap/ui/fl/write/_internal/Versions.js +9 -5
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariant.js +10 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantFactory.js +6 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChange.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChangeFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/condenser/Condenser.js +1 -1
- package/src/sap/ui/fl/write/_internal/condenser/UIReconstruction.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/BackendConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/BtpServiceConnector.js +27 -2
- package/src/sap/ui/fl/write/_internal/connectors/KeyUserConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/LrepConnector.js +4 -1
- package/src/sap/ui/fl/write/_internal/connectors/NeoLrepConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/ObjectPathConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/PersonalizationConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/Utils.js +1 -1
- package/src/sap/ui/fl/write/_internal/extensionPoint/Processor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPAccess.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariantFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/MultiTenantABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ServiceValidation.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/SingleTenantABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/UriParser.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/Utils.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/CAPAccess.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/booleanEditor/BooleanEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/rangeEditor/RangeEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/flexState/FlexObjectManager.js +40 -71
- package/src/sap/ui/fl/write/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +3 -3
- package/src/sap/ui/fl/write/_internal/flexState/changes/UIChangeManager.js +1 -1
- package/src/sap/ui/fl/write/_internal/flexState/compVariants/{CompVariantState.js → CompVariantManager.js} +176 -309
- package/src/sap/ui/fl/write/_internal/init.js +27 -0
- package/src/sap/ui/fl/write/_internal/transport/TransportSelection.js +2 -2
- package/src/sap/ui/fl/write/_internal/transport/Transports.js +1 -1
- package/src/sap/ui/fl/write/api/Adaptations.js +1 -1
- package/src/sap/ui/fl/write/api/AppVariantWriteAPI.js +4 -2
- package/src/sap/ui/fl/write/api/BusinessNetworkAPI.js +60 -26
- package/src/sap/ui/fl/write/api/ChangesWriteAPI.js +4 -3
- package/src/sap/ui/fl/write/api/ContextBasedAdaptationsAPI.js +19 -23
- package/src/sap/ui/fl/write/api/ContextSharingAPI.js +3 -2
- package/src/sap/ui/fl/write/api/ControlPersonalizationWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/FeaturesAPI.js +2 -1
- package/src/sap/ui/fl/write/api/FieldExtensibility.js +3 -2
- package/src/sap/ui/fl/write/api/LocalResetAPI.js +3 -2
- package/src/sap/ui/fl/write/api/PersistenceWriteAPI.js +23 -20
- package/src/sap/ui/fl/write/api/ReloadInfoAPI.js +10 -7
- package/src/sap/ui/fl/write/api/SACIntegrationUpdateVariant.js +8 -7
- package/src/sap/ui/fl/write/api/SmartBusinessWriteAPI.js +3 -2
- package/src/sap/ui/fl/write/api/SmartVariantManagementWriteAPI.js +26 -22
- package/src/sap/ui/fl/write/api/TranslationAPI.js +3 -2
- package/src/sap/ui/fl/write/api/UI2PersonalizationWriteAPI.js +4 -3
- package/src/sap/ui/fl/write/api/VersionsAPI.js +4 -3
- package/src/sap/ui/fl/write/api/connectors/FileListBaseConnector.js +3 -2
- package/src/sap/ui/fl/write/api/connectors/ObjectStorageConnector.js +4 -2
- package/src/sap/ui/fl/write/connectors/BaseConnector.js +13 -0
- package/ui5.yaml +0 -1
- package/src/sap/ui/fl/apply/_internal/flexState/Loader.js +0 -208
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantMerger.js +0 -233
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/prepareCompVariantsMap.js +0 -118
- package/src/sap/ui/fl/util/resolveBinding.js +0 -79
|
@@ -5,13 +5,21 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
|
+
"sap/base/Log",
|
|
8
9
|
"sap/ui/fl/apply/_internal/flexState/FlexState",
|
|
9
10
|
"sap/ui/fl/apply/_internal/flexState/DataSelector",
|
|
10
|
-
"sap/ui/fl/apply/_internal/
|
|
11
|
+
"sap/ui/fl/apply/_internal/flexState/compVariants/applyChangesOnVariant",
|
|
12
|
+
"sap/ui/fl/apply/_internal/flexObjects/CompVariant",
|
|
13
|
+
"sap/ui/fl/apply/_internal/flexObjects/FlexObjectFactory",
|
|
14
|
+
"sap/ui/fl/apply/_internal/flexObjects/States"
|
|
11
15
|
], function(
|
|
16
|
+
Log,
|
|
12
17
|
FlexState,
|
|
13
18
|
DataSelector,
|
|
14
|
-
|
|
19
|
+
applyChangesOnVariant,
|
|
20
|
+
CompVariant,
|
|
21
|
+
FlexObjectFactory,
|
|
22
|
+
States
|
|
15
23
|
) {
|
|
16
24
|
"use strict";
|
|
17
25
|
|
|
@@ -20,7 +28,7 @@ sap.ui.define([
|
|
|
20
28
|
*
|
|
21
29
|
* @namespace sap.ui.fl.apply._internal.flexState.compVariants.CompVariantManagementState
|
|
22
30
|
* @since 1.129
|
|
23
|
-
* @version 1.
|
|
31
|
+
* @version 1.141.0
|
|
24
32
|
* @private
|
|
25
33
|
* @ui5-restricted
|
|
26
34
|
*/
|
|
@@ -28,6 +36,14 @@ sap.ui.define([
|
|
|
28
36
|
|
|
29
37
|
const sUpdatableChangeNameSpace = "sap.ui.fl.apply._internal.flexObjects.UpdatableChange";
|
|
30
38
|
|
|
39
|
+
const aCompVariantChangeTypes = [
|
|
40
|
+
"addFavorite",
|
|
41
|
+
"defaultVariant",
|
|
42
|
+
"removeFavorite",
|
|
43
|
+
"standardVariant",
|
|
44
|
+
"updateVariant"
|
|
45
|
+
];
|
|
46
|
+
|
|
31
47
|
const isSetDefaultChange = (oFlexObject) => {
|
|
32
48
|
return oFlexObject?.isA(sUpdatableChangeNameSpace)
|
|
33
49
|
&& oFlexObject.getFileType() === "change"
|
|
@@ -40,16 +56,166 @@ sap.ui.define([
|
|
|
40
56
|
parentDataSelector: FlexState.getFlexObjectsDataSelector(),
|
|
41
57
|
executeFunction(aFlexObjects, mPropertyBag) {
|
|
42
58
|
return aFlexObjects.filter((oFlexObject) =>
|
|
43
|
-
|
|
44
|
-
&&
|
|
59
|
+
(oFlexObject.getState() !== States.LifecycleState.DELETED || mPropertyBag.includeDeleted)
|
|
60
|
+
&& isSetDefaultChange(oFlexObject)
|
|
61
|
+
&& oFlexObject.getSelector().persistencyKey === mPropertyBag.persistencyKey
|
|
45
62
|
);
|
|
46
63
|
},
|
|
47
64
|
checkInvalidation(mParameters, oUpdateInfo) {
|
|
65
|
+
const oFlexObject = oUpdateInfo.updatedObject;
|
|
66
|
+
const bRelevantPersistencyKey = oFlexObject?.getSelector?.().persistencyKey === mParameters.persistencyKey;
|
|
48
67
|
const bRelevantType = ["addFlexObject", "removeFlexObject"].includes(oUpdateInfo.type);
|
|
49
|
-
return bRelevantType && isSetDefaultChange(oUpdateInfo.updatedObject);
|
|
68
|
+
return bRelevantPersistencyKey && bRelevantType && isSetDefaultChange(oUpdateInfo.updatedObject);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
const oCompEntitiesDataSelector = new DataSelector({
|
|
73
|
+
id: "compEntitiesData",
|
|
74
|
+
parentDataSelector: FlexState.getFlexObjectsDataSelector(),
|
|
75
|
+
executeFunction(aFlexObjects) {
|
|
76
|
+
return aFlexObjects.filter((oFlexObject) => oFlexObject.getFileType() === "variant" ||
|
|
77
|
+
(
|
|
78
|
+
oFlexObject.getFileType() === "change"
|
|
79
|
+
&& aCompVariantChangeTypes.includes(oFlexObject.getChangeType())
|
|
80
|
+
)
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
checkInvalidation(mParameters, oUpdateInfo) {
|
|
84
|
+
const oFlexObject = oUpdateInfo.updatedObject;
|
|
85
|
+
const aRelevantUpdateTypes = ["addFlexObject", "updateFlexObject", "removeFlexObject"];
|
|
86
|
+
const bIsRelevantUpdateType = aRelevantUpdateTypes.includes(oUpdateInfo.type);
|
|
87
|
+
const bIsChangeWithRelevantChangeType = oFlexObject.getFileType() === "change" &&
|
|
88
|
+
aCompVariantChangeTypes.includes(oFlexObject.getChangeType());
|
|
89
|
+
const bIsVariantFileType = oUpdateInfo.updatedObject?.getFileType?.() === "variant";
|
|
90
|
+
return bIsRelevantUpdateType && (bIsVariantFileType || bIsChangeWithRelevantChangeType);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
const oVariantsDataSelector = new DataSelector({
|
|
95
|
+
id: "compVariantData",
|
|
96
|
+
parameterKey: "persistencyKey",
|
|
97
|
+
parentDataSelector: oCompEntitiesDataSelector,
|
|
98
|
+
executeFunction(aFlexObjects, mPropertyBag) {
|
|
99
|
+
const aVariants = aFlexObjects.filter((oFlexObject) =>
|
|
100
|
+
oFlexObject.getFileType() === "variant"
|
|
101
|
+
&& oFlexObject.getPersistencyKey() === mPropertyBag.persistencyKey
|
|
102
|
+
&& (oFlexObject.getState() !== States.LifecycleState.DELETED || mPropertyBag.includeDeleted)
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
return CompVariantManagementState.applyChangesOnVariants(mPropertyBag.reference, mPropertyBag.persistencyKey, aVariants);
|
|
106
|
+
},
|
|
107
|
+
checkInvalidation(mParameters, oUpdateInfo) {
|
|
108
|
+
const oFlexObject = oUpdateInfo.updatedObject;
|
|
109
|
+
const aRelevantUpdateTypes = ["addFlexObject", "updateFlexObject", "removeFlexObject"];
|
|
110
|
+
const bIsRelevantUpdateType = aRelevantUpdateTypes.includes(oUpdateInfo.type);
|
|
111
|
+
const bIsChangeWithRelevantChangeType = oFlexObject.getFileType() === "change" &&
|
|
112
|
+
aCompVariantChangeTypes.includes(oFlexObject.getChangeType());
|
|
113
|
+
const bIsVariantFileType = oUpdateInfo.updatedObject?.getFileType?.() === "variant";
|
|
114
|
+
return bIsRelevantUpdateType && (bIsVariantFileType || bIsChangeWithRelevantChangeType);
|
|
50
115
|
}
|
|
51
116
|
});
|
|
52
117
|
|
|
118
|
+
// comp entities may hold the persistency key within the persistencyKey property (variant) or within the selector (changes)
|
|
119
|
+
const oCompEntitiesByPersistencyKeyDataSelector = new DataSelector({
|
|
120
|
+
id: "compEntitiesByPersistencyKey",
|
|
121
|
+
parameterKey: "persistencyKey",
|
|
122
|
+
parentDataSelector: oCompEntitiesDataSelector,
|
|
123
|
+
executeFunction(aFlexObjects, mPropertyBag) {
|
|
124
|
+
return aFlexObjects.filter((oFlexObject) =>
|
|
125
|
+
(oFlexObject.getPersistencyKey?.() || oFlexObject.getSelector?.().persistencyKey) === mPropertyBag.persistencyKey
|
|
126
|
+
);
|
|
127
|
+
},
|
|
128
|
+
checkInvalidation(mParameters, oUpdateInfo) {
|
|
129
|
+
const oFlexObject = oUpdateInfo.updatedObject;
|
|
130
|
+
return (oFlexObject?.getPersistencyKey?.() || oFlexObject.getSelector?.().persistencyKey) === mParameters.persistencyKey;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
const oChangesByVariantIdsDataSelector = new DataSelector({
|
|
135
|
+
id: "getChangesByVariantIds",
|
|
136
|
+
parentDataSelector: oCompEntitiesByPersistencyKeyDataSelector,
|
|
137
|
+
executeFunction(aFlexObjects) {
|
|
138
|
+
const mChanges = {};
|
|
139
|
+
const aVariantIds = aFlexObjects
|
|
140
|
+
.filter((oFlexObject) => oFlexObject.getFileType() === "variant")
|
|
141
|
+
.map((oVariant) => oVariant.getVariantId());
|
|
142
|
+
|
|
143
|
+
aFlexObjects.filter((oFlexObject) => oFlexObject.getFileType() === "change" && oFlexObject.getChangeType() !== "defaultVariant")
|
|
144
|
+
.forEach(function(oChange) {
|
|
145
|
+
const sVariantId = escapeSpecialIdCharacters(oChange.getSelector().variantId || oChange.getContent().key);
|
|
146
|
+
if (aVariantIds.includes(sVariantId)) {
|
|
147
|
+
mChanges[sVariantId] ||= [];
|
|
148
|
+
mChanges[sVariantId].push(oChange);
|
|
149
|
+
} else if (oChange.getChangeType() === "standardVariant") {
|
|
150
|
+
mChanges[CompVariant.STANDARD_VARIANT_ID] ||= [];
|
|
151
|
+
mChanges[CompVariant.STANDARD_VARIANT_ID].push(oChange);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
return mChanges;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
function createVariant(mPropertyBag) {
|
|
160
|
+
const oVariantInput = mPropertyBag.variantInput || {};
|
|
161
|
+
const oVariantData = {
|
|
162
|
+
fileName: oVariantInput.fileName,
|
|
163
|
+
fileType: "variant",
|
|
164
|
+
variantId: oVariantInput.id || CompVariant.STANDARD_VARIANT_ID,
|
|
165
|
+
persisted: oVariantInput.persisted,
|
|
166
|
+
reference: mPropertyBag.reference,
|
|
167
|
+
favorite: oVariantInput.favorite,
|
|
168
|
+
executeOnSelection: oVariantInput.executeOnSelection,
|
|
169
|
+
adaptationId: oVariantInput.adaptationId,
|
|
170
|
+
content: oVariantInput.content || {},
|
|
171
|
+
texts: {
|
|
172
|
+
variantName: {
|
|
173
|
+
value: oVariantInput.name || ""
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
selector: {
|
|
177
|
+
persistencyKey: mPropertyBag.persistencyKey
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
return FlexObjectFactory.createCompVariant(oVariantData);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
function escapeSpecialIdCharacters(sId) {
|
|
185
|
+
return sId?.replace("#", "_HASHTAG_");
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
CompVariantManagementState.applyChangesOnVariants = function(sReference, sPersistencyKey, aVariants) {
|
|
189
|
+
const mChangesByVariantId = oChangesByVariantIdsDataSelector.get({
|
|
190
|
+
reference: sReference,
|
|
191
|
+
persistencyKey: sPersistencyKey
|
|
192
|
+
});
|
|
193
|
+
aVariants.forEach((oVariant) => {
|
|
194
|
+
const aChangesOnVariant = mChangesByVariantId[oVariant.getVariantId()] || [];
|
|
195
|
+
if (aChangesOnVariant.length > 0) {
|
|
196
|
+
applyChangesOnVariant(oVariant, aChangesOnVariant);
|
|
197
|
+
oCompEntitiesDataSelector.checkUpdate(
|
|
198
|
+
{ reference: sReference },
|
|
199
|
+
[{ type: "updateFlexObject", updatedObject: oVariant }]
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
|
|
204
|
+
return aVariants;
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Access to the variant management comp entities selector.
|
|
209
|
+
*
|
|
210
|
+
* @returns {object} The data selector for the variants and their changes
|
|
211
|
+
*
|
|
212
|
+
* @private
|
|
213
|
+
* @ui5-restricted sap.ui.fl.qunit
|
|
214
|
+
*/
|
|
215
|
+
CompVariantManagementState.getCompEntitiesDataSelector = function() {
|
|
216
|
+
return oCompEntitiesDataSelector;
|
|
217
|
+
};
|
|
218
|
+
|
|
53
219
|
/**
|
|
54
220
|
* Access to the variant management set default selector.
|
|
55
221
|
*
|
|
@@ -67,7 +233,7 @@ sap.ui.define([
|
|
|
67
233
|
*
|
|
68
234
|
* @param {object} mPropertyBag Object with the necessary properties
|
|
69
235
|
* @param {string} mPropertyBag.persistencyKey - Persistency key of the variant management
|
|
70
|
-
* @param {string} mPropertyBag.reference -
|
|
236
|
+
* @param {string} mPropertyBag.reference - Flexibility reference of the app
|
|
71
237
|
* @param {sap.ui.fl.apply._internal.flexObjects.CompVariant[]} mPropertyBag.variants - Array of variants which exist for the given variant management
|
|
72
238
|
*
|
|
73
239
|
* @returns {string | undefined} ID of the default variant
|
|
@@ -82,17 +248,95 @@ sap.ui.define([
|
|
|
82
248
|
|
|
83
249
|
mPropertyBag.persistencyKey = String(mPropertyBag.persistencyKey);
|
|
84
250
|
const aDefaultChanges = [...oSetDefaultDataSelector.get(mPropertyBag)].reverse();
|
|
85
|
-
const aDefaultVariantIds = aDefaultChanges
|
|
251
|
+
const aDefaultVariantIds = aDefaultChanges
|
|
252
|
+
.map((oChange) => oChange.getContent().defaultVariantName)
|
|
253
|
+
.map((sId) => escapeSpecialIdCharacters(sId));
|
|
86
254
|
|
|
87
255
|
return aDefaultVariantIds.find((sDefaultVariantId) => aVariantIds.includes(sDefaultVariantId)) || "";
|
|
88
256
|
};
|
|
89
257
|
|
|
90
258
|
/**
|
|
91
|
-
* Returns
|
|
259
|
+
* Returns all variants saved in the FlexState.
|
|
260
|
+
*
|
|
261
|
+
* @param {object} mPropertyBag - Object with the necessary properties
|
|
262
|
+
* @param {string} mPropertyBag.reference - Flex reference of the current app
|
|
263
|
+
* @param {string} mPropertyBag.persistencyKey - Persistency key of the variant management
|
|
264
|
+
* @param {object} mPropertyBag.standardVariant - The standard variant passed by the control
|
|
265
|
+
* @param {string} mPropertyBag.componentId - The ID of the application component
|
|
266
|
+
* @param {boolean} [mPropertyBag.includeDeleted=false] - Flag if also deleted variants should be returned
|
|
267
|
+
*
|
|
268
|
+
* @returns {sap.ui.fl.apply._internal.flexObjects.CompVariant[]} Array of variants
|
|
269
|
+
*/
|
|
270
|
+
CompVariantManagementState.assembleVariantList = function(mPropertyBag) {
|
|
271
|
+
let oStandardVariant = oVariantsDataSelector.get(mPropertyBag).findLast((oVariant) => oVariant.getStandardVariant());
|
|
272
|
+
|
|
273
|
+
if (!oStandardVariant) {
|
|
274
|
+
oStandardVariant = createVariant({
|
|
275
|
+
reference: mPropertyBag.reference,
|
|
276
|
+
persistencyKey: mPropertyBag.persistencyKey,
|
|
277
|
+
variantInput: mPropertyBag.standardVariant,
|
|
278
|
+
standardVariant: true
|
|
279
|
+
});
|
|
280
|
+
FlexState.addRuntimeSteadyObject(mPropertyBag.reference, mPropertyBag.componentId, oStandardVariant);
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
return oVariantsDataSelector.get(mPropertyBag).filter((oVariant) => oVariant.getVisible());
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
* Returns a variant saved in the flex state.
|
|
92
288
|
*
|
|
93
289
|
* @param {object} mPropertyBag Object with the necessary properties
|
|
290
|
+
* @param {string} mPropertyBag.reference - Flex reference of the current app
|
|
94
291
|
* @param {string} mPropertyBag.persistencyKey - Persistency key of the variant management
|
|
95
|
-
* @param {string} mPropertyBag.
|
|
292
|
+
* @param {string} mPropertyBag.id - ID of the variant
|
|
293
|
+
* @param {string} mPropertyBag.componentId - The ID of the application component
|
|
294
|
+
*
|
|
295
|
+
* @returns {sap.ui.fl.apply._internal.flexObjects.CompVariant | undefined} Variant or undefined if the variant cannot be found
|
|
296
|
+
*/
|
|
297
|
+
CompVariantManagementState.getVariant = function(mPropertyBag) {
|
|
298
|
+
return oVariantsDataSelector.get(mPropertyBag).find((oVariant) => oVariant.getVariantId() === mPropertyBag.id);
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
* Returns all changes for a given variant saved in the FlexState.
|
|
303
|
+
*
|
|
304
|
+
* @param {sap.ui.fl.apply._internal.flexObjects.CompVariant} oVariant - Variant for which the changes should be retrieved
|
|
305
|
+
*
|
|
306
|
+
* @returns {sap.ui.fl.apply._internal.flexObjects.UIChange[]} List of changes for the variant
|
|
307
|
+
*/
|
|
308
|
+
CompVariantManagementState.getVariantChanges = function(oVariant) {
|
|
309
|
+
const sReference = oVariant.getFlexObjectMetadata().reference;
|
|
310
|
+
const sVariantId = oVariant.getVariantId();
|
|
311
|
+
const sPersistencyKey = oVariant.getPersistencyKey();
|
|
312
|
+
return oChangesByVariantIdsDataSelector.get({
|
|
313
|
+
reference: sReference,
|
|
314
|
+
persistencyKey: sPersistencyKey
|
|
315
|
+
})?.[sVariantId] || [];
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
CompVariantManagementState.addExternalVariants = function(mPropertyBag) {
|
|
319
|
+
try {
|
|
320
|
+
mPropertyBag.variants?.map((oVariant) => {
|
|
321
|
+
oVariant.reference = mPropertyBag.reference;
|
|
322
|
+
oVariant.fileName = escapeSpecialIdCharacters(oVariant.id); // external oData Variants may have an invalid ID for ManagedObjects
|
|
323
|
+
oVariant.selector = {persistencyKey: mPropertyBag.persistencyKey};
|
|
324
|
+
oVariant.texts = {variantName: {value: oVariant.name}};
|
|
325
|
+
return oVariant;
|
|
326
|
+
})
|
|
327
|
+
.map((oVariant) => FlexObjectFactory.createFromFileContent(oVariant, CompVariant, true))
|
|
328
|
+
.forEach((oFlexObject) => FlexState.addRuntimeSteadyObject(mPropertyBag.reference, mPropertyBag.componentId, oFlexObject));
|
|
329
|
+
} catch (oError) {
|
|
330
|
+
Log.error(`External comp variant could not be added: ${oError.message}`);
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Returns the 'defaultVariant' changes for a given variant management
|
|
336
|
+
*
|
|
337
|
+
* @param {object} mPropertyBag - Object with the necessary properties
|
|
338
|
+
* @param {string} mPropertyBag.persistencyKey - Persistency key of the variant management
|
|
339
|
+
* @param {string} mPropertyBag.reference - Flexibility reference of the app
|
|
96
340
|
*
|
|
97
341
|
* @returns {sap.ui.fl.apply._internal.flexObjects.UpdatableChange[]} 'defaultVariant' changes of the variant management
|
|
98
342
|
*
|
|
@@ -104,5 +348,38 @@ sap.ui.define([
|
|
|
104
348
|
return oSetDefaultDataSelector.get(mPropertyBag);
|
|
105
349
|
};
|
|
106
350
|
|
|
351
|
+
/**
|
|
352
|
+
* Returns the all sap.ui.comp related entities for a given reference
|
|
353
|
+
*
|
|
354
|
+
* @param {object} mPropertyBag Object with the necessary properties
|
|
355
|
+
* @param {string} mPropertyBag.reference - Flexibility reference of the app
|
|
356
|
+
*
|
|
357
|
+
* @returns {sap.ui.fl.apply._internal.flexObjects.FlexObject[]} - All comp variants for a given reference
|
|
358
|
+
*
|
|
359
|
+
* @since 1.140
|
|
360
|
+
* @private
|
|
361
|
+
* @ui5-restricted sap.ui.fl
|
|
362
|
+
*/
|
|
363
|
+
CompVariantManagementState.getCompEntities = (mPropertyBag) => {
|
|
364
|
+
return oCompEntitiesDataSelector.get(mPropertyBag);
|
|
365
|
+
};
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Returns the all sap.ui.comp related entities for a given reference and persistency key
|
|
369
|
+
*
|
|
370
|
+
* @param {object} mPropertyBag Object with the necessary properties
|
|
371
|
+
* @param {string} mPropertyBag.reference - Flexibility reference of the app
|
|
372
|
+
* @param {string} mPropertyBag.persistencyKey - Persistency key of the variant management
|
|
373
|
+
*
|
|
374
|
+
* @returns {sap.ui.fl.apply._internal.flexObjects.FlexObject[]} - all sap.ui.comp related entities for a given reference
|
|
375
|
+
*
|
|
376
|
+
* @since 1.140
|
|
377
|
+
* @private
|
|
378
|
+
* @ui5-restricted sap.ui.fl
|
|
379
|
+
*/
|
|
380
|
+
CompVariantManagementState.getCompEntitiesByPersistencyKey = (mPropertyBag) => {
|
|
381
|
+
return oCompEntitiesByPersistencyKeyDataSelector.get(mPropertyBag);
|
|
382
|
+
};
|
|
383
|
+
|
|
107
384
|
return CompVariantManagementState;
|
|
108
385
|
});
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* OpenUI5
|
|
3
|
+
* (c) Copyright 2025 SAP SE or an SAP affiliate company.
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
sap.ui.define([
|
|
8
|
+
"sap/base/Log"
|
|
9
|
+
], function(
|
|
10
|
+
Log
|
|
11
|
+
) {
|
|
12
|
+
"use strict";
|
|
13
|
+
|
|
14
|
+
var mChangeHandlers = {
|
|
15
|
+
addFavorite(oVariant) {
|
|
16
|
+
oVariant.setFavorite(true);
|
|
17
|
+
},
|
|
18
|
+
removeFavorite(oVariant) {
|
|
19
|
+
oVariant.setFavorite(false);
|
|
20
|
+
},
|
|
21
|
+
updateVariant(oVariant, oChange) {
|
|
22
|
+
var oChangeContent = oChange.getContent();
|
|
23
|
+
if (oChangeContent.executeOnSelection !== undefined) {
|
|
24
|
+
oVariant.setExecuteOnSelection(oChangeContent.executeOnSelection);
|
|
25
|
+
}
|
|
26
|
+
if (oChangeContent.favorite !== undefined) {
|
|
27
|
+
oVariant.setFavorite(oChangeContent.favorite);
|
|
28
|
+
}
|
|
29
|
+
if (oChangeContent.contexts) {
|
|
30
|
+
oVariant.setContexts(oChangeContent.contexts);
|
|
31
|
+
}
|
|
32
|
+
if (oChangeContent.visible !== undefined) {
|
|
33
|
+
oVariant.setVisible(oChangeContent.visible);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (oChangeContent.variantContent) {
|
|
37
|
+
oVariant.setContent(oChangeContent.variantContent, /* bSkipStateChange = */ true);
|
|
38
|
+
}
|
|
39
|
+
var sVariantName = oChange.getText("variantName");
|
|
40
|
+
if (sVariantName) {
|
|
41
|
+
oVariant.setName(sVariantName, /* bSkipStateChange = */ true);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
standardVariant(oVariant, oChange) {
|
|
45
|
+
// legacy change on standard variants
|
|
46
|
+
oVariant.setExecuteOnSelection(oChange.getContent().executeOnSelect);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
function logNoChangeHandler(oVariant, oChange) {
|
|
51
|
+
Log.error(`No change handler for change with the ID '${oChange.getId()}' and type '${oChange.getChangeType()}' defined.
|
|
52
|
+
The variant '${oVariant.getId()}'was not modified'`);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return (oVariant, aChanges = []) => {
|
|
56
|
+
aChanges.forEach(function(oChange) {
|
|
57
|
+
var oChangeHandler = mChangeHandlers[oChange.getChangeType()] || logNoChangeHandler;
|
|
58
|
+
oChangeHandler(oVariant, oChange);
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
});
|
|
@@ -8,12 +8,16 @@ sap.ui.define([
|
|
|
8
8
|
"sap/base/util/restricted/_pick",
|
|
9
9
|
"sap/ui/fl/apply/_internal/changes/Applier",
|
|
10
10
|
"sap/ui/fl/apply/_internal/changes/Reverter",
|
|
11
|
-
"sap/ui/fl/apply/_internal/flexState/
|
|
11
|
+
"sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler",
|
|
12
|
+
"sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState",
|
|
13
|
+
"sap/ui/fl/apply/_internal/flexState/FlexObjectState"
|
|
12
14
|
], function(
|
|
13
15
|
_pick,
|
|
14
16
|
Applier,
|
|
15
17
|
Reverter,
|
|
16
|
-
|
|
18
|
+
DependencyHandler,
|
|
19
|
+
VariantManagementState,
|
|
20
|
+
FlexObjectState
|
|
17
21
|
) {
|
|
18
22
|
"use strict";
|
|
19
23
|
|
|
@@ -75,7 +79,7 @@ sap.ui.define([
|
|
|
75
79
|
*
|
|
76
80
|
* @namespace sap.ui.fl.apply._internal.flexState.controlVariants.Switcher
|
|
77
81
|
* @since 1.74
|
|
78
|
-
* @version 1.
|
|
82
|
+
* @version 1.141.0
|
|
79
83
|
* @private
|
|
80
84
|
* @ui5-restricted
|
|
81
85
|
*/
|
|
@@ -97,8 +101,21 @@ sap.ui.define([
|
|
|
97
101
|
async switchVariant(mPropertyBag) {
|
|
98
102
|
var mChangesToBeSwitched = getControlChangesForVariantSwitch(mPropertyBag);
|
|
99
103
|
|
|
100
|
-
|
|
101
|
-
|
|
104
|
+
const oLiveDependencyMap = FlexObjectState.getLiveDependencyMap(mPropertyBag.reference);
|
|
105
|
+
|
|
106
|
+
// Early setting the changes as queued for revert/apply prevents potential timing issues
|
|
107
|
+
// when e.g. evaluating the App State after the switch
|
|
108
|
+
mChangesToBeSwitched.changesToBeReverted.forEach((oChange) => oChange.setQueuedForRevert());
|
|
109
|
+
mChangesToBeSwitched.changesToBeApplied.forEach((oChange) => {
|
|
110
|
+
if (!oChange.isApplyProcessFinished()) {
|
|
111
|
+
oChange.setQueuedForApply();
|
|
112
|
+
// Add change to the dependency map in advance so that any dependent changes are aware of the change
|
|
113
|
+
DependencyHandler.addRuntimeChangeToMap(oChange, mPropertyBag.appComponent, oLiveDependencyMap);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
await Reverter.revertMultipleChanges(mChangesToBeSwitched.changesToBeReverted, {...mPropertyBag, skipSetQueued: true});
|
|
118
|
+
await Applier.applyMultipleChanges(mChangesToBeSwitched.changesToBeApplied, {...mPropertyBag, skipSetQueued: true});
|
|
102
119
|
VariantManagementState.setCurrentVariant(mPropertyBag);
|
|
103
120
|
}
|
|
104
121
|
|
|
@@ -14,7 +14,6 @@ sap.ui.define([
|
|
|
14
14
|
"sap/ui/fl/apply/_internal/flexState/DataSelector",
|
|
15
15
|
"sap/ui/fl/apply/_internal/flexState/FlexState",
|
|
16
16
|
"sap/ui/fl/changeHandler/condenser/Classification",
|
|
17
|
-
"sap/ui/fl/initial/_internal/Storage",
|
|
18
17
|
"sap/ui/fl/LayerUtils"
|
|
19
18
|
], function(
|
|
20
19
|
_omit,
|
|
@@ -26,7 +25,6 @@ sap.ui.define([
|
|
|
26
25
|
DataSelector,
|
|
27
26
|
FlexState,
|
|
28
27
|
Classification,
|
|
29
|
-
Storage,
|
|
30
28
|
LayerUtils
|
|
31
29
|
) {
|
|
32
30
|
"use strict";
|
|
@@ -55,7 +53,7 @@ sap.ui.define([
|
|
|
55
53
|
*
|
|
56
54
|
* @namespace sap.ui.fl.apply._internal.flexState.controlVariants.VariantManagementState
|
|
57
55
|
* @since 1.74
|
|
58
|
-
* @version 1.
|
|
56
|
+
* @version 1.141.0
|
|
59
57
|
* @private
|
|
60
58
|
* @ui5-restricted
|
|
61
59
|
*/
|
|
@@ -235,9 +233,9 @@ sap.ui.define([
|
|
|
235
233
|
return oGroupedFlexObjects;
|
|
236
234
|
}
|
|
237
235
|
|
|
238
|
-
function createVariantsMap(aFlexObjects) {
|
|
236
|
+
function createVariantsMap(aFlexObjects, mPropertyBag) {
|
|
239
237
|
const oGroupedFlexObjects = groupFlexObjects(aFlexObjects);
|
|
240
|
-
const sReference =
|
|
238
|
+
const sReference = mPropertyBag.reference;
|
|
241
239
|
|
|
242
240
|
const oVariantManagementsMap = {};
|
|
243
241
|
oGroupedFlexObjects.variants.forEach((oVariantInstance) => {
|
|
@@ -346,8 +344,8 @@ sap.ui.define([
|
|
|
346
344
|
return true;
|
|
347
345
|
}
|
|
348
346
|
|
|
349
|
-
const
|
|
350
|
-
const bRelevantType =
|
|
347
|
+
const aRelevantFlexObjectUpdateTypes = ["addFlexObject", "updateFlexObject", "removeFlexObject"];
|
|
348
|
+
const bRelevantType = aRelevantFlexObjectUpdateTypes.includes(oUpdateInfo.type);
|
|
351
349
|
const aRelevantVariantFileTypes = ["ctrl_variant", "ctrl_variant_change", "ctrl_variant_management_change"];
|
|
352
350
|
const bRelevantVariantType = aRelevantVariantFileTypes.includes(oUpdateInfo.updatedObject?.getFileType?.());
|
|
353
351
|
const bHasVariantReference = oUpdateInfo.updatedObject?.getVariantReference?.();
|
|
@@ -495,14 +493,10 @@ sap.ui.define([
|
|
|
495
493
|
* @param {string} mPropertyBag.variantReference - Variant reference to be loaded
|
|
496
494
|
*/
|
|
497
495
|
VariantManagementState.loadVariant = async function(mPropertyBag) {
|
|
498
|
-
|
|
496
|
+
await FlexState.lazyLoadFlVariant({
|
|
499
497
|
variantReference: mPropertyBag.variantReference,
|
|
500
498
|
reference: mPropertyBag.reference
|
|
501
499
|
});
|
|
502
|
-
FlexState.updateWithDataProvided({
|
|
503
|
-
reference: mPropertyBag.reference,
|
|
504
|
-
newData: oStorageResponse
|
|
505
|
-
});
|
|
506
500
|
};
|
|
507
501
|
|
|
508
502
|
/**
|
|
@@ -576,20 +570,43 @@ sap.ui.define([
|
|
|
576
570
|
});
|
|
577
571
|
};
|
|
578
572
|
|
|
573
|
+
VariantManagementState.updateVariant = function(mPropertyBag) {
|
|
574
|
+
oVariantManagementMapDataSelector.checkUpdate(
|
|
575
|
+
{ reference: mPropertyBag.reference },
|
|
576
|
+
[{ type: "updateFlexObject", updatedObject: mPropertyBag.variant }]
|
|
577
|
+
);
|
|
578
|
+
};
|
|
579
|
+
|
|
579
580
|
/**
|
|
580
581
|
* Returns the current variant reference for a given variant management reference.
|
|
581
582
|
*
|
|
582
583
|
* @param {object} mPropertyBag - Object with the necessary properties
|
|
583
584
|
* @param {string} mPropertyBag.vmReference - Variant management reference
|
|
584
585
|
* @param {string} mPropertyBag.reference - Component reference
|
|
585
|
-
* @returns {string} Reference of the current variant
|
|
586
|
+
* @returns {string | undefined} Reference of the current variant or undefined if VM does not exist
|
|
586
587
|
*/
|
|
587
588
|
VariantManagementState.getCurrentVariantReference = function(mPropertyBag) {
|
|
588
589
|
var oVariantManagementSection = oVariantManagementsDataSelector.get({
|
|
589
590
|
variantManagementReference: mPropertyBag.vmReference,
|
|
590
591
|
reference: mPropertyBag.reference
|
|
591
592
|
});
|
|
592
|
-
return oVariantManagementSection
|
|
593
|
+
return oVariantManagementSection?.currentVariant;
|
|
594
|
+
};
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* Returns the default variant reference for a given variant management reference.
|
|
598
|
+
*
|
|
599
|
+
* @param {object} mPropertyBag - Object with the necessary properties
|
|
600
|
+
* @param {string} mPropertyBag.vmReference - Variant management reference
|
|
601
|
+
* @param {string} mPropertyBag.reference - Component reference
|
|
602
|
+
* @returns {string | undefined} Reference of the default variant or undefined if VM does not exist
|
|
603
|
+
*/
|
|
604
|
+
VariantManagementState.getDefaultVariantReference = function(mPropertyBag) {
|
|
605
|
+
const oVariantManagement = oVariantManagementsDataSelector.get({
|
|
606
|
+
variantManagementReference: mPropertyBag.vmReference,
|
|
607
|
+
reference: mPropertyBag.reference
|
|
608
|
+
});
|
|
609
|
+
return oVariantManagement?.defaultVariant;
|
|
593
610
|
};
|
|
594
611
|
|
|
595
612
|
/**
|
|
@@ -625,6 +642,24 @@ sap.ui.define([
|
|
|
625
642
|
return Object.keys(oVariantsMap);
|
|
626
643
|
};
|
|
627
644
|
|
|
645
|
+
/**
|
|
646
|
+
* Returns the variant management reference for a given variant reference.
|
|
647
|
+
*
|
|
648
|
+
* @param {string} sReference - Flex reference of the current app
|
|
649
|
+
* @param {string} sVariantReference - Variant reference to search for
|
|
650
|
+
* @returns {string | undefined} Variant management reference if found, otherwise undefined
|
|
651
|
+
*/
|
|
652
|
+
VariantManagementState.getVariantManagementReferenceForVariant = function(sReference, sVariantReference) {
|
|
653
|
+
const oVariantsMap = oVariantManagementMapDataSelector.get({
|
|
654
|
+
reference: sReference
|
|
655
|
+
});
|
|
656
|
+
return Object.entries(oVariantsMap).find(([, oVM]) => {
|
|
657
|
+
return oVM.variants.some((oVariant) => {
|
|
658
|
+
return oVariant.key === sVariantReference;
|
|
659
|
+
});
|
|
660
|
+
})?.[0];
|
|
661
|
+
};
|
|
662
|
+
|
|
628
663
|
/**
|
|
629
664
|
* Returns all variants saved in the FlexState.
|
|
630
665
|
*
|
|
@@ -791,26 +826,44 @@ sap.ui.define([
|
|
|
791
826
|
};
|
|
792
827
|
|
|
793
828
|
/**
|
|
794
|
-
* Sets the promise for the variant switch for the given reference.
|
|
829
|
+
* Sets the promise for the variant switch for the given flex reference and VM reference.
|
|
795
830
|
*
|
|
796
831
|
* @param {string} sReference - Flex reference of the app
|
|
797
|
-
* @param {Promise<undefined>} oPromise - Variant Switch Promise
|
|
798
832
|
* @param {string} sVMReference - Variant Management reference
|
|
833
|
+
* @param {Promise<undefined>} oPromise - Variant Switch Promise
|
|
799
834
|
*/
|
|
800
|
-
VariantManagementState.setVariantSwitchPromise = function(sReference,
|
|
835
|
+
VariantManagementState.setVariantSwitchPromise = function(sReference, sVMReference, oPromise) {
|
|
801
836
|
mVariantSwitchPromises[sReference] ||= {};
|
|
802
837
|
mVariantSwitchPromises[sReference][sVMReference] = oPromise;
|
|
803
838
|
};
|
|
804
839
|
|
|
805
840
|
/**
|
|
806
|
-
*
|
|
841
|
+
* Waits for the variant switch of a given VM.
|
|
807
842
|
*
|
|
808
843
|
* @param {string} sReference - Flex reference of the app
|
|
844
|
+
* @param {string} sVMReference - Variant Management reference
|
|
809
845
|
* @returns {Promise<undefined>} Variant Switch Promise
|
|
810
846
|
*/
|
|
811
|
-
VariantManagementState.waitForVariantSwitch = function(sReference) {
|
|
847
|
+
VariantManagementState.waitForVariantSwitch = function(sReference, sVMReference) {
|
|
848
|
+
return mVariantSwitchPromises[sReference]?.[sVMReference] || Promise.resolve();
|
|
849
|
+
};
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Waits for all variant switches for the given flex reference.
|
|
853
|
+
*
|
|
854
|
+
* @param {string} sReference - Flex reference of the app
|
|
855
|
+
* @returns {Promise<undefined>} Variant Switches Promise
|
|
856
|
+
*/
|
|
857
|
+
VariantManagementState.waitForAllVariantSwitches = function(sReference) {
|
|
812
858
|
return Promise.all(Object.values(mVariantSwitchPromises[sReference] || {}));
|
|
813
859
|
};
|
|
814
860
|
|
|
861
|
+
VariantManagementState.getVariantsForVariantManagement = function(mPropertyBag) {
|
|
862
|
+
const oVariantManagement = oVariantManagementsDataSelector.get({
|
|
863
|
+
variantManagementReference: mPropertyBag.vmReference,
|
|
864
|
+
reference: mPropertyBag.reference
|
|
865
|
+
});
|
|
866
|
+
return oVariantManagement?.variants || [];
|
|
867
|
+
};
|
|
815
868
|
return VariantManagementState;
|
|
816
869
|
});
|