2 Copyright 2013 IBM Corp.
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
8 http://www.apache.org/licenses/LICENSE-2.0
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 or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
17 <script type="text/x-red" data-template-name="switchNode">
18 <div class="form-row">
19 <label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
20 <input type="text" id="node-input-name" placeholder="Name">
22 <div class="form-row">
23 <label for="node-input-xml"><i class="fa fa-wrench"></i> Node XML</label>
24 <input type="hidden" id="node-input-xml" autofocus="autofocus">
25 <div style="height: 450px;" class="node-text-editor" id="node-input-xml-editor" onkeyup="resetStatus()" ></div>
27 <div class="form-row">
28 <a href="#" class="btn btn-mini" id="node-input-validate" style="margin-top: 4px;"><b>Validate XML</b></a>
29 <!-- <a href="#" class="btn btn-mini" id="node-input-show-sli-values" style="margin-top: 4px;"><b>Show Values</b></a> -->
30 <input type="hidden" id="node-input-comments">
31 <a href="#" class="btn btn-mini" id="node-input-btnComments" style="margin-top: 4px;"><b>Add Comments</b></a>
32 <div id="node-validate-result" class="form-tips" style="float:right;font-size:10px"></div>
34 <div class="form-tips">See the Info tab for help using this node.</div>
37 <script type="text/x-red" data-help-name="switchNode">
39 <p>First line of XML must contain opening tag.</p>
40 <p>Do not include closing tag - it will be automatically generated.</p>
43 <h4><a name="Switch_node"></a>Switch node</h4>
45 <h5><a name="Description"></a>Description</h5>
46 <p>A <b>switch</b> node is used to make a decision based on its <b>test</b> attribute.</p></div>
48 <h5><a name="Attributes"></a>Attributes</h5>
49 <table border="1" class="table table-striped">
51 <td align="center"><b>test</b></td>
52 <td align="left">Condition to test</td></tr></table></div>
54 <h5><a name="Parameters"></a>Parameters</h5>
57 <h5><a name="Outcomes"></a>Outcomes</h5>
58 <p>Depends on the <b>test</b> condition</p></div>
60 <h5><a name="Example"></a>Example</h5>
62 <pre><switch test="$uni-cir-units">
63 <outcome value="Mbps">
64 <reserve plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
65 resource="ase-port"
66 key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
67 pfx="asePort">
69 <outcome value="success">
70 <return status="success">
71 <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
74 <outcome value="Other">
75 <return status="failure">
76 <parameter name="error-code" value="1010" />
77 <parameter name="error-message" value="No ports found that match criteria" />
82 <outcome value="Gbps">
83 <reserve plugin="org.openecomp.sdnc.sli.resource.samplesvc.SampleServiceResource"
84 resource="ase-port"
85 key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value*1000"
86 pfx="asePort">
88 <outcome value="success">
89 <return status="success">
90 <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
93 <outcome value="Other">
94 <return status="failure">
95 <parameter name="error-code" value="1010" />
96 <parameter name="error-message" value="No ports found that match criteria" />
101 </switch></pre></div></div></div></div>
106 <script type="text/javascript">
107 RED.nodes.registerType('switchNode',{
109 category: 'DGElogic',
111 name: {value:"switch"},
112 xml: {value:"<switch test=''>\n"},
118 icon: "arrow-in.png",
122 oneditprepare: function() {
123 $( "#node-input-outputs" ).spinner({
128 var comments = $( "#node-input-comments").val();
129 if(comments != null){
130 comments = comments.trim();
132 $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
136 function functionDialogResize(ev,ui) {
137 $("#node-input-xml-editor").css("height",(ui.size.height-275)+"px");
140 $( "#dialog" ).dialog( "option", "width", 1200 );
141 $( "#dialog" ).dialog( "option", "height", 750 );
142 $( "#dialog" ).on("dialogresize", functionDialogResize);
143 $( "#dialog" ).one("dialogopen", function(ev) {
144 var size = $( "#dialog" ).dialog('option','sizeCache-function');
145 //To increase the width of dialogbox
146 //$(".ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-front.ui-dialog-buttons.ui-draggable.ui-resizable").css("width","1400px");
148 functionDialogResize(null,{size:size});
152 /* close dialog when ESC is pressed and released */
153 $( "#dialog" ).keyup(function(event){
154 if(event.which == 27 ) {
155 $("#node-dialog-cancel").click();
159 $( "#dialog" ).one("dialogclose", function(ev,ui) {
160 var height = $( "#dialog" ).dialog('option','height');
161 $( "#dialog" ).off("dialogresize",functionDialogResize);
164 require(["orion/editor/edit"], function(edit) {
166 parent:document.getElementById('node-input-xml-editor'),
168 contents: $("#node-input-xml").val()
171 url:"functions", // where to get the data from
172 type:"function", // the type of object the library is for
173 editor:that.editor, // the field name the main text body goes to
174 fields:['name','outputs']
176 $("#node-input-name").focus();
177 $("#node-input-validate").click(function(){
178 console.log("validate clicked.");
179 //console.dir(that.editor);
180 //console.log("getText:" + that.editor.getText());
181 var val = that.editor.getText();
184 $("#node-input-show-sli-values").click(function(){
185 console.log("SLIValues clicked.");
186 showValuesBox(that.editor,sliValuesObj);
190 //for click of add comments button
191 $("#node-input-btnComments").click(function(e){
195 oneditsave: function() {
196 $("#node-input-xml").val(this.editor.getText());
197 var resp=validateXML(this.editor.getText());
199 this.status = {fill:"green",shape:"dot",text:"OK"};
201 this.status = {fill:"red",shape:"dot",text:"ERROR"};
207 function encodeTestStr(xmlStr){
208 var updatedXmlStr=xmlStr;
209 if(updatedXmlStr != null){
210 var testCondition = getAttributeValue(xmlStr,"test");
211 if(testCondition != null && testCondition != ''){
212 if(testCondition.indexOf("<") == -1){
213 testCondition=testCondition.replace(/</g,"<");
215 updatedXmlStr="<switch test=\"" + testCondition + "\" >";
218 return updatedXmlStr;
221 function decodeTestStr(xmlStr){
222 var updatedXmlStr=xmlStr;
223 if(updatedXmlStr != null){
224 var testCondition = getAttributeValue(xmlStr,"test");
225 if(testCondition != null && testCondition != ''){
226 testCondition=testCondition.replace(/</g,"<");
227 updatedXmlStr="<switch test=\"" + testCondition + "\" >";
230 return updatedXmlStr;