3eb7a2e68f2d593d143f9676ee4f84932831e605
[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>\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             $( "#node-input-outputs" ).spinner({
105                 min:1
106             });
107
108
109              var comments = $( "#node-input-comments").val();
110              if(comments != null){
111                 comments = comments.trim();
112                 if(comments != ''){
113                         $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
114                 }
115              }
116
117             function functionDialogResize(ev,ui) {
118                 $("#node-input-xml-editor").css("height",(ui.size.height-275)+"px");
119             };
120
121             $( "#dialog" ).dialog( "option", "width", 1200 );
122             $( "#dialog" ).dialog( "option", "height", 750 );
123             $( "#dialog" ).on("dialogresize", functionDialogResize);
124             $( "#dialog" ).one("dialogopen", function(ev) {
125                 var size = $( "#dialog" ).dialog('option','sizeCache-function');
126                 if (size) {
127                     functionDialogResize(null,{size:size});
128                 }
129             });
130
131             /* close dialog when ESC is pressed and released */ 
132             $( "#dialog" ).keyup(function(event){
133                 if(event.which == 27 ) {
134                         $("#node-dialog-cancel").click();
135                 }
136             }); 
137
138             $( "#dialog" ).one("dialogclose", function(ev,ui) {
139                 var height = $( "#dialog" ).dialog('option','height');
140                 $( "#dialog" ).off("dialogresize",functionDialogResize);
141             });
142             var that = this;
143             require(["orion/editor/edit"], function(edit) {
144                 that.editor = edit({
145                     parent:document.getElementById('node-input-xml-editor'),
146                     lang:"html",
147                     contents: $("#node-input-xml").val()
148                 });
149                 RED.library.create({
150                     url:"functions", // where to get the data from
151                     type:"function", // the type of object the library is for
152                     editor:that.editor, // the field name the main text body goes to
153                     fields:['name','outputs']
154                 });
155                 $("#node-input-name").focus();
156                 $("#node-input-validate").click(function(){
157                                 console.log("validate clicked.");
158                                 //console.dir(that.editor);
159                                 //console.log("getText:" + that.editor.getText());
160                                 var val = that.editor.getText();
161                                 validateXML(val); 
162                 });
163                 $("#node-input-show-sli-values").click(function(){
164                                 console.log("SLIValues clicked.");
165                                 showValuesBox(that.editor,sliValuesObj);
166                 });
167
168             });
169             //for click of add comments button
170             $("#node-input-btnComments").click(function(e){
171                         showCommentsBox();
172             }); 
173         },
174         oneditsave: function() {
175             $("#node-input-xml").val(this.editor.getText());
176                 var resp=validateXML(this.editor.getText());
177                 if(resp){
178                         this.status = {fill:"green",shape:"dot",text:"OK"};
179                 }else{
180                         this.status = {fill:"red",shape:"dot",text:"ERROR"};
181                 }       
182                 delete this.editor;
183         }
184     });
185 </script>