blob: 01a8a0593b1af1ef055c1f0de0371ec19c7859fb [file] [log] [blame]
Timoney, Daniel (dt5972)324ee362017-02-15 10:37:53 -05001<!--
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="for">
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="for">
38 <p>A for 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<h5><a name="Description"></a>Description</h5>
44<p>A <b>for</b> node provides a fixed iteration looping mechanism, similar to the Java for loop</p></div>
45<div class="section">
46<h5><a name="Attributes"></a>Attributes</h5>
47<table border="1" class="table table-striped">
48<tr class="a">
49<td align="center"><b>index</b></td>
50<td align="left">index variable</td></tr>
51<tr class="b">
52<td align="center"><b>start</b></td>
53<td align="left">initial value</td></tr>
54<tr class="a">
55<td align="center"><b>end</b></td>
56<td align="left">maximum value</td></tr></table></div>
57<div class="section">
58<h5><a name="Parameters"></a>Parameters</h5>
59<p>Not applicable.</p></div>
60<div class="section">
61<h5><a name="Outcomes"></a>Outcomes</h5>
62<p>Not applicable. The <b>status</b> node has no outcomes.</p></div>
63<div class="section">
64<h5><a name="Example"></a>Example</h5>
65<div class="source">
66<pre>&lt;for index=&quot;i&quot; start=&quot;0&quot; end=&quot;$network.num-segments&quot;&gt;
67 &lt;set&gt;
68 &lt;parameter name=&quot;$vlanlist&quot; value=&quot;eval($vlanlist+','+$network.segment[i].provider-segmentation-id)&quot;/&gt;
69 &lt;/set&gt;
70&lt;/for&gt;</pre></div></div></div>
71</script>
72
73
74<script type="text/javascript">
75 RED.nodes.registerType('for',{
76 color:"#fdd0a2",
77 category: 'DGElogic',
78 defaults: {
79 name: {value:"for"},
80 xml: {value:"<for index='' start='' end='' >\n"},
81 comments:{value:""},
82 outputs: {value:1}
83 },
84 inputs:1,
85 outputs:1,
86 icon: "arrow-in.png",
87 label: function() {
88 return this.name;
89 },
90 oneditprepare: function() {
91 $( "#node-input-outputs" ).spinner({
92 min:1
93 });
94
95
96 var comments = $( "#node-input-comments").val();
97 if(comments != null){
98 comments = comments.trim();
99 if(comments != ''){
100 $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
101 }
102 }
103
104 function functionDialogResize(ev,ui) {
105 $("#node-input-xml-editor").css("height",(ui.size.height-275)+"px");
106 };
107
108 $( "#dialog" ).dialog( "option", "width", 1200 );
109 $( "#dialog" ).dialog( "option", "height", 750 );
110 $( "#dialog" ).on("dialogresize", functionDialogResize);
111 $( "#dialog" ).one("dialogopen", function(ev) {
112 var size = $( "#dialog" ).dialog('option','sizeCache-function');
113 if (size) {
114 functionDialogResize(null,{size:size});
115 }
116 });
117
118 /* close dialog when ESC is pressed and released */
119 $( "#dialog" ).keyup(function(event){
120 if(event.which == 27 ) {
121 $("#node-dialog-cancel").click();
122 }
123 });
124
125 $( "#dialog" ).one("dialogclose", function(ev,ui) {
126 var height = $( "#dialog" ).dialog('option','height');
127 $( "#dialog" ).off("dialogresize",functionDialogResize);
128 });
129 var that = this;
130 require(["orion/editor/edit"], function(edit) {
131 that.editor = edit({
132 parent:document.getElementById('node-input-xml-editor'),
133 lang:"html",
134 contents: $("#node-input-xml").val()
135 });
136 RED.library.create({
137 url:"functions", // where to get the data from
138 type:"function", // the type of object the library is for
139 editor:that.editor, // the field name the main text body goes to
140 fields:['name','outputs']
141 });
142 $("#node-input-name").focus();
143 $("#node-input-validate").click(function(){
144 console.log("validate clicked.");
145 //console.dir(that.editor);
146 //console.log("getText:" + that.editor.getText());
147 var val = that.editor.getText();
148 validateXML(val);
149 });
150 $("#node-input-show-sli-values").click(function(){
151 console.log("SLIValues clicked.");
152 showValuesBox(that.editor,sliValuesObj);
153 });
154
155 });
156 //for click of add comments button
157 $("#node-input-btnComments").click(function(e){
158 showCommentsBox();
159 });
160 },
161 oneditsave: function() {
162 $("#node-input-xml").val(this.editor.getText());
163 var resp=validateXML(this.editor.getText());
164 if(resp){
165 this.status = {fill:"green",shape:"dot",text:"OK"};
166 }else{
167 this.status = {fill:"red",shape:"dot",text:"ERROR"};
168 }
169 delete this.editor;
170 }
171 });
172</script>