removed dependency on built-editor.min.js
[ccsdk/distribution.git] / dgbuilder / nodes / dge / dgelogic / save.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="save">
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="save">
38         <p>A save 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="Save_node"></a>Save node</h4>
44 <div class="section">
45 <h5><a name="Description"></a>Description</h5>
46 <p>A <b>save</b> node is used to save information about a particular resource to persistent storage. For example, this might be used to save information about a particular uni-port.</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>plugin</b></td>
52 <td align="left">Fully qualified Java class of resource adaptor to be used</td></tr>
53 <tr class="b">
54 <td align="center"><b>resource</b></td>
55 <td align="left">Type of resource to save</td></tr>
56 <tr class="a">
57 <td align="center"><b>key</b></td>
58 <td align="left">SQL-like string specifying criteria for retrieval</td></tr>
59 <tr class="b">
60 <td align="center"><b>force</b></td>
61 <td align="left">If &quot;true&quot;, save resource even if this resource is already stored in persistent storage</td></tr>
62 <tr class="a">
63 <td align="center"><b>pfx</b></td>
64 <td align="left">Prefix to be prepended to variable names, when attributes are set in SvcLogicContext</td></tr></table></div>
65 <div class="section">
66 <h5><a name="Parameters"></a>Parameters</h5>
67 <p>Values to save (columns) are specified as parameters, with each name corresponding to a column name and each value corresponding to the value to set.</p></div>
68 <div class="section">
69 <h5><a name="Outcomes"></a>Outcomes</h5>
70 <table border="1" class="table table-striped">
71 <tr class="a">
72 <td align="center"><b>success</b></td>
73 <td align="left">Resource successfully saved</td></tr>
74 <tr class="b">
75 <td align="center"><b>failure</b></td>
76 <td align="left">Resource save failed</td></tr></table></div>
77 <div class="section">
78 <h5><a name="Example"></a>Example</h5>
79 <div class="source">
80 <pre>&lt;save plugin=&quot;`$resource-plugin`&quot; resource=&quot;resourceName&quot;
81         key=&quot;keyName=value&quot;
82         pfx=&quot;requests.resourceName&quot;&gt;
83         &lt;parameter name=&quot;parameter1&quot;
84                 value=&quot;`$parameterOneValue`&quot; /&gt;
85         &lt;parameter name=&quot;parameter2&quot; value=&quot;`$parameterparameterTwoValue`&quot; /&gt;
86 &lt;/save&gt;</pre></div></div></div></div></div>
87
88 </script>
89
90
91 <script type="text/javascript">
92     RED.nodes.registerType('save',{
93         color:"#fdd0a2",
94         category: 'DGElogic',
95         defaults: {
96             name: {value:"save"},
97             xml: {value:"<save plugin='' resource='' key='' force='' pfx=''>\n<parameter name='' value='' />\n"},
98             comments:{value:""},        
99             outputs: {value:1}
100         },
101         inputs:1,
102         outputs:1,
103         icon: "arrow-in.png",
104         label: function() {
105             return this.name;
106         },
107         oneditprepare: function() {
108             var that = this;
109             $( "#node-input-outputs" ).spinner({
110                 min:1
111             });
112              var comments = $( "#node-input-comments").val();
113              if(comments != null){
114                 comments = comments.trim();
115                 if(comments != ''){
116                         $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
117                 }
118              }
119
120             function functionDialogResize() {
121                 var rows = $("#dialog-form>div:not(.node-text-editor-row)");
122                 var height = $("#dialog-form").height();
123                 for (var i=0;i<rows.size();i++) {
124                     height -= $(rows[i]).outerHeight(true);
125                 }
126                 var editorRow = $("#dialog-form>div.node-text-editor-row");
127                 height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
128                 $(".node-text-editor").css("height",height+"px");
129                 that.editor.resize();
130             };
131             $( "#dialog" ).on("dialogresize", functionDialogResize);
132             $( "#dialog" ).one("dialogopen", function(ev) {
133                 var size = $( "#dialog" ).dialog('option','sizeCache-function');
134                 if (size) {
135                     $("#dialog").dialog('option','width',size.width);
136                     $("#dialog").dialog('option','height',size.height);
137                     functionDialogResize();
138                 }
139             });
140             $( "#dialog" ).one("dialogclose", function(ev,ui) {
141                 var height = $( "#dialog" ).dialog('option','height');
142                 $( "#dialog" ).off("dialogresize",functionDialogResize);
143             });
144
145             this.editor = RED.editor.createEditor({
146                 id: 'node-input-xml-editor',
147                 mode: 'ace/mode/html'
148             });
149             this.editor.setValue($("#node-input-xml").val(),-1);
150         /*      
151             RED.library.create({
152                 url:"functions", // where to get the data from
153                 type:"function", // the type of object the library is for
154                 editor:this.editor, // the field name the main text body goes to
155                 mode:"ace/mode/html",
156                 fields:['name','outputs']
157             });
158         */
159             this.editor.focus();
160             /* close dialog when ESC is pressed and released */ 
161             $( "#node-input-xml-editor" ).keyup(function(event){
162                 if(event.which == 27 ) {
163                         $("#node-dialog-cancel").click();
164                 }
165             }); 
166                 $("#node-input-validate").click(function(){
167                                 console.log("validate clicked.");
168                                 //console.dir(that.editor);
169                                 //console.log("getText:" + that.editor.getText());
170                                 var val = that.editor.getValue();
171                                 validateXML(val); 
172                 });
173                 $("#node-input-show-sli-values").click(function(){
174                         //console.log("show Values clicked.");
175                         showValuesBox(that.editor,sliValuesObj);
176                 });
177             //for click of add comments button
178             $("#node-input-btnComments").click(function(e){
179                         showCommentsBox();
180             }); 
181         },
182         oneditsave: function() {
183             $("#node-input-xml").val(this.editor.getValue());
184                 var resp=validateXML(this.editor.getValue());
185                 if(resp){
186                         this.status = {fill:"green",shape:"dot",text:"OK"};
187                 }else{
188                         this.status = {fill:"red",shape:"dot",text:"ERROR"};
189                 }       
190                 delete this.editor;
191         }
192     });
193 </script>