| /*! |
| * 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 ( |
| <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); |