/*! * 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 {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: React.PropTypes.func.isRequired, onLicenseAgreementListEditor: React.PropTypes.func.isRequired, onFeatureGroupsListEditor: React.PropTypes.func.isRequired, onLicenseKeyGroupsListEditor: React.PropTypes.func.isRequired, onEntitlementPoolsListEditor: React.PropTypes.func.isRequired, onOnboardingCatalog: React.PropTypes.func.isRequired, onSoftwareProductDetails: React.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 ( <div style={{marginTop:20}}> <Input name='licenseModel' value={licenseModelId} ref='licenseModelId' type='select' onChange={this.handleLicenseModelIdChange} className='inner-pagination select-input'> <option value='' key={null}>Select License Model</option> { licenseModelList.map(({id, vendorName}) => <option value={id} key={id}>{`${vendorName} License Model`}</option>) } </Input> <Input name='currentView' value={currentModule} ref='selectedModule' type='select' onChange={this.handleModuleSelection} className='inner-pagination select-input'> <option value=''>Select Module</option> <option value='EntitlementPoolsListEditor'>Entitlement Pools</option> <option value='LicenseAgreementListEditor'>License Agreements</option> <option value='FutureGroupListEditor'>Feature Groups</option> <option value='LicenseKeyGroupsListEditor'>License Key Groups</option> <option value='SoftwareProductLanding'>Software Product Landing</option> <option value='SoftwareProductDetails'>Software Product Details</option> <option value='OnboardingCatalog'>Onboarding Catalog</option> <option value='Flows'>Flows</option> </Input> <div className='sub-module-view' style={{paddingTop: 10, margin: 4, borderTop: '1px solid silver'}}> {this.renderModule(currentModule)} </div> </div> ); } renderModule(currentModule) { const {licenseModelId} = this.state; if (!licenseModelId) { return; } switch (currentModule) { case 'LicenseAgreementListEditor': this.props.onLicenseAgreementListEditor(licenseModelId); return <LicenseAgreementListEditor licenseModelId={licenseModelId}/>; case 'FutureGroupListEditor': this.props.onFeatureGroupsListEditor(licenseModelId); return <FeatureGroupListEditor licenseModelId={licenseModelId}/>; case 'EntitlementPoolsListEditor': this.props.onEntitlementPoolsListEditor(licenseModelId); return <EntitlementPoolsListEditor licenseModelId={licenseModelId}/>; case 'LicenseKeyGroupsListEditor': this.props.onLicenseKeyGroupsListEditor(licenseModelId); return <LicenseKeyGroupsListEditor licenseModelId={licenseModelId}/>; case 'SoftwareProductLanding': return <SoftwareProductLandingPage licenseModelId={licenseModelId}/>; case 'SoftwareProductDetails': this.props.onSoftwareProductDetails(licenseModelId); return <SoftwareProductDetails licenseModelId={licenseModelId}/>; case 'OnboardingCatalog': this.props.onOnboardingCatalog(); return <Onboard/>; case 'Flows': this.props.onFlowsListEditor(); return <FlowsListEditor/>; 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);