removed dependency on built-editor.min.js
[ccsdk/distribution.git] / dgbuilder / nodes / dge / dgelogic / configure.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="configure">
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="configure">
38         <p>A configure 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
43         <div class="section">
44 <h3><a name="Device_Management"></a>Device Management</h3>
45 <div class="section">
46 <h4><a name="Configure_node"></a>Configure node</h4>
47 <div class="section">
48 <h5><a name="Description"></a>Description</h5>
49 <p>A <b>configure</b> node is used to configure a device.</p></div>
50 <div class="section">
51 <h5><a name="Attributes"></a>Attributes</h5>
52 <table border="1" class="table table-striped">
53 <tr class="a">
54 <td align="center"><b>plugin</b></td>
55 <td align="left">Fully qualified Java class of resource adaptor to be used</td></tr>
56 <tr class="b">
57 <td align="center"><b>activate</b></td>
58 <td align="left">Activate device/interface, for devices that support a separate activation step.</td></tr>
59 <tr class="a">
60 <td align="center"><b>key</b></td>
61 <td align="left">SQL-like string specifying criteria for item to configure</td></tr></table></div>
62 <div class="section">
63 <h5><a name="Parameters"></a>Parameters</h5>
64 <p>Specific to device adaptor.</p></div>
65 <div class="section">
66 <h5><a name="Outcomes"></a>Outcomes</h5>
67 <table border="1" class="table table-striped">
68 <tr class="a">
69 <td align="center"><b>success</b></td>
70 <td align="left">Device successfully configured</td></tr>
71 <tr class="b">
72 <td align="center"><b>not-found</b></td>
73 <td align="left">Element to be configured does not exist.</td></tr>
74 <tr class="a">
75 <td align="center"><b>not-ready</b></td>
76 <td align="left">Element is not in a state where it can be configured/activated</td></tr>
77 <tr class="b">
78 <td align="center"><b>already-active</b></td>
79 <td align="left">Attempt to activate element that is already active</td></tr>
80 <tr class="a">
81 <td align="center"><b>failure</b></td>
82 <td align="left">Configure failed for some other reason</td></tr></table></div>
83 <div class="section">
84 <h5><a name="Example"></a>Example</h5>
85 <div class="source">
86 <pre>&lt;configure adaptor=&quot;org.onap.ccsdk.sli.adaptor.emt.EmtAdaptor&quot;
87            key=&quot;$uni-circuit-id&quot; activate=&quot;true&quot;&gt;
88   &lt;parameter name=&quot;circuit.id&quot; value=&quot;$uni-circuit-id&quot; /&gt;
89   &lt;parameter name=&quot;subscriber.name&quot; value=&quot;$subscriber-name&quot; /&gt;
90   &lt;parameter name=&quot;emt.clli&quot; value=&quot;$edge-device-clli&quot; /&gt;
91   &lt;parameter name=&quot;port.tagging&quot; value=&quot;$port-tagging&quot; /&gt;
92   &lt;parameter name=&quot;port.mediaSpeed&quot; value=&quot;$media-speed&quot; /&gt;
93   &lt;parameter name=&quot;location.state&quot; value=&quot;$uni-location-state&quot; /&gt;
94   &lt;parameter name=&quot;location.city&quot; value=&quot;$uni-location-city&quot; /&gt;
95   &lt;parameter name=&quot;cosCategory&quot; value=&quot;$cos-category&quot; /&gt;
96   &lt;parameter name=&quot;gosProfile&quot; value=&quot;$gos-profile&quot; /&gt;
97   &lt;parameter name=&quot;lldp&quot; value=&quot;$asePort.resource-lldp&quot; /&gt;
98   &lt;parameter name=&quot;mtu&quot; value=&quot;$asePort.resource-mtu&quot; /&gt;
99   &lt;outcome value=&quot;success&quot;&gt;
100     &lt;block&gt;
101       &lt;record plugin=&quot;org.onap.ccsdk.sli.recording.FileRecorder&quot;&gt;
102         &lt;parameter name=&quot;file&quot; value=&quot;/tmp/sampler1.log&quot; /&gt;
103         &lt;parameter name=&quot;field1&quot; value=&quot;__TIMESTAMP__&quot;/&gt;
104         &lt;parameter name=&quot;field2&quot; value=&quot;ACTIVE&quot;/&gt;
105         &lt;parameter name=&quot;field3&quot; value=&quot;$uni-circuit-id&quot;/&gt;
106       &lt;/record&gt;
107       &lt;return status=&quot;success&quot;&gt;
108         &lt;parameter name=&quot;edge-device-clli&quot; value=&quot;$asePort.resource-emt-clli&quot; /&gt;
109       &lt;/return&gt;
110     &lt;/block&gt;
111   &lt;/outcome&gt;
112   &lt;outcome value=&quot;already-active&quot;&gt;
113     &lt;return status=&quot;failure&quot;&gt;
114       &lt;parameter name=&quot;error-code&quot; value=&quot;1590&quot; /&gt;
115       &lt;parameter name=&quot;error-message&quot; value=&quot;Port already active&quot; /&gt;
116     &lt;/return&gt;
117   &lt;/outcome&gt;
118   &lt;outcome value=&quot;Other&quot;&gt;
119     &lt;return status=&quot;failure&quot;&gt;
120       &lt;parameter name=&quot;error-code&quot; value=&quot;1542&quot; /&gt;
121       &lt;parameter name=&quot;error-message&quot; value=&quot;Activation failure&quot; /&gt;
122     &lt;/return&gt;
123   &lt;/outcome&gt;
124 &lt;/configure&gt;</pre></div></div></div></div>
125
126 </script>
127
128
129 <script type="text/javascript">
130     RED.nodes.registerType('configure',{
131         color:"#fdd0a2",
132         category: 'DGElogic',
133         defaults: {
134             name: {value:"configure"},
135             xml: {value:"<configure adaptor='' key='' activate='' >\n"},
136             comments:{value:""},        
137             outputs: {value:1}
138         },
139         inputs:1,
140         outputs:1,
141         icon: "arrow-in.png",
142         label: function() {
143             return this.name;
144         },
145         oneditprepare: function() {
146             var that = this;
147             $( "#node-input-outputs" ).spinner({
148                 min:1
149             });
150              var comments = $( "#node-input-comments").val();
151              if(comments != null){
152                 comments = comments.trim();
153                 if(comments != ''){
154                         $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
155                 }
156              }
157
158             function functionDialogResize() {
159                 var rows = $("#dialog-form>div:not(.node-text-editor-row)");
160                 var height = $("#dialog-form").height();
161                 for (var i=0;i<rows.size();i++) {
162                     height -= $(rows[i]).outerHeight(true);
163                 }
164                 var editorRow = $("#dialog-form>div.node-text-editor-row");
165                 height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
166                 $(".node-text-editor").css("height",height+"px");
167                 that.editor.resize();
168             };
169             $( "#dialog" ).on("dialogresize", functionDialogResize);
170             $( "#dialog" ).one("dialogopen", function(ev) {
171                 var size = $( "#dialog" ).dialog('option','sizeCache-function');
172                 if (size) {
173                     $("#dialog").dialog('option','width',size.width);
174                     $("#dialog").dialog('option','height',size.height);
175                     functionDialogResize();
176                 }
177             });
178             $( "#dialog" ).one("dialogclose", function(ev,ui) {
179                 var height = $( "#dialog" ).dialog('option','height');
180                 $( "#dialog" ).off("dialogresize",functionDialogResize);
181             });
182
183             this.editor = RED.editor.createEditor({
184                 id: 'node-input-xml-editor',
185                 mode: 'ace/mode/html'
186             });
187             this.editor.setValue($("#node-input-xml").val(),-1);
188         /*      
189             RED.library.create({
190                 url:"functions", // where to get the data from
191                 type:"function", // the type of object the library is for
192                 editor:this.editor, // the field name the main text body goes to
193                 mode:"ace/mode/html",
194                 fields:['name','outputs']
195             });
196         */
197             this.editor.focus();
198             /* close dialog when ESC is pressed and released */ 
199             $( "#node-input-xml-editor" ).keyup(function(event){
200                 if(event.which == 27 ) {
201                         $("#node-dialog-cancel").click();
202                 }
203             }); 
204                 $("#node-input-validate").click(function(){
205                                 console.log("validate clicked.");
206                                 //console.dir(that.editor);
207                                 //console.log("getText:" + that.editor.getText());
208                                 var val = that.editor.getValue();
209                                 validateXML(val); 
210                 });
211                 $("#node-input-show-sli-values").click(function(){
212                         //console.log("show Values clicked.");
213                         showValuesBox(that.editor,sliValuesObj);
214                 });
215             //for click of add comments button
216             $("#node-input-btnComments").click(function(e){
217                         showCommentsBox();
218             }); 
219         },
220         oneditsave: function() {
221             $("#node-input-xml").val(this.editor.getValue());
222                 var resp=validateXML(this.editor.getValue());
223                 if(resp){
224                         this.status = {fill:"green",shape:"dot",text:"OK"};
225                 }else{
226                         this.status = {fill:"red",shape:"dot",text:"ERROR"};
227                 }       
228                 delete this.editor;
229         }
230     });
231 </script>