4 * Copyright 2016 RIFT.IO Inc
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
24 import React
from 'react'
25 import Range
from '../Range'
26 import Button
from '../Button'
27 import ClassNames
from 'classnames'
28 import changeCase
from 'change-case'
29 import LayoutRow
from '../LayoutRow'
30 import SelectionManager
from '../../libraries/SelectionManager'
31 import PureRenderMixin
from 'react-addons-pure-render-mixin'
32 import CatalogItemsActions
from '../../actions/CatalogItemsActions'
33 import CanvasEditorActions
from '../../actions/CanvasEditorActions'
34 import DescriptorModelFactory
from '../../libraries/model/DescriptorModelFactory'
35 import ComposerAppActions
from '../../actions/ComposerAppActions'
36 import DescriptorModelMetaFactory
from '../../libraries/model/DescriptorModelMetaFactory'
37 import ComposerAppStore
from '../../stores/ComposerAppStore'
38 import DeletionManager
from '../../libraries/DeletionManager'
39 import ContentEditableDiv
from '../ContentEditableDiv'
40 import TooltipManager
from '../../libraries/TooltipManager'
41 import HighlightRecordServicePaths
from '../../libraries/graph/HighlightRecordServicePaths'
43 import '../../styles/EditForwardingGraphPaths.scss'
45 import imgNSD
from '../../images/default-catalog-icon.svg'
46 import imgFG
from '../../../../node_modules/open-iconic/svg/infinity.svg'
47 import imgRemove
from '../../../../node_modules/open-iconic/svg/trash.svg'
48 import imgAdd
from '../../../../node_modules/open-iconic/svg/plus.svg'
49 import imgConnection
from '../../../../node_modules/open-iconic/svg/random.svg'
50 import imgClassifier
from '../../../../node_modules/open-iconic/svg/spreadsheet.svg'
51 import imgReorder
from '../../../../node_modules/open-iconic/svg/menu.svg'
52 import EditConfigParameterMap
from '../EditConfigParameterMap'
53 function configParameterMapMap(ap
, i
) {
56 context
.vnfapMap
= ap
;
60 <div
>{ap
.capability
['member-vnf-index']}</div
>
61 <div
>{ap
.capability
['capability-ref']}</div
>
68 function mapNSD(nsd
, i
) {
73 function onClickAddConfigParameterMap(nsd
, event
) {
74 event
.preventDefault();
75 nsd
.createConfigParameterMap();
76 CatalogItemsActions
.catalogItemDescriptorChanged(nsd
.getRoot());
79 const forwardingGraphs
= nsd
.configParameterMap
.map(configParameterMap
.bind(context
));
80 if (forwardingGraphs
.length
=== 0) {
81 forwardingGraphs
.push(
82 <div key
="1" className
="welcome-message">
83 No Forwarding Graphs to model
.
89 <div key
={i
} className
={nsd
.className
}>
91 <div className
="footer-actions">
92 <div className
="row-action-column">
93 <Button className
="create-new-forwarding-graph" src
={imgAdd
} width
="20px" onClick
={onClickAddConfigParameterMap
.bind(null, nsd
)} label
="Add new Access Point" />
101 const ConfigPrimitiveParameters
= React
.createClass({
102 mixins
: [PureRenderMixin
],
103 getInitialState: function () {
104 return ComposerAppStore
.getState();
106 getDefaultProps: function () {
111 componentWillMount: function () {
113 componentDidMount: function () {
115 componentDidUpdate: function () {
117 componentWillUnmount: function () {
121 const containers
= this.props
.containers
;
124 containers
: containers
127 const networkService
= containers
.filter(d
=> d
.type
=== 'nsd');
128 if (networkService
.length
=== 0) {
129 return <p className
="welcome-message">No
<img src
={imgNSD
} width
="20px" /> NSD open in the canvas. Try opening an NSD.</p>;
132 <div className
="ConfigParameterMap">
133 <div className
="config-parameter-map">
134 <div className
="config-parameter-titles">
135 <div className
="config-parameter">
138 <div className
="config-parameter">
143 containers
.map(function(c
, i
) {
144 if(c
.className
== 'ConfigParameterMap') {
145 return <EditConfigParameterMap key
={i
} container
={c
} width
={self
.props
.width
} />
149 <div className
="toggle-bottom-spacer" style
={{visibility
: 'hidden', 'height': '50%', position
: 'absolute'}}>We need
this so when the user closes the panel it won
't shift away and scare the bj out of them!</div>
158 export default ConfigPrimitiveParameters;
159 //<EditDescriptorModelProperties container={DescriptorModelMetaFactory.createModelInstanceForType('nsd
.vnffgd
.rsp
')} width={this.props.width} />