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