1 import {itemTypes} from 'sdc-app/onboarding/versionsPage/VersionsPageConstants.js';
2 import {enums, screenTypes} from 'sdc-app/onboarding/OnboardingConstants.js';
3 import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js';
4 import {actionTypes as SoftwareProductActionTypes} from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js';
5 import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js';
6 import versionPageActionHelper from 'sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js';
7 import i18n from 'nfvo-utils/i18n/i18n.js';
8 import {actionTypes as modalActionTypes} from 'nfvo-components/modal/GlobalModalConstants.js';
10 const ScreensHelper = {
11 async loadScreen(dispatch, {screen, screenType, props}) {
12 if(screen === enums.SCREEN.ONBOARDING_CATALOG) {
13 OnboardingActionHelper.navigateToOnboardingCatalog(dispatch);
17 screenType = !screenType ? this.getScreenType(screen) : screenType;
19 if(screenType === screenTypes.LICENSE_MODEL) {
20 const {licenseModelId, version, licenseModel, usersList} = props;
21 const item = await ItemsHelper.fetchItem(licenseModelId);
22 let itemStatusPromise = version && screen ?
23 ItemsHelper.checkItemStatus(dispatch, {itemId: licenseModelId, versionId: version.id}) :
25 itemStatusPromise.then((updatedVersion) => {
26 if (updatedVersion && updatedVersion.status !== version.status) {
28 type: modalActionTypes.GLOBAL_MODAL_WARNING,
30 title: i18n('Commit error'),
31 msg: i18n('Item version was certified by Owner'),
32 cancelButtonText: i18n('Cancel')
35 versionPageActionHelper.fetchVersions(dispatch, {itemType: itemTypes.LICENSE_MODEL, itemId: licenseModelId});
37 let newVersion = updatedVersion ? updatedVersion : version;
38 const screenProps = {licenseModelId, version: newVersion, status: item.status};
40 case enums.SCREEN.LICENSE_MODEL_OVERVIEW:
41 OnboardingActionHelper.navigateToLicenseModelOverview(dispatch, screenProps);
43 case enums.SCREEN.LICENSE_AGREEMENTS:
44 OnboardingActionHelper.navigateToLicenseAgreements(dispatch, screenProps);
46 case enums.SCREEN.FEATURE_GROUPS:
47 OnboardingActionHelper.navigateToFeatureGroups(dispatch, screenProps);
49 case enums.SCREEN.ENTITLEMENT_POOLS:
50 OnboardingActionHelper.navigateToEntitlementPools(dispatch, screenProps);
52 case enums.SCREEN.LICENSE_KEY_GROUPS:
53 OnboardingActionHelper.navigateToLicenseKeyGroups(dispatch, screenProps);
55 case enums.SCREEN.ACTIVITY_LOG:
56 OnboardingActionHelper.navigateToLicenseModelActivityLog(dispatch, screenProps);
58 case enums.SCREEN.VERSIONS_PAGE:
60 OnboardingActionHelper.navigateToVersionsPage(dispatch, {
61 itemId: licenseModelId,
62 itemType: itemTypes.LICENSE_MODEL,
63 itemName: licenseModel.name,
71 else if(screenType === screenTypes.SOFTWARE_PRODUCT) {
72 const {softwareProductId, componentId, version, softwareProduct, usersList} = props;
73 const item = await ItemsHelper.fetchItem(softwareProductId);
74 let itemStatusPromise = version && screen ?
75 ItemsHelper.checkItemStatus(dispatch, {itemId: softwareProductId, versionId: version.id}) :
77 itemStatusPromise.then((updatedVersion) => {
78 if (updatedVersion && updatedVersion.status !== version.status) {
80 type: modalActionTypes.GLOBAL_MODAL_WARNING,
82 title: i18n('Commit error'),
83 msg: i18n('Item version already Certified'),
84 cancelButtonText: i18n('Cancel')
87 versionPageActionHelper.fetchVersions(dispatch, {itemType: itemTypes.SOFTWARE_PRODUCT, itemId: softwareProductId});
90 let newVersion = updatedVersion ? updatedVersion : version;
98 if (screen === screenTypes.SOFTWARE_PRODUCT_COMPONENT_DEFAULT_GENERAL) {
99 OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(dispatch, props);
103 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS:
104 OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel(dispatch, props);
106 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL:
107 OnboardingActionHelper.navigateToSoftwareProductComponentGeneral(dispatch, props);
109 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE:
110 OnboardingActionHelper.navigateToComponentCompute(dispatch, props);
112 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING:
113 OnboardingActionHelper.navigateToComponentLoadBalancing(dispatch, props);
115 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK:
116 OnboardingActionHelper.navigateToComponentNetwork(dispatch, props);
118 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE:
119 OnboardingActionHelper.navigateToComponentStorage(dispatch, props);
121 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES:
122 OnboardingActionHelper.navigateToSoftwareProductComponentProcesses(dispatch, props);
124 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING:
125 OnboardingActionHelper.navigateToSoftwareProductComponentMonitoring(dispatch, props);
127 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES:
128 OnboardingActionHelper.navigateToComponentImages(dispatch, props);
130 case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE:
131 OnboardingActionHelper.navigateToSoftwareProductLandingPage(dispatch, props);
133 case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS:
134 OnboardingActionHelper.navigateToSoftwareProductDetails(dispatch, props);
136 case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS_SETUP:
137 OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab(dispatch, props);
139 case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS_VALIDATION:
140 OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab(dispatch, props);
142 case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES:
143 OnboardingActionHelper.navigateToSoftwareProductProcesses(dispatch, props);
145 case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT:
146 OnboardingActionHelper.navigateToSoftwareProductDeployment(dispatch, props);
148 case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS:
149 OnboardingActionHelper.navigateToSoftwareProductNetworks(dispatch, props);
151 case enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES:
152 OnboardingActionHelper.navigateToSoftwareProductDependencies(dispatch, props);
154 case enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG:
155 OnboardingActionHelper.navigateToSoftwareProductActivityLog(dispatch, props);
157 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS:
158 OnboardingActionHelper.navigateToSoftwareProductComponents(dispatch, props);
160 type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM,
162 [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: true
166 case enums.SCREEN.SOFTWARE_PRODUCT_VERSIONS_PAGE:
168 OnboardingActionHelper.navigateToVersionsPage(dispatch, {
169 itemId: softwareProductId,
170 itemType: itemTypes.SOFTWARE_PRODUCT,
171 itemName: softwareProduct.name,
174 licenseModelId: softwareProduct.vendorId,
175 licensingVersion: softwareProduct.licensingVersion
184 getScreenType(screen) {
186 case enums.SCREEN.LICENSE_MODEL_OVERVIEW:
187 case enums.SCREEN.LICENSE_AGREEMENTS:
188 case enums.SCREEN.FEATURE_GROUPS:
189 case enums.SCREEN.ENTITLEMENT_POOLS:
190 case enums.SCREEN.LICENSE_KEY_GROUPS:
191 case enums.SCREEN.ACTIVITY_LOG:
192 return screenTypes.LICENSE_MODEL;
193 case screenTypes.SOFTWARE_PRODUCT_COMPONENT_DEFAULT_GENERAL:
194 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL:
195 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE:
196 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING:
197 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK:
198 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE:
199 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES:
200 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING:
201 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES:
202 case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE:
203 case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS:
204 case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS:
205 case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES:
206 case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT:
207 case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS:
208 case enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES:
209 case enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG:
210 case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS:
211 return screenTypes.SOFTWARE_PRODUCT;
215 loadLandingScreen(dispatch, {previousScreenName, screenType, props: {licenseModelId, softwareProductId, version}}) {
216 let selectedScreenType = screenType ? screenType : this.getScreenType(previousScreenName);
217 let screen = selectedScreenType === screenTypes.SOFTWARE_PRODUCT ?
218 enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE :
219 enums.SCREEN.LICENSE_MODEL_OVERVIEW;
220 let props = {licenseModelId, softwareProductId, version};
221 return this.loadScreen(dispatch, {screen, screenType: selectedScreenType, props});
225 export default ScreensHelper;