fix odl patches
[ccsdk/distribution.git] / dgbuilder / nodes / dge / dgelogic / record.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="record">
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="record">
38         <p>A record 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 <h3><a name="Recording"></a>Recording</h3>
44 <div class="section">
45 <h4><a name="Record_node"></a>Record node</h4>
46 <div class="section">
47 <h5><a name="Description"></a>Description</h5>
48 <p>A <b>record</b> node is used to record an event. For example, this might be used to log provisioning events.</p></div>
49 <div class="section">
50 <h5><a name="Attributes"></a>Attributes</h5>
51 <table border="1" class="table table-striped">
52 <tr class="a">
53 <td align="center"><b>plugin</b></td>
54 <td align="left">Fully qualified Java class to handle recording.</td></tr></table></div>
55 <div class="section">
56 <h5><a name="Parameters"></a>Parameters</h5>
57 <p>Parameters will depend on the plugin being used. For the FileRecorder class, the parameters are as follows</p>
58 <table border="1" class="table table-striped">
59 <tr class="a">
60 <td align="center"><b>file</b></td>
61 <td align="left">The file to which the record should be written</td></tr>
62 <tr class="b">
63 <td align="center"><b>field1</b></td>
64 <td align="left">First field to write. There will be <b>field</b> parameters for each field to write, from <b>field1</b> through <b>fieldN</b>. A special value __TIMESTAMP__ may be assigned to a field to insert the current timestamp</td></tr></table></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">Record successfully written</td></tr>
71 <tr class="b">
72 <td align="center"><b>failure</b></td>
73 <td align="left">Record could not be successfully written</td></tr></table></div>
74 <div class="section">
75 <h5><a name="Example"></a>Example</h5>
76 <div class="source">
77 <pre>&lt;record plugin=&quot;org.onap.ccsdk.sli.core.sli.recording.FileRecorder&quot;&gt;
78   &lt;parameter name=&quot;file&quot; value=&quot;/tmp/sample_r1.log&quot; /&gt;
79   &lt;parameter name=&quot;field1&quot; value=&quot;__TIMESTAMP__&quot;/&gt;
80   &lt;parameter name=&quot;field2&quot; value=&quot;ACTIVE&quot;/&gt;
81   &lt;parameter name=&quot;field3&quot; value=&quot;$uni-circuit-id&quot;/&gt;
82 &lt;/record&gt;</pre></div></div></div></div>
83
84 </script>
85
86
87 <script type="text/javascript">
88     RED.nodes.registerType('record',{
89         color:"#fdd0a2",
90         category: 'DGElogic',
91         defaults: {
92             name: {value:"record"},
93             xml: {value:"<record plugin=''>\n"},
94             comments:{value:""},        
95             outputs: {value:1}
96         },
97         inputs:1,
98         outputs:1,
99         icon: "arrow-in.png",
100         label: function() {
101             return this.name;
102         },
103         oneditprepare: function() {
104             var that = this;
105             $( "#node-input-outputs" ).spinner({
106                 min:1
107             });
108              var comments = $( "#node-input-comments").val();
109              if(comments != null){
110                 comments = comments.trim();
111                 if(comments != ''){
112                         $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
113                 }
114              }
115
116             function functionDialogResize() {
117                 var rows = $("#dialog-form>div:not(.node-text-editor-row)");
118                 var height = $("#dialog-form").height();
119                 for (var i=0;i<rows.size();i++) {
120                     height -= $(rows[i]).outerHeight(true);
121                 }
122                 var editorRow = $("#dialog-form>div.node-text-editor-row");
123                 height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
124                 $(".node-text-editor").css("height",height+"px");
125                 that.editor.resize();
126             };
127             $( "#dialog" ).on("dialogresize", functionDialogResize);
128             $( "#dialog" ).one("dialogopen", function(ev) {
129                 var size = $( "#dialog" ).dialog('option','sizeCache-function');
130                 if (size) {
131                     $("#dialog").dialog('option','width',size.width);
132                     $("#dialog").dialog('option','height',size.height);
133                     functionDialogResize();
134                 }
135             });
136             $( "#dialog" ).one("dialogclose", function(ev,ui) {
137                 var height = $( "#dialog" ).dialog('option','height');
138                 $( "#dialog" ).off("dialogresize",functionDialogResize);
139             });
140
141             this.editor = RED.editor.createEditor({
142                 id: 'node-input-xml-editor',
143                 mode: 'ace/mode/html'
144             });
145             this.editor.setValue($("#node-input-xml").val(),-1);
146         /*      
147             RED.library.create({
148                 url:"functions", // where to get the data from
149                 type:"function", // the type of object the library is for
150                 editor:this.editor, // the field name the main text body goes to
151                 mode:"ace/mode/html",
152                 fields:['name','outputs']
153             });
154         */
155             this.editor.focus();
156             /* close dialog when ESC is pressed and released */ 
157             $( "#node-input-xml-editor" ).keyup(function(event){
158                 if(event.which == 27 ) {
159                         $("#node-dialog-cancel").click();
160                 }
161             }); 
162                 $("#node-input-validate").click(function(){
163                                 console.log("validate clicked.");
164                                 //console.dir(that.editor);
165                                 //console.log("getText:" + that.editor.getText());
166                                 var val = that.editor.getValue();
167                                 validateXML(val); 
168                 });
169                 $("#node-input-show-sli-values").click(function(){
170                         //console.log("show Values clicked.");
171                         showValuesBox(that.editor,sliValuesObj);
172                 });
173             //for click of add comments button
174             $("#node-input-btnComments").click(function(e){
175                         showCommentsBox();
176             }); 
177         },
178         oneditsave: function() {
179             $("#node-input-xml").val(this.editor.getValue());
180                 var resp=validateXML(this.editor.getValue());
181                 if(resp){
182                         this.status = {fill:"green",shape:"dot",text:"OK"};
183                 }else{
184                         this.status = {fill:"red",shape:"dot",text:"ERROR"};
185                 }       
186                 delete this.editor;
187         }
188     });
189 </script>