blob: 63296b57c903e9e05ab39445fbccc1f3c3e075a2 [file] [log] [blame]
/*!
* 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);