8f8a504629c14d44b7a43b1322db99d959ce7c66
[sdc.git] /
1 /*!
2  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
13  * or implied. See the License for the specific language governing
14  * permissions and limitations under the License.
15  */
16 import React from 'react';
17 import Form from 'nfvo-components/input/validation/Form.jsx';
18 import Input from 'nfvo-components/input/validation/Input.jsx';
19 import GridSection from 'nfvo-components/grid/GridSection.jsx';
20 import GridItem from 'nfvo-components/grid/GridItem.jsx';
21 import VmSizing from './VmSizing.jsx';
22 import i18n from 'nfvo-utils/i18n/i18n.js';
23
24 class ComputeEditorView extends React.Component {
25
26         static propTypes = {
27                 data: React.PropTypes.object,
28                 qdata: React.PropTypes.object,
29                 qschema: React.PropTypes.object,
30                 isReadOnlyMode: React.PropTypes.bool,
31                 isManual: React.PropTypes.bool,
32                 onDataChanged: React.PropTypes.func.isRequired,
33                 onQDataChanged: React.PropTypes.func.isRequired,
34                 onSubmit: React.PropTypes.func.isRequired,
35                 onCancel: React.PropTypes.func.isRequired
36         };
37
38         render() {
39                 let {data = {}, qdata = {}, qgenericFieldInfo, dataMap, genericFieldInfo, isReadOnlyMode, isManual, isFormValid, formReady,
40                         onDataChanged, onQDataChanged, onSubmit, onCancel, onValidateForm} = this.props;
41                 const {id, name, description} = data;
42                 const edittingComputeMode = Boolean(id);
43
44                 return (
45                         <div className='vsp-component-computeFlavor-view'>
46                                 {genericFieldInfo && <Form
47                                         ref={(form) => {
48                                                 this.form = form;
49                                         }}
50                                         hasButtons={true}
51                                         onSubmit={ () => onSubmit({data, qdata}) }
52                                         onReset={ () => onCancel() }
53                                         labledButtons={true}
54                                         isReadOnlyMode={isReadOnlyMode}
55                                         isValid={isFormValid}
56                                         formReady={formReady}
57                                         onValidateForm={() => onValidateForm() }
58                                         className='component-questionnaire-validation-form'
59                                         submitButtonText={edittingComputeMode ? i18n('Save') : i18n('Create')}>
60                                         <GridSection>
61                                                 <GridItem colSpan={edittingComputeMode ? 2 : 4}>
62                                                         <Input
63                                                                 disabled={!isManual}
64                                                                 data-test-id='name'
65                                                                 type='text'
66                                                                 label={i18n('Flavor Name')}
67                                                                 value={name}
68                                                                 onChange={name => onDataChanged({name})}
69                                                                 isValid={genericFieldInfo['name'].isValid}
70                                                                 errorText={genericFieldInfo['name'].errorText}
71                                                                 isRequired/>
72                                                         </GridItem>
73                                                         <GridItem colSpan={edittingComputeMode ? 2 : 4}>
74                                                         <Input
75                                                                 data-test-id='description'
76                                                                 type='textarea'
77                                                                 label={i18n('Description')}
78                                                                 value={description}
79                                                                 onChange={description => onDataChanged({description})}
80                                                                 isValid={genericFieldInfo['description'].isValid}
81                                                                 errorText={genericFieldInfo['description'].errorText}/>
82                                                 </GridItem>
83                                         </GridSection>
84                                         {edittingComputeMode && <VmSizing qgenericFieldInfo={qgenericFieldInfo} dataMap={dataMap} onQDataChanged={onQDataChanged}/>}
85                                 </Form>
86                                 }
87                         </div>
88                 );
89         }
90
91         save(){
92                 return this.form.handleFormSubmit(new Event('dummy'));
93         }
94 }
95
96 export default ComputeEditorView;