import { itemTypes } from 'sdc-app/onboarding/versionsPage/VersionsPageConstants.js'; import { enums, screenTypes } from 'sdc-app/onboarding/OnboardingConstants.js'; import OnboardingActionHelper from 'sdc-app/onboarding/OnboardingActionHelper.js'; import { actionTypes as SoftwareProductActionTypes } from 'sdc-app/onboarding/softwareProduct/SoftwareProductConstants.js'; import ItemsHelper from 'sdc-app/common/helpers/ItemsHelper.js'; import versionPageActionHelper from 'sdc-app/onboarding/versionsPage/VersionsPageActionHelper.js'; import i18n from 'nfvo-utils/i18n/i18n.js'; import { actionTypes as modalActionTypes } from 'nfvo-components/modal/GlobalModalConstants.js'; const ScreensHelper = { async loadScreen(dispatch, { screen, screenType, props }) { if (screen === enums.SCREEN.ONBOARDING_CATALOG) { OnboardingActionHelper.navigateToOnboardingCatalog(dispatch); return; } screenType = !screenType ? this.getScreenType(screen) : screenType; if (screenType === screenTypes.LICENSE_MODEL) { const { licenseModelId, version, licenseModel, usersList } = props; const item = await ItemsHelper.fetchItem(licenseModelId); let itemStatusPromise = version && screen ? ItemsHelper.checkItemStatus(dispatch, { itemId: licenseModelId, versionId: version.id }) : Promise.resolve(); itemStatusPromise.then(updatedVersion => { if ( updatedVersion && updatedVersion.status !== version.status ) { dispatch({ type: modalActionTypes.GLOBAL_MODAL_WARNING, data: { title: i18n('Commit error'), msg: i18n('Item version was certified by Owner'), cancelButtonText: i18n('Cancel') } }); versionPageActionHelper.fetchVersions(dispatch, { itemType: itemTypes.LICENSE_MODEL, itemId: licenseModelId }); } let newVersion = updatedVersion ? updatedVersion : version; const screenProps = { licenseModelId, version: newVersion, status: item.status }; switch (screen) { case enums.SCREEN.LICENSE_MODEL_OVERVIEW: OnboardingActionHelper.navigateToLicenseModelOverview( dispatch, screenProps ); break; case enums.SCREEN.LICENSE_AGREEMENTS: OnboardingActionHelper.navigateToLicenseAgreements( dispatch, screenProps ); break; case enums.SCREEN.FEATURE_GROUPS: OnboardingActionHelper.navigateToFeatureGroups( dispatch, screenProps ); break; case enums.SCREEN.ENTITLEMENT_POOLS: OnboardingActionHelper.navigateToEntitlementPools( dispatch, screenProps ); break; case enums.SCREEN.LICENSE_KEY_GROUPS: OnboardingActionHelper.navigateToLicenseKeyGroups( dispatch, screenProps ); break; case enums.SCREEN.ACTIVITY_LOG: OnboardingActionHelper.navigateToLicenseModelActivityLog( dispatch, screenProps ); break; case enums.SCREEN.VERSIONS_PAGE: default: OnboardingActionHelper.navigateToVersionsPage( dispatch, { itemId: licenseModelId, itemType: itemTypes.LICENSE_MODEL, itemName: licenseModel.name, users: usersList } ); break; } }); } else if (screenType === screenTypes.SOFTWARE_PRODUCT) { const { softwareProductId, componentId, version, softwareProduct, usersList } = props; const item = await ItemsHelper.fetchItem(softwareProductId); let itemStatusPromise = version && screen ? ItemsHelper.checkItemStatus(dispatch, { itemId: softwareProductId, versionId: version.id }) : Promise.resolve(); itemStatusPromise.then(updatedVersion => { if ( updatedVersion && updatedVersion.status !== version.status ) { dispatch({ type: modalActionTypes.GLOBAL_MODAL_WARNING, data: { title: i18n('Commit error'), msg: i18n('Item version already Certified'), cancelButtonText: i18n('Cancel') } }); versionPageActionHelper.fetchVersions(dispatch, { itemType: itemTypes.SOFTWARE_PRODUCT, itemId: softwareProductId }); } let newVersion = updatedVersion ? updatedVersion : version; const props = { softwareProductId, componentId, version: newVersion, status: item.status }; if ( screen === screenTypes.SOFTWARE_PRODUCT_COMPONENT_DEFAULT_GENERAL ) { OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel( dispatch, props ); } switch (screen) { case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: OnboardingActionHelper.navigateToSoftwareProductComponentGeneralAndUpdateLeftPanel( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL: OnboardingActionHelper.navigateToSoftwareProductComponentGeneral( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: OnboardingActionHelper.navigateToComponentCompute( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: OnboardingActionHelper.navigateToComponentLoadBalancing( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK: OnboardingActionHelper.navigateToComponentNetwork( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE: OnboardingActionHelper.navigateToComponentStorage( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: OnboardingActionHelper.navigateToSoftwareProductComponentProcesses( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: OnboardingActionHelper.navigateToSoftwareProductComponentMonitoring( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES: OnboardingActionHelper.navigateToComponentImages( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE: OnboardingActionHelper.navigateToSoftwareProductLandingPage( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS: OnboardingActionHelper.navigateToSoftwareProductDetails( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS_SETUP: OnboardingActionHelper.navigateToSoftwareProductAttachmentsSetupTab( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS_VALIDATION: OnboardingActionHelper.navigateToSoftwareProductAttachmentsValidationTab( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES: OnboardingActionHelper.navigateToSoftwareProductProcesses( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT: OnboardingActionHelper.navigateToSoftwareProductDeployment( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS: OnboardingActionHelper.navigateToSoftwareProductNetworks( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES: OnboardingActionHelper.navigateToSoftwareProductDependencies( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG: OnboardingActionHelper.navigateToSoftwareProductActivityLog( dispatch, props ); break; case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: OnboardingActionHelper.navigateToSoftwareProductComponents( dispatch, props ); dispatch({ type: SoftwareProductActionTypes.TOGGLE_NAVIGATION_ITEM, mapOfExpandedIds: { [enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS]: true } }); break; case enums.SCREEN.SOFTWARE_PRODUCT_VERSIONS_PAGE: default: OnboardingActionHelper.navigateToVersionsPage( dispatch, { itemId: softwareProductId, itemType: itemTypes.SOFTWARE_PRODUCT, itemName: softwareProduct.name, users: usersList, additionalProps: { licenseModelId: softwareProduct.vendorId, licensingVersion: softwareProduct.licensingVersion } } ); break; } }); } }, getScreenType(screen) { switch (screen) { case enums.SCREEN.LICENSE_MODEL_OVERVIEW: case enums.SCREEN.LICENSE_AGREEMENTS: case enums.SCREEN.FEATURE_GROUPS: case enums.SCREEN.ENTITLEMENT_POOLS: case enums.SCREEN.LICENSE_KEY_GROUPS: case enums.SCREEN.ACTIVITY_LOG: return screenTypes.LICENSE_MODEL; case screenTypes.SOFTWARE_PRODUCT_COMPONENT_DEFAULT_GENERAL: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_GENERAL: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_COMPUTE: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_LOAD_BALANCING: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_NETWORK: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_STORAGE: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_PROCESSES: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_MONITORING: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENT_IMAGES: case enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE: case enums.SCREEN.SOFTWARE_PRODUCT_DETAILS: case enums.SCREEN.SOFTWARE_PRODUCT_ATTACHMENTS: case enums.SCREEN.SOFTWARE_PRODUCT_PROCESSES: case enums.SCREEN.SOFTWARE_PRODUCT_DEPLOYMENT: case enums.SCREEN.SOFTWARE_PRODUCT_NETWORKS: case enums.SCREEN.SOFTWARE_PRODUCT_DEPENDENCIES: case enums.SCREEN.SOFTWARE_PRODUCT_ACTIVITY_LOG: case enums.SCREEN.SOFTWARE_PRODUCT_COMPONENTS: return screenTypes.SOFTWARE_PRODUCT; } }, loadLandingScreen( dispatch, { previousScreenName, screenType, props: { licenseModelId, softwareProductId, version } } ) { let selectedScreenType = screenType ? screenType : this.getScreenType(previousScreenName); let screen = selectedScreenType === screenTypes.SOFTWARE_PRODUCT ? enums.SCREEN.SOFTWARE_PRODUCT_LANDING_PAGE : enums.SCREEN.LICENSE_MODEL_OVERVIEW; let props = { licenseModelId, softwareProductId, version }; return this.loadScreen(dispatch, { screen, screenType: selectedScreenType, props }); } }; export default ScreensHelper;