fix odl patches
[ccsdk/distribution.git] / dgbuilder / nodes / dge / dgelogic / switchNode.html
1 <!--
2   Copyright 2013 IBM Corp.
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 or implied.
13   See the License for the specific language governing permissions and
14   limitations under the License.
15 -->
16
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">
21     </div>
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>
26     </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>
33     </div>
34     <div class="form-tips">See the Info tab for help using this node.</div>
35 </script>
36
37 <script type="text/x-red" data-help-name="switchNode">
38         <p>A switch node.</p>
39         <p>First line of XML must contain opening tag.</p>
40         <p>Do not include closing tag - it will be automatically generated.</p>
41
42 <div class="section">
43 <h4><a name="Switch_node"></a>Switch node</h4>
44 <div class="section">
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>
47 <div class="section">
48 <h5><a name="Attributes"></a>Attributes</h5>
49 <table border="1" class="table table-striped">
50 <tr class="a">
51 <td align="center"><b>test</b></td>
52 <td align="left">Condition to test</td></tr></table></div>
53 <div class="section">
54 <h5><a name="Parameters"></a>Parameters</h5>
55 <p>None</p></div>
56 <div class="section">
57 <h5><a name="Outcomes"></a>Outcomes</h5>
58 <p>Depends on the <b>test</b> condition</p></div>
59 <div class="section">
60 <h5><a name="Example"></a>Example</h5>
61 <div class="source">
62 <pre>&lt;switch test=&quot;$uni-cir-units&quot;&gt;
63   &lt;outcome value=&quot;Mbps&quot;&gt;
64     &lt;reserve plugin=&quot;org.onap.ccsdk.sli.resource.samplesvc.SampleServiceResource&quot;
65                          resource=&quot;ase-port&quot;
66                          key=&quot;resource-emt-clli == $edge-device-clli and speed &gt;= $uni-cir-value&quot;
67                          pfx=&quot;asePort&quot;&gt;
68
69       &lt;outcome value=&quot;success&quot;&gt;
70             &lt;return status=&quot;success&quot;&gt;
71                   &lt;parameter name=&quot;uni-circuit-id&quot; value=&quot;$asePort.uni_circuit_id&quot; /&gt;
72                 &lt;/return&gt;
73       &lt;/outcome&gt;
74       &lt;outcome value=&quot;Other&quot;&gt;
75         &lt;return status=&quot;failure&quot;&gt;
76           &lt;parameter name=&quot;error-code&quot; value=&quot;1010&quot; /&gt;
77           &lt;parameter name=&quot;error-message&quot; value=&quot;No ports found that match criteria&quot; /&gt;
78         &lt;/return&gt;
79       &lt;/outcome&gt;
80     &lt;/reserve&gt;
81   &lt;/outcome&gt;
82   &lt;outcome value=&quot;Gbps&quot;&gt;
83     &lt;reserve plugin=&quot;org.onap.ccsdk.sli.resource.samplesvc.SampleServiceResource&quot;
84                          resource=&quot;ase-port&quot;
85                          key=&quot;resource-emt-clli == $edge-device-clli and speed &gt;= $uni-cir-value*1000&quot;
86                          pfx=&quot;asePort&quot;&gt;
87
88       &lt;outcome value=&quot;success&quot;&gt;
89             &lt;return status=&quot;success&quot;&gt;
90                   &lt;parameter name=&quot;uni-circuit-id&quot; value=&quot;$asePort.uni_circuit_id&quot; /&gt;
91                 &lt;/return&gt;
92       &lt;/outcome&gt;
93       &lt;outcome value=&quot;Other&quot;&gt;
94         &lt;return status=&quot;failure&quot;&gt;
95           &lt;parameter name=&quot;error-code&quot; value=&quot;1010&quot; /&gt;
96           &lt;parameter name=&quot;error-message&quot; value=&quot;No ports found that match criteria&quot; /&gt;
97         &lt;/return&gt;
98       &lt;/outcome&gt;
99     &lt;/reserve&gt;
100   &lt;/outcome&gt;    
101 &lt;/switch&gt;</pre></div></div></div></div>
102
103 </script>
104
105
106 <script type="text/javascript">
107     RED.nodes.registerType('switchNode',{
108         color:"#fdd0a2",
109         category: 'DGElogic',
110         defaults: {
111             name: {value:"switch"},
112             xml: {value:"<switch test=''>\n"},
113             comments:{value:""},        
114             outputs: {value:1}
115         },
116         inputs:1,
117         outputs:1,
118         icon: "arrow-in.png",
119         label: function() {
120             return this.name;
121         },
122         oneditprepare: function() {
123             var that = this;
124             $( "#node-input-outputs" ).spinner({
125                 min:1
126             });
127              var comments = $( "#node-input-comments").val();
128              if(comments != null){
129                 comments = comments.trim();
130                 if(comments != ''){
131                         $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
132                 }
133              }
134
135             function functionDialogResize() {
136                 var rows = $("#dialog-form>div:not(.node-text-editor-row)");
137                 var height = $("#dialog-form").height();
138                 for (var i=0;i<rows.size();i++) {
139                     height -= $(rows[i]).outerHeight(true);
140                 }
141                 var editorRow = $("#dialog-form>div.node-text-editor-row");
142                 height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
143                 $(".node-text-editor").css("height",height+"px");
144                 that.editor.resize();
145             };
146             $( "#dialog" ).on("dialogresize", functionDialogResize);
147             $( "#dialog" ).one("dialogopen", function(ev) {
148                 var size = $( "#dialog" ).dialog('option','sizeCache-function');
149                 if (size) {
150                     $("#dialog").dialog('option','width',size.width);
151                     $("#dialog").dialog('option','height',size.height);
152                     functionDialogResize();
153                 }
154             });
155             $( "#dialog" ).one("dialogclose", function(ev,ui) {
156                 var height = $( "#dialog" ).dialog('option','height');
157                 $( "#dialog" ).off("dialogresize",functionDialogResize);
158             });
159
160             this.editor = RED.editor.createEditor({
161                 id: 'node-input-xml-editor',
162                 mode: 'ace/mode/html'
163             });
164             this.editor.setValue($("#node-input-xml").val(),-1);
165         /*      
166             RED.library.create({
167                 url:"functions", // where to get the data from
168                 type:"function", // the type of object the library is for
169                 editor:this.editor, // the field name the main text body goes to
170                 mode:"ace/mode/html",
171                 fields:['name','outputs']
172             });
173         */
174             this.editor.focus();
175             /* close dialog when ESC is pressed and released */ 
176             $( "#node-input-xml-editor" ).keyup(function(event){
177                 if(event.which == 27 ) {
178                         $("#node-dialog-cancel").click();
179                 }
180             }); 
181                 $("#node-input-validate").click(function(){
182                                 console.log("validate clicked.");
183                                 //console.dir(that.editor);
184                                 //console.log("getText:" + that.editor.getText());
185                                 var val = that.editor.getValue();
186                                 validateXML(val); 
187                 });
188                 $("#node-input-show-sli-values").click(function(){
189                         //console.log("show Values clicked.");
190                         showValuesBox(that.editor,sliValuesObj);
191                 });
192             //for click of add comments button
193             $("#node-input-btnComments").click(function(e){
194                         showCommentsBox();
195             }); 
196         },
197         oneditsave: function() {
198             $("#node-input-xml").val(this.editor.getValue());
199                 var resp=validateXML(this.editor.getValue());
200                 if(resp){
201                         this.status = {fill:"green",shape:"dot",text:"OK"};
202                 }else{
203                         this.status = {fill:"red",shape:"dot",text:"ERROR"};
204                 }       
205                 delete this.editor;
206         }
207     });
208
209 function encodeTestStr(xmlStr){
210         var updatedXmlStr=xmlStr;
211         if(updatedXmlStr != null){
212                 var testCondition = getAttributeValue(xmlStr,"test");
213                 if(testCondition != null && testCondition != ''){
214                         if(testCondition.indexOf("&lt;") == -1){
215                                 testCondition=testCondition.replace(/</g,"&lt;");
216                         }
217                         updatedXmlStr="<switch test=\"" + testCondition + "\" >";
218                 }
219         }
220         return updatedXmlStr;
221 }
222
223 function decodeTestStr(xmlStr){
224         var updatedXmlStr=xmlStr;
225         if(updatedXmlStr != null){
226                 var testCondition = getAttributeValue(xmlStr,"test");
227                 if(testCondition != null && testCondition != ''){
228                         testCondition=testCondition.replace(/&lt;/g,"<");
229                         updatedXmlStr="<switch test=\"" + testCondition + "\" >";
230                 }
231         }
232         return updatedXmlStr;
233 }
234 </script>