import React from 'react'; import i18n from 'nfvo-utils/i18n/i18n.js'; import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx'; import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx'; import SoftwareProductCategoriesHelper from 'sdc-app/onboarding/softwareProduct/SoftwareProductCategoriesHelper.js'; const SoftwareProductPropType = React.PropTypes.shape({ id: React.PropTypes.string, name: React.PropTypes.string, description: React.PropTypes.string, category: React.PropTypes.string, subCategory: React.PropTypes.string, vendorId: React.PropTypes.string }); class SoftwareProductCreationView extends React.Component { static propTypes = { data: SoftwareProductPropType, finalizedLicenseModelList: React.PropTypes.array, softwareProductCategories: React.PropTypes.array, onDataChanged: React.PropTypes.func.isRequired, onSubmit: React.PropTypes.func.isRequired, onCancel: React.PropTypes.func.isRequired }; render() { let {softwareProductCategories, data = {}, onDataChanged, onCancel} = this.props; let {name, description, vendorId, subCategory} = data; const vendorList = this.getVendorList(); return (
this.submit() } onReset={() => onCancel() } labledButtons={true}>
onDataChanged({name})} validations={{validateName: true, maxLength: 25, required: true}} type='text' className='field-section'/> onDataChanged({vendorId})} value={vendorId} label={i18n('Vendor')} values={vendorList} validations={{required: true}} type='select' className='field-section'/> this.onSelectSubCategory(subCategory)} validations={{required: true}} className='options-input-category'> {softwareProductCategories.map(category => category.subcategories && {category.subcategories.map(sub => )} ) }
onDataChanged({description})} validations={{freeEnglishText: true, maxLength: 1000, required: true}} type='textarea' className='field-section'/>
); } getVendorList() { let {finalizedLicenseModelList} = this.props; return [{enum: '', title: i18n('please select...')}].concat(finalizedLicenseModelList.map(vendor => { return { enum: vendor.id, title: vendor.vendorName }; })); } onSelectSubCategory(subCategory) { let {softwareProductCategories, onDataChanged} = this.props; let category = SoftwareProductCategoriesHelper.getCurrentCategoryOfSubCategory(subCategory, softwareProductCategories); onDataChanged({category, subCategory}); } create(){ this.refs.validationForm.handleFormSubmit(new Event('dummy')); } submit() { const {data:softwareProduct, finalizedLicenseModelList} = this.props; softwareProduct.vendorName = finalizedLicenseModelList.find(vendor => vendor.id === softwareProduct.vendorId).vendorName; this.props.onSubmit(softwareProduct); } } export default SoftwareProductCreationView;