/*! * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing * permissions and limitations under the License. */ import React from 'react'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import Input from 'nfvo-components/input/validation/InputWrapper.jsx'; import LicenseModelActionHelper from './onboarding/licenseModel/LicenseModelActionHelper.js'; import LicenseAgreementListEditor from './onboarding/licenseModel/licenseAgreement/LicenseAgreementListEditor.js'; import LicenseAgreementActionHelper from './onboarding/licenseModel/licenseAgreement/LicenseAgreementActionHelper.js'; import FeatureGroupListEditor from './onboarding/licenseModel/featureGroups/FeatureGroupListEditor.js'; import FeatureGroupsActionHelper from './onboarding/licenseModel/featureGroups/FeatureGroupsActionHelper.js'; import LicenseKeyGroupsListEditor from './onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsListEditor.js'; import LicenseKeyGroupsActionHelper from './onboarding/licenseModel/licenseKeyGroups/LicenseKeyGroupsActionHelper.js'; import EntitlementPoolsListEditor from './onboarding/licenseModel/entitlementPools/EntitlementPoolsListEditor.js'; import EntitlementPoolsActionHelper from './onboarding/licenseModel/entitlementPools/EntitlementPoolsActionHelper.js'; import SoftwareProductLandingPage from './onboarding/softwareProduct/landingPage/SoftwareProductLandingPage.js'; import SoftwareProductDetails from './onboarding/softwareProduct/details/SoftwareProductDetails.js'; import Onboard from './onboarding/onboard/Onboard.js'; import SoftwareProductActionHelper from './onboarding/softwareProduct/SoftwareProductActionHelper.js'; import FlowsListEditor from './flows/FlowsListEditor.js'; import FlowsActions from './flows/FlowsActions.js'; const mapStateToProps = ({ licenseModelList }) => { return { licenseModelList }; }; const mapActionsToProps = dispatch => { return { onBootstrapped: () => LicenseModelActionHelper.fetchLicenseModels(dispatch), onLicenseAgreementListEditor: licenseModelId => LicenseAgreementActionHelper.fetchLicenseAgreementList(dispatch, { licenseModelId }), onFeatureGroupsListEditor: licenseModelId => FeatureGroupsActionHelper.fetchFeatureGroupsList(dispatch, { licenseModelId }), onLicenseKeyGroupsListEditor: licenseModelId => LicenseKeyGroupsActionHelper.fetchLicenseKeyGroupsList(dispatch, { licenseModelId }), onEntitlementPoolsListEditor: licenseModelId => EntitlementPoolsActionHelper.fetchEntitlementPoolsList(dispatch, { licenseModelId }), onOnboardingCatalog: () => SoftwareProductActionHelper.fetchSoftwareProductList(dispatch), onSoftwareProductDetails: () => SoftwareProductActionHelper.fetchSoftwareProductCategories( dispatch ), onFlowsListEditor: () => FlowsActions.fetchFlows(dispatch) }; }; class ModuleOptions extends React.Component { static propTypes = { onBootstrapped: PropTypes.func.isRequired, onLicenseAgreementListEditor: PropTypes.func.isRequired, onFeatureGroupsListEditor: PropTypes.func.isRequired, onLicenseKeyGroupsListEditor: PropTypes.func.isRequired, onEntitlementPoolsListEditor: PropTypes.func.isRequired, onOnboardingCatalog: PropTypes.func.isRequired, onSoftwareProductDetails: PropTypes.func.isRequired }; state = { currentModule: localStorage.getItem('default-module'), licenseModelId: localStorage.getItem('default-license-model-id') }; componentDidMount() { this.props.onBootstrapped(); } render() { let { currentModule, licenseModelId } = this.state; let { licenseModelList } = this.props; return (
{licenseModelList.map(({ id, vendorName }) => ( ))}
{this.renderModule(currentModule)}
); } renderModule(currentModule) { const { licenseModelId } = this.state; if (!licenseModelId) { return; } switch (currentModule) { case 'LicenseAgreementListEditor': this.props.onLicenseAgreementListEditor(licenseModelId); return ( ); case 'FutureGroupListEditor': this.props.onFeatureGroupsListEditor(licenseModelId); return ( ); case 'EntitlementPoolsListEditor': this.props.onEntitlementPoolsListEditor(licenseModelId); return ( ); case 'LicenseKeyGroupsListEditor': this.props.onLicenseKeyGroupsListEditor(licenseModelId); return ( ); case 'SoftwareProductLanding': return ( ); case 'SoftwareProductDetails': this.props.onSoftwareProductDetails(licenseModelId); return ( ); case 'OnboardingCatalog': this.props.onOnboardingCatalog(); return ; case 'Flows': this.props.onFlowsListEditor(); return ; default: return; } } handleModuleSelection = () => { let selectedModule = this.refs.selectedModule.getValue(); localStorage.setItem('default-module', selectedModule); this.setState({ currentModule: selectedModule }); }; handleLicenseModelIdChange = () => { let licenseModelId = this.refs.licenseModelId.getValue(); localStorage.setItem('default-license-model-id', licenseModelId); this.setState({ licenseModelId }); }; } export default connect(mapStateToProps, mapActionsToProps)(ModuleOptions);