import React, {Component, PropTypes} from 'react'; import i18n from 'nfvo-utils/i18n/i18n.js'; import Form from 'nfvo-components/input/validation/ValidationForm.jsx'; import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; import SoftwareProductCategoriesHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js'; class SoftwareProductDetails extends Component { static propTypes = { vendorName: PropTypes.string, currentSoftwareProduct: PropTypes.shape({ id: PropTypes.string, name: PropTypes.string, description: PropTypes.string, category: PropTypes.string, subCategory: PropTypes.string, vendorId: PropTypes.string, vendorName: PropTypes.string, licensingVersion: PropTypes.string, licensingData: PropTypes.shape({ licenceAgreement: PropTypes.string, featureGroups: PropTypes.array }) }), softwareProductCategories: PropTypes.array, finalizedLicenseModelList: PropTypes.array, licenseAgreementList: PropTypes.array, featureGroupsList: PropTypes.array, onSubmit: PropTypes.func.isRequired, onDataChanged: PropTypes.func.isRequired, onValidityChanged: PropTypes.func.isRequired, qdata: PropTypes.object.isRequired, qschema: PropTypes.object.isRequired, onQDataChanged: PropTypes.func.isRequired, onVendorParamChanged: PropTypes.func.isRequired }; state = { licensingVersionsList: [] }; render() { let {softwareProductCategories, finalizedLicenseModelList, onDataChanged, featureGroupsList, licenseAgreementList, currentSoftwareProduct} = this.props; let {name, description, vendorId, licensingVersion, subCategory, licensingData = {}} = currentSoftwareProduct; let licensingVersionsList = this.state.licensingVersionsList.length > 0 ? this.state.licensingVersionsList : this.refreshVendorVersionsList(vendorId); let {qdata, qschema, onQDataChanged} = this.props; let {isReadOnlyMode} = this.props; return (
this.props.onSubmit(currentSoftwareProduct, qdata)} onValidityChanged={(isValidityData) => this.props.onValidityChanged(isValidityData)} isReadOnlyMode={isReadOnlyMode}>
{i18n('General')}
onDataChanged({name})} validations={{validateName: true, maxLength: 120, required: true}} className='field-section'/> this.onVendorParamChanged({vendorId})} className='field-section'> {finalizedLicenseModelList.map(lm => )}
this.onSelectSubCategory(subCategory)} className='field-section'> { softwareProductCategories.map(category => category.subcategories && {category.subcategories.map(sub => )} ) }
onDataChanged({description})} className='field-section' validations={{required: true}}/>
{i18n('Licenses')}
this.onVendorParamChanged({vendorId, licensingVersion})} selectedEnum={licensingVersion} label={i18n('Licensing Version')} values={licensingVersionsList} type='select' className='field-section'/> this.onLicensingDataChanged({licenseAgreement, featureGroups: []})}> {licenseAgreementList.map(la => )}
{licensingData.licenseAgreement && ( this.onFeatureGroupsChanged({featureGroups})} multiSelectedEnum={licensingData.featureGroups} name='feature-groups' label={i18n('Feature Groups')} clearable={false} values={featureGroupsList}/>) }
{i18n('Availability')}
{i18n('Regions')}
{i18n('Storage Data Replication')}
); } onVendorParamChanged({vendorId, licensingVersion}) { let {finalizedLicenseModelList, onVendorParamChanged} = this.props; if(!licensingVersion) { const licensingVersionsList = this.refreshVendorVersionsList(vendorId); licensingVersion = licensingVersionsList.length > 0 ? licensingVersionsList[0].enum : ''; } let vendorName = finalizedLicenseModelList.find(licenseModelItem => licenseModelItem.id === vendorId).vendorName || ''; let deltaData = { vendorId, vendorName, licensingVersion, licensingData: {} }; onVendorParamChanged(deltaData); } refreshVendorVersionsList(vendorId) { if(!vendorId) { return []; } let {finalVersions} = this.props.finalizedLicenseModelList.find(vendor => vendor.id === vendorId); let licensingVersionsList = [{ enum: '', title: i18n('Select...') }]; if(finalVersions) { finalVersions.forEach(version => licensingVersionsList.push({ enum: version, title: version })); } return licensingVersionsList; } onSelectSubCategory(subCategory) { let {softwareProductCategories, onDataChanged} = this.props; let category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory(subCategory, softwareProductCategories); onDataChanged({category, subCategory}); } onFeatureGroupsChanged({featureGroups}) { this.onLicensingDataChanged({featureGroups}); } onLicensingDataChanged(deltaData) { this.props.onDataChanged({ licensingData: { ...this.props.currentSoftwareProduct.licensingData, ...deltaData } }); } save(){ return this.refs.validationForm.handleFormSubmit(new Event('dummy')); } } export default SoftwareProductDetails;