3670ab910d133cf3deedd199f79b7d6a4cbcf4c2
[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 PropTypes from 'prop-types';
18
19 import i18n from 'nfvo-utils/i18n/i18n.js';
20 import Form from 'nfvo-components/input/validation/Form.jsx';
21
22 import FileDetails from './imagesEditorComponents/FileDetails.jsx';
23 import ImageDetails from './imagesEditorComponents/ImageDetails.jsx';
24 import { imageCustomValidations } from './ImageValidations.js';
25
26 class SoftwareProductComponentsImageEditorView extends React.Component {
27     static propTypes = {
28         onDataChanged: PropTypes.func.isRequired,
29         onSubmit: PropTypes.func.isRequired,
30         onCancel: PropTypes.func.isRequired
31     };
32
33     render() {
34         let {
35             onCancel,
36             onValidateForm,
37             isReadOnlyMode,
38             isFormValid,
39             formReady,
40             data = {},
41             genericFieldInfo,
42             qgenericFieldInfo,
43             dataMap,
44             onDataChanged,
45             isManual,
46             onQDataChanged
47         } = this.props;
48         let { id, fileName } = data;
49         let editingMode = Boolean(id);
50         return (
51             <div>
52                 {genericFieldInfo && (
53                     <Form
54                         ref={form => {
55                             this.form = form;
56                         }}
57                         hasButtons={true}
58                         onSubmit={() => this.submit()}
59                         onReset={() => onCancel()}
60                         labledButtons={true}
61                         isReadOnlyMode={isReadOnlyMode}
62                         isValid={isFormValid}
63                         formReady={formReady}
64                         submitButtonText={
65                             editingMode ? i18n('Save') : i18n('Create')
66                         }
67                         onValidateForm={() =>
68                             onValidateForm(imageCustomValidations)
69                         }
70                         className="vsp-components-image-editor">
71                         <div className="editor-data">
72                             <FileDetails
73                                 editingMode={editingMode}
74                                 genericFieldInfo={genericFieldInfo}
75                                 qgenericFieldInfo={qgenericFieldInfo}
76                                 fileName={fileName}
77                                 onDataChanged={onDataChanged}
78                                 isManual={isManual}
79                                 dataMap={dataMap}
80                                 onQDataChanged={onQDataChanged}
81                             />
82                             {editingMode && (
83                                 <ImageDetails
84                                     dataMap={dataMap}
85                                     qgenericFieldInfo={qgenericFieldInfo}
86                                     onQDataChanged={onQDataChanged}
87                                 />
88                             )}
89                         </div>
90                     </Form>
91                 )}
92             </div>
93         );
94     }
95     submit() {
96         let { data, qdata, onSubmit, version } = this.props;
97         onSubmit({ data, qdata, version });
98     }
99 }
100
101 export default SoftwareProductComponentsImageEditorView;