1 import React from 'react';
3 import i18n from 'nfvo-utils/i18n/i18n.js';
5 import ValidationForm from 'nfvo-components/input/validation/ValidationForm.jsx';
6 import ValidationInput from 'nfvo-components/input/validation/ValidationInput.jsx';
8 class SoftwareProductComponentsNetworkEditorView extends React.Component {
11 let {onCancel, isReadOnlyMode} = this.props;
16 onSubmit={ () => this.submit() }
17 onReset={ () => onCancel() }
19 isReadOnlyMode={isReadOnlyMode}
20 className='vsp-components-network-editor'>
21 {this.renderEditorFields()}
26 renderEditorFields() {
27 let {data = {}, qdata = {}, qschema = {}, onQDataChanged, onDataChanged, isReadOnlyMode} = this.props;
28 let {name, description, networkName} = data;
29 let netWorkValues = [{
34 <div className='editor-data'>
36 <div className='col-md-6'>
43 <div className='col-md-6'>
45 label={i18n('Purpose of NIC')}
47 onChange={description => onDataChanged({description})}
48 disabled={isReadOnlyMode}
53 onDataChanged={onQDataChanged}
56 isReadOnlyMode={isReadOnlyMode}
59 <div className='part-title'>{i18n('Protocols')}</div>
60 <div className='col-md-6'>
62 label={i18n('Protocols')}
64 pointer='/protocols/protocols'/>
66 <div className='col-md-6'>
68 label={i18n('Protocol with Highest Traffic Profile')}
70 pointer='/protocols/protocolWithHighestTrafficProfile'/>
74 <div className='part-title'>{i18n('IP Configuration')}</div>
75 <div className='col-md-3'>
77 label={i18n('IPv4 Required')}
79 pointer='/ipConfiguration/ipv4Required'/>
81 <div className='col-md-9'>
83 label={i18n('IPv6 Required')}
85 pointer='/ipConfiguration/ipv6Required'/>
90 <div className='part-title'>{i18n('Network')}</div>
91 <div className='col-md-2'>
93 label={i18n('Internal')}
96 className='network-radio disabled'
99 <div className='col-md-4'>
101 label={i18n('External')}
104 className='network-radio disabled'
107 <div className='col-md-6'>
109 label={i18n('Network')}
112 values={netWorkValues}/>
116 onDataChanged={onQDataChanged}
119 isReadOnlyMode={isReadOnlyMode}
121 <div className='row'>
122 <div className='part-title'>{i18n('Sizing')}</div>
123 <div className='col-md-12'>
125 label={i18n('Describe Quality of Service')}
127 pointer='/sizing/describeQualityOfService'/>
131 <div className='row'>
132 <div className='part-title'>{i18n('Inflow Traffic per second')}</div>
135 <div className='row'>
136 <div className='col-md-6'>
137 <div className='row'>
138 <div className='part-title-small'>{i18n('Packets')}</div>
140 <div className='row'>
141 <div className='col-md-6'>
145 pointer='/sizing/inflowTrafficPerSecond/packets/peak'/>
147 <div className='col-md-6'>
151 pointer='/sizing/inflowTrafficPerSecond/packets/avg'/>
155 <div className='col-md-6'>
156 <div className='row'>
157 <div className='part-title-small'>{i18n('Bytes')}</div>
159 <div className='row'>
160 <div className='col-md-6'>
164 pointer='/sizing/inflowTrafficPerSecond/bytes/peak'/>
167 <div className='col-md-6'>
171 pointer='/sizing/inflowTrafficPerSecond/bytes/avg'/>
177 <div className='row'>
178 <div className='part-title'>{i18n('Outflow Traffic per second')}</div>
181 <div className='row'>
182 <div className='col-md-6'>
183 <div className='row'>
184 <div className='part-title-small'>{i18n('Packets')}</div>
186 <div className='row'>
187 <div className='col-md-6'>
191 pointer='/sizing/outflowTrafficPerSecond/packets/peak'/>
193 <div className='col-md-6'>
197 pointer='/sizing/outflowTrafficPerSecond/packets/avg'/>
202 <div className='col-md-6'>
203 <div className='row'>
204 <div className='part-title-small'>{i18n('Bytes')}</div>
206 <div className='row'>
207 <div className='col-md-6'>
211 pointer='/sizing/outflowTrafficPerSecond/bytes/peak'/>
214 <div className='col-md-6'>
218 pointer='/sizing/outflowTrafficPerSecond/bytes/avg'/>
225 <div className='row'>
226 <div className='part-title'>{i18n('Flow Length')}</div>
229 <div className='row'>
230 <div className='col-md-6'>
231 <div className='row'>
232 <div className='part-title-small'>{i18n('Packets')}</div>
234 <div className='row'>
235 <div className='col-md-6'>
239 pointer='/sizing/flowLength/packets/peak'/>
241 <div className='col-md-6'>
245 pointer='/sizing/flowLength/packets/avg'/>
249 <div className='col-md-6'>
250 <div className='row'>
251 <div className='part-title-small'>{i18n('Bytes')}</div>
253 <div className='row'>
254 <div className='col-md-6'>
258 pointer='/sizing/flowLength/bytes/peak'/>
261 <div className='col-md-6'>
265 pointer='/sizing/flowLength/bytes/avg'/>
271 <div className='row'>
272 <div className='col-md-9'>
273 <div className='row'>
274 <div className='part-title-small'>{i18n('Acceptable Jitter')}</div>
276 <div className='row'>
277 <div className='col-md-4'>
281 pointer='/sizing/acceptableJitter/mean'/>
283 <div className='col-md-4'>
287 pointer='/sizing/acceptableJitter/max'/>
289 <div className='col-md-4'>
293 pointer='/sizing/acceptableJitter/variable'/>
297 <div className='col-md-3'>
298 <div className='row'>
299 <div className='part-title-small'>{i18n('Acceptable Packet Loss %')}</div>
301 <div className='row'>
302 <div className='col-md-12'>
304 label={i18n('In Percent')}
306 pointer='/sizing/acceptablePacketLoss'/>
317 let {data, qdata, onSubmit} = this.props;
318 onSubmit({data, qdata});
322 export default SoftwareProductComponentsNetworkEditorView;