mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	Update some core nodes info
This commit is contained in:
		@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="catch">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -41,6 +26,20 @@
 | 
			
		||||
</script>
 | 
			
		||||
<script type="text/x-red" data-help-name="catch">
 | 
			
		||||
    <p>Catch errors thrown by nodes on the same tab.</p>
 | 
			
		||||
    <h3>Outputs</h3>
 | 
			
		||||
    <dl class="message-properties">
 | 
			
		||||
        <dt>msg <span class="property-type">object</span></dt>
 | 
			
		||||
        <dd>the original msg object message (if available).</dd>
 | 
			
		||||
        <dt>msg.error.message <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the error message.</dd>
 | 
			
		||||
        <dt>msg.error.source.id <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the id of the node that threw the error.</dd>
 | 
			
		||||
        <dt>msg.error.source.type <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the type of the node that threw the error.</dd>
 | 
			
		||||
        <dt>msg.error.source.name <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the name, if set, of the node that threw the error.</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
    <p>If a node throws a error whilst handling a message, the flow will typically
 | 
			
		||||
       halt. This node can be used to catch those errors and handle them with a
 | 
			
		||||
       dedicated flow.</p>
 | 
			
		||||
@@ -49,16 +48,6 @@
 | 
			
		||||
    <p>If an error is thrown within a subflow, the error will get handled by any
 | 
			
		||||
       catch nodes within the subflow. If none exists, the error is propagated
 | 
			
		||||
       up to the tab the subflow instance is on.</p>
 | 
			
		||||
    <p>The message sent by this node will be the original message if the node that
 | 
			
		||||
       threw the error provided it. The message will have an <code>error</code>
 | 
			
		||||
       property with the following attributes:
 | 
			
		||||
       <ul>
 | 
			
		||||
        <li><code>message</code> : the error message</li>
 | 
			
		||||
        <li><code>source.id</code> : the id of the node that threw the error</li>
 | 
			
		||||
        <li><code>source.type</code> : the type of the node that threw the error</li>
 | 
			
		||||
        <li><code>source.name</code> : the name, if set, of the node that threw the error</li>
 | 
			
		||||
       </ul>
 | 
			
		||||
   </p>
 | 
			
		||||
   <p>If the message already had a <code>error</code> property, it is copied to <code>_error</code>.</p>
 | 
			
		||||
</script>
 | 
			
		||||
<style>
 | 
			
		||||
@@ -123,7 +112,7 @@
 | 
			
		||||
                var editorRow = $("#dialog-form>div.node-input-target-row");
 | 
			
		||||
                height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
 | 
			
		||||
                $("#node-input-catch-target-container-div").css("height",height+"px");
 | 
			
		||||
            }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            function createNodeList() {
 | 
			
		||||
                var scope = node.scope || [];
 | 
			
		||||
@@ -233,11 +222,11 @@
 | 
			
		||||
 | 
			
		||||
            $("#node-input-target-sort-type").click(function(e) {
 | 
			
		||||
                e.preventDefault();
 | 
			
		||||
                sortNodeList('sublabel')
 | 
			
		||||
                sortNodeList('sublabel');
 | 
			
		||||
            });
 | 
			
		||||
            $("#node-input-target-node-checkbox-all").change(function() {
 | 
			
		||||
                $(".node-input-target-node-checkbox").prop('checked',this.checked);
 | 
			
		||||
            })
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -251,7 +240,7 @@
 | 
			
		||||
                }
 | 
			
		||||
                node.resize();
 | 
			
		||||
            });
 | 
			
		||||
            if (this.scope == null) {
 | 
			
		||||
            if (this.scope === null) {
 | 
			
		||||
                $("#node-input-scope-select").val("all");
 | 
			
		||||
            } else {
 | 
			
		||||
                $("#node-input-scope-select").val("target");
 | 
			
		||||
@@ -269,7 +258,7 @@
 | 
			
		||||
                    if ($(this).prop("checked")) {
 | 
			
		||||
                        node.scope.push($(this).data('node-id'));
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        oneditresize: function(size) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="status">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -40,17 +25,22 @@
 | 
			
		||||
    </div>
 | 
			
		||||
</script>
 | 
			
		||||
<script type="text/x-red" data-help-name="status">
 | 
			
		||||
    <p>Send status messages from other nodes on the same tab.</p>
 | 
			
		||||
    <p>The message sent by this node will have a <code>status</code> property
 | 
			
		||||
    with the following attributes:
 | 
			
		||||
        <ul>
 | 
			
		||||
            <li><code>text</code> : the status text</li>
 | 
			
		||||
            <li><code>source.type</code> : the type of the node that reported status</li>
 | 
			
		||||
            <li><code>source.id</code> : the id of the node that reported status</li>
 | 
			
		||||
            <li><code>source.name</code> : the name, if set, of the node that reported status</li>
 | 
			
		||||
 | 
			
		||||
        </ul>
 | 
			
		||||
   </p>
 | 
			
		||||
    <p>Report status messages from other nodes on the same tab.</p>
 | 
			
		||||
    <h3>Outputs</h3>
 | 
			
		||||
    <dl class="message-properties">
 | 
			
		||||
        <dt>status.text <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the status text.</dd>
 | 
			
		||||
        <dt>status.source.type <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the type of the node that reported status.</dd>
 | 
			
		||||
        <dt>status.source.id <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the id of the node that reported status.</dd>
 | 
			
		||||
        <dt>status.source.name <span class="property-type">string</span></dt>
 | 
			
		||||
        <dd>the name, if set, of the node that reported status.</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
   <p>This node does not produce a <code>payload</code>.</p>
 | 
			
		||||
   <p>By default the node reports status for all nodes on the same workspace tab.
 | 
			
		||||
   It can be configured to selectively report status for individual nodes.</p>
 | 
			
		||||
</script>
 | 
			
		||||
<style>
 | 
			
		||||
#node-input-status-target-container {
 | 
			
		||||
@@ -114,7 +104,7 @@
 | 
			
		||||
                var editorRow = $("#dialog-form>div.node-input-target-row");
 | 
			
		||||
                height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
 | 
			
		||||
                $("#node-input-status-target-container-div").css("height",height+"px");
 | 
			
		||||
            }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            function createNodeList() {
 | 
			
		||||
                var scope = node.scope || [];
 | 
			
		||||
@@ -213,7 +203,7 @@
 | 
			
		||||
                    if (labelA > labelB) { return currentSortOrder==='a'?1:-1; }
 | 
			
		||||
                    return 0;
 | 
			
		||||
                });
 | 
			
		||||
                $.each(items, function(i, li){
 | 
			
		||||
                $.each(items, function(i, li) {
 | 
			
		||||
                    nodeList.append(li);
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
@@ -224,11 +214,11 @@
 | 
			
		||||
 | 
			
		||||
            $("#node-input-target-sort-type").click(function(e) {
 | 
			
		||||
                e.preventDefault();
 | 
			
		||||
                sortNodeList('sublabel')
 | 
			
		||||
                sortNodeList('sublabel');
 | 
			
		||||
            });
 | 
			
		||||
            $("#node-input-target-node-checkbox-all").change(function() {
 | 
			
		||||
                $(".node-input-target-node-checkbox").prop('checked',this.checked);
 | 
			
		||||
            })
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            $("#node-input-scope-select").change(function(e) {
 | 
			
		||||
                var scope = $(this).val();
 | 
			
		||||
@@ -240,7 +230,7 @@
 | 
			
		||||
                }
 | 
			
		||||
                node.resize();
 | 
			
		||||
            });
 | 
			
		||||
            if (this.scope == null) {
 | 
			
		||||
            if (this.scope === null) {
 | 
			
		||||
                $("#node-input-scope-select").val("all");
 | 
			
		||||
            } else {
 | 
			
		||||
                $("#node-input-scope-select").val("target");
 | 
			
		||||
@@ -258,8 +248,7 @@
 | 
			
		||||
                    if ($(this).prop("checked")) {
 | 
			
		||||
                        node.scope.push($(this).data('node-id'));
 | 
			
		||||
                    }
 | 
			
		||||
                })
 | 
			
		||||
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
        },
 | 
			
		||||
        oneditresize: function(size) {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="debug">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -36,13 +21,16 @@
 | 
			
		||||
<script type="text/x-red" data-help-name="debug">
 | 
			
		||||
    <p>The Debug node can be connected to the output of any node. It can be used to display the output of any message
 | 
			
		||||
    property in the debug tab of the sidebar. The default is to display <code>msg.payload</code>.</p>
 | 
			
		||||
    <p>Each message will also display the timestamp, <code>msg.topic</code> and the type of property chosen to output.</p>
 | 
			
		||||
    <p>The sidebar can be accessed under the options drop-down in the top right corner.</p>
 | 
			
		||||
    <p>Each message will also display the date, time, node-id and the type of the chosen property.</p>
 | 
			
		||||
    <p>The sidebar can be accessed under the options drop-down ( <i class="fa fa-bars"></i> ) in the top right corner.</p>
 | 
			
		||||
    <p>The button to the right of the node will toggle its output on and off so you can de-clutter the debug window.</p>
 | 
			
		||||
    <p>If the payload is an object or buffer it will be stringified first for display and indicate that by saying "(Object)" or "(Buffer)".</p>
 | 
			
		||||
    <p>Selecting any particular message will highlight (in red) the debug node that reported it. This is useful if you wire up multiple debug nodes.</p>
 | 
			
		||||
    <p>Optionally can show the complete <code>msg</code> object, and send messages to the console log (⇶).</p>
 | 
			
		||||
    <p>In addition any calls to node.warn or node.error will appear here.</p>
 | 
			
		||||
    <p>You can explore the received messages further by clicking on them. Numbers will be shown in decimal and hex and
 | 
			
		||||
    as a timestamp if appropriate. Objects and arrays can be further expanded as required. Buffers may be able to be
 | 
			
		||||
    shown as strings if possible.</p>
 | 
			
		||||
    <p>Selecting the node-id of any particular message will highlight (in red) the debug node that reported it.
 | 
			
		||||
    This is useful if you wire up multiple debug nodes.</p>
 | 
			
		||||
    <p>The node can also be configured to send all messages to the console log (⇶).</p>
 | 
			
		||||
    <p><b>Note: </b>In addition, any calls to <b>node.warn</b> or <b>node.error</b> will also appear in the debug tab.</p>
 | 
			
		||||
</script>
 | 
			
		||||
<script src="debug/view/debug-utils.js"></script>
 | 
			
		||||
 | 
			
		||||
@@ -105,7 +93,7 @@
 | 
			
		||||
                    error: function(jqXHR,textStatus,errorThrown) {
 | 
			
		||||
                        if (jqXHR.status == 404) {
 | 
			
		||||
                            RED.notify(node._("common.notification.error", {message: node._("common.notification.errors.not-deployed")}),"error");
 | 
			
		||||
                        } else if (jqXHR.status == 0) {
 | 
			
		||||
                        } else if (jqXHR.status === 0) {
 | 
			
		||||
                            RED.notify(node._("common.notification.error", {message: node._("common.notification.errors.no-response")}),"error");
 | 
			
		||||
                        } else {
 | 
			
		||||
                            RED.notify(node._("common.notification.error",{message:node._("common.notification.errors.unexpected",{status:err.status,message:err.response})}),"error");
 | 
			
		||||
@@ -147,7 +135,7 @@
 | 
			
		||||
                    });
 | 
			
		||||
                    RED.view.redraw();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            var uiComponents = RED.debug.init(options);
 | 
			
		||||
 | 
			
		||||
@@ -159,7 +147,7 @@
 | 
			
		||||
                toolbar: uiComponents.footer,
 | 
			
		||||
                enableOnEdit: true
 | 
			
		||||
            });
 | 
			
		||||
            RED.actions.add("core:show-debug-tab",function() { RED.sidebar.show('debug')});
 | 
			
		||||
            RED.actions.add("core:show-debug-tab",function() { RED.sidebar.show('debug'); });
 | 
			
		||||
 | 
			
		||||
            var that = this;
 | 
			
		||||
            RED._debug = function(msg) {
 | 
			
		||||
@@ -167,18 +155,18 @@
 | 
			
		||||
                    name:"debug",
 | 
			
		||||
                    msg:msg
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.refreshMessageList = function() {
 | 
			
		||||
                RED.debug.refreshMessageList(RED.workspaces.active());
 | 
			
		||||
                if (subWindow) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        subWindow.postMessage({event:"workspaceChange",activeWorkspace:RED.workspaces.active()},"*")
 | 
			
		||||
                        subWindow.postMessage({event:"workspaceChange",activeWorkspace:RED.workspaces.active()},"*");
 | 
			
		||||
                    } catch(err) {
 | 
			
		||||
                        console.log(err);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            this.handleDebugMessage = function(t,o) {
 | 
			
		||||
                var sourceNode = RED.nodes.node(o.id) || RED.nodes.node(o.z);
 | 
			
		||||
@@ -189,7 +177,7 @@
 | 
			
		||||
                RED.debug.handleDebugMessage(o);
 | 
			
		||||
                if (subWindow) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        subWindow.postMessage({event:"message",msg:o},"*")
 | 
			
		||||
                        subWindow.postMessage({event:"message",msg:o},"*");
 | 
			
		||||
                    } catch(err) {
 | 
			
		||||
                        console.log(err);
 | 
			
		||||
                    }
 | 
			
		||||
@@ -204,13 +192,13 @@
 | 
			
		||||
                subWindow = window.open(document.location.toString().replace(/[?#].*$/,"")+"debug/view/view.html"+document.location.search,"nodeREDDebugView","menubar=no,location=no,toolbar=no,chrome,height=500,width=600");
 | 
			
		||||
                subWindow.onload = function() {
 | 
			
		||||
                    subWindow.postMessage({event:"workspaceChange",activeWorkspace:RED.workspaces.active()},"*");
 | 
			
		||||
                }
 | 
			
		||||
                };
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            $(window).unload(function() {
 | 
			
		||||
                if (subWindow) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        subWindow.close()
 | 
			
		||||
                        subWindow.close();
 | 
			
		||||
                    } catch(err) {
 | 
			
		||||
                        console.log(err);
 | 
			
		||||
                    }
 | 
			
		||||
@@ -228,7 +216,7 @@
 | 
			
		||||
                } else if (msg.event === "clear") {
 | 
			
		||||
                    options.clear();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            };
 | 
			
		||||
            window.addEventListener('message',this.handleWindowMessage);
 | 
			
		||||
        },
 | 
			
		||||
        onpaletteremove: function() {
 | 
			
		||||
@@ -251,8 +239,7 @@
 | 
			
		||||
                $("#node-input-typed-complete").typedInput('value',property);
 | 
			
		||||
            }
 | 
			
		||||
            $("#node-input-typed-complete").on('change',function() {
 | 
			
		||||
                if ($("#node-input-typed-complete").typedInput('type') === 'msg'
 | 
			
		||||
                    &&
 | 
			
		||||
                if ($("#node-input-typed-complete").typedInput('type') === 'msg' &&
 | 
			
		||||
                    $("#node-input-typed-complete").typedInput('value') === ''
 | 
			
		||||
                ) {
 | 
			
		||||
                    $("#node-input-typed-complete").typedInput('value','payload');
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 *
 | 
			
		||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
 * you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
 * See the License for the specific language governing permissions and
 | 
			
		||||
 * limitations under the License.
 | 
			
		||||
 **/
 | 
			
		||||
 | 
			
		||||
module.exports = function(RED) {
 | 
			
		||||
    "use strict";
 | 
			
		||||
@@ -86,6 +71,8 @@ module.exports = function(RED) {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    function sendDebug(msg) {
 | 
			
		||||
        // don't put blank errors in sidebar (but do add to logs)
 | 
			
		||||
        //if ((msg.msg === "") && (msg.hasOwnProperty("level")) && (msg.level === 20)) { return; }
 | 
			
		||||
        if (msg.msg instanceof Error) {
 | 
			
		||||
            msg.format = "error";
 | 
			
		||||
            var errorMsg = {};
 | 
			
		||||
@@ -129,7 +116,7 @@ module.exports = function(RED) {
 | 
			
		||||
                        msg.msg = msg.msg.slice(0,debuglength);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                if (isArray || msg.format === "Object") {
 | 
			
		||||
                if (isArray || (msg.format === "Object")) {
 | 
			
		||||
                    msg.msg = safeJSONStringify(msg.msg, function(key, value) {
 | 
			
		||||
                        if (key === '_req' || key === '_res') {
 | 
			
		||||
                            return "[internal]"
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="link in">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -30,21 +15,33 @@
 | 
			
		||||
</script>
 | 
			
		||||
<script type="text/x-red" data-help-name="link in">
 | 
			
		||||
    <p>Create virtual wires between flows.</p>
 | 
			
		||||
    <p>The node can be connected to any <b>link out</b> node that exists on any tab.
 | 
			
		||||
    <h3>Outputs</h3>
 | 
			
		||||
    <dl class="message-properties">
 | 
			
		||||
        <dt>msg <span class="property-type">object</span></dt>
 | 
			
		||||
        <dd>a msg object that was sent to a link out node.</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
    <p>The node can be connected to any <code>link out</code> node that exists on any tab.
 | 
			
		||||
       Once connected, they behave as if they were wired together.</p>
 | 
			
		||||
    <p>The wires between link nodes are only displayed when a link node is selected.
 | 
			
		||||
       If there are any wires to other tabs, a virtual node is show that can be clicked
 | 
			
		||||
       If there are any wires to other tabs, a virtual node is shown that can be clicked
 | 
			
		||||
       on to jump to the appropriate tab.</p>
 | 
			
		||||
    <p>Links cannot be created going into, or out of, a subflow.</p>
 | 
			
		||||
    <p><b>Note: </b>Links cannot be created going into, or out of, a subflow.</p>
 | 
			
		||||
</script>
 | 
			
		||||
<script type="text/x-red" data-help-name="link out">
 | 
			
		||||
    <p>Create virtual wires between flows.</p>
 | 
			
		||||
    <p>The node can be connected to any <b>link in</b> node that exists on any tab.
 | 
			
		||||
    <h3>Inputs</h3>
 | 
			
		||||
    <dl class="message-properties">
 | 
			
		||||
        <dt>msg <span class="property-type">object</span></dt>
 | 
			
		||||
        <dd>a msg object to send to a link in node.</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
    <p>The node can be connected to any <code>link in</code> node that exists on any tab.
 | 
			
		||||
       Once connected, they behave as if they were wired together.</p>
 | 
			
		||||
    <p>The wires between link nodes are only displayed when a link node is selected.
 | 
			
		||||
       If there are any wires to other tabs, a virtual node is show that can be clicked
 | 
			
		||||
       on to jump to the appropriate tab.</p>
 | 
			
		||||
    <p>Links cannot be created going into, or out of, a subflow.</p>
 | 
			
		||||
    <p><b>Note: </b>Links cannot be created going into, or out of, a subflow.</p>
 | 
			
		||||
</script>
 | 
			
		||||
<style>
 | 
			
		||||
#node-input-link-container {
 | 
			
		||||
@@ -141,14 +138,14 @@
 | 
			
		||||
 | 
			
		||||
        var nodeList = $("#node-input-link-container");
 | 
			
		||||
        var candidateNodes = RED.nodes.filterNodes({type:targetType});
 | 
			
		||||
        var inSubflow = (RED.nodes.subflow(node.z) != null);
 | 
			
		||||
        var inSubflow = (RED.nodes.subflow(node.z) !== null);
 | 
			
		||||
        candidateNodes.forEach(function(n) {
 | 
			
		||||
            if (inSubflow) {
 | 
			
		||||
                if (n.z !== node.z) {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                if (RED.nodes.subflow(n.z)!=null) {
 | 
			
		||||
                if (RED.nodes.subflow(n.z) !== null) {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
@@ -223,7 +220,7 @@
 | 
			
		||||
            if ($(this).prop("checked")) {
 | 
			
		||||
                node.links.push($(this).data('node-id'));
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
        });
 | 
			
		||||
        node.oldLinks.sort();
 | 
			
		||||
        node.links.sort();
 | 
			
		||||
        var nodeMap = {};
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="function">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -42,14 +27,14 @@
 | 
			
		||||
    <h4>Logging and Error Handling</h4>
 | 
			
		||||
    <p>To log any information, or report an error, the following functions are available:</p>
 | 
			
		||||
        <ul>
 | 
			
		||||
            <li><code>node.log("Log")</code></li>
 | 
			
		||||
            <li><code>node.log("Log message")</code></li>
 | 
			
		||||
            <li><code>node.warn("Warning")</code></li>
 | 
			
		||||
            <li><code>node.error("Error")</code></li>
 | 
			
		||||
        </ul>
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>The Catch node can also be used to handle errors. To invoke a Catch node,
 | 
			
		||||
    pass <code>msg</code> as a second argument to <code>node.error</code>:</p>
 | 
			
		||||
    <pre>node.error("Error",msg)</pre>
 | 
			
		||||
    <pre>node.error("Error",msg);</pre>
 | 
			
		||||
    <h4>Sending messages</h4>
 | 
			
		||||
    <p>The function can either return the messages it wants to pass on to the next nodes
 | 
			
		||||
    in the flow, or can call <code>node.send(messages)</code>.</p>
 | 
			
		||||
@@ -63,7 +48,6 @@
 | 
			
		||||
    <p>If null is returned, either by itself or as an element of the array, no
 | 
			
		||||
          message is passed on.</p>
 | 
			
		||||
    <p>See the <a target="_blank" href="http://nodered.org/docs/writing-functions.html">online documentation</a> for more help.</p>
 | 
			
		||||
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
@@ -74,7 +58,7 @@
 | 
			
		||||
            name: {value:""},
 | 
			
		||||
            func: {value:"\nreturn msg;"},
 | 
			
		||||
            outputs: {value:1},
 | 
			
		||||
            noerr: {value:0,required:true,validate:function(v){ return ((!v) || (v === 0)) ? true : false; }}
 | 
			
		||||
            noerr: {value:0,required:true,validate:function(v) { return ((!v) || (v === 0)) ? true : false; }}
 | 
			
		||||
        },
 | 
			
		||||
        inputs:1,
 | 
			
		||||
        outputs:1,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="template">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -64,6 +49,17 @@
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-help-name="template">
 | 
			
		||||
    <p>Sets a property based on the provided template.</p>
 | 
			
		||||
    <h3>Inputs</h3>
 | 
			
		||||
    <dl class="message-properties">
 | 
			
		||||
        <dt>msg <span class="property-type">object</span></dt>
 | 
			
		||||
        <dd>A msg object containing information to populate the template.</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
    <h3>Outputs</h3>
 | 
			
		||||
    <dl class="message-properties">
 | 
			
		||||
        <dt>msg <span class="property-type">object</span></dt>
 | 
			
		||||
        <dd>a msg with a property set by populating the configured template with properties from the incoming msg.</dd>
 | 
			
		||||
    </dl>
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
    <p>By default this uses the <i><a href="http://mustache.github.io/mustache.5.html" target="_blank">mustache</a></i>
 | 
			
		||||
    format, but this can be switched off if required.</p>
 | 
			
		||||
    <p>For example, when a template of:
 | 
			
		||||
@@ -76,8 +72,8 @@
 | 
			
		||||
}</pre>
 | 
			
		||||
    <p>The resulting property will be:
 | 
			
		||||
    <pre>Hello Fred. Today is Monday</pre>
 | 
			
		||||
    <p>It is possible to use property from flow context or global context. Just use <code>{{flow.name}}</code> or <code>{{global.name}}</code>.
 | 
			
		||||
    <p>By default, mustache will escape any HTML entities in the values it substitutes.
 | 
			
		||||
    <p>It is possible to use a property from the flow context or global context. Just use <code>{{flow.name}}</code> or <code>{{global.name}}</code>.
 | 
			
		||||
    <p><b>Note: </b>By default, <i>mustache</i> will escape any HTML entities in the values it substitutes.
 | 
			
		||||
       To prevent this, use <code>{{{triple}}}</code> braces.
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
@@ -131,9 +127,9 @@
 | 
			
		||||
            $("#node-input-format").change(function() {
 | 
			
		||||
                var mod = "ace/mode/"+$("#node-input-format").val();
 | 
			
		||||
                that.editor.getSession().setMode({
 | 
			
		||||
                   path: mod,
 | 
			
		||||
                   v: Date.now()
 | 
			
		||||
                })
 | 
			
		||||
                    path: mod,
 | 
			
		||||
                    v: Date.now()
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        },
 | 
			
		||||
        oneditsave: function() {
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="comment">
 | 
			
		||||
    <div class="form-row">
 | 
			
		||||
@@ -31,6 +16,9 @@
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-help-name="comment">
 | 
			
		||||
    <p>A node you can use to add comments to your flows.</p>
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
    <p>The edit panel will accept Markdown syntax. The text will be rendered into
 | 
			
		||||
    this information side panel.</p>
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<script type="text/javascript">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,18 +1,3 @@
 | 
			
		||||
<!--
 | 
			
		||||
  Copyright JS Foundation and other contributors, http://js.foundation
 | 
			
		||||
 | 
			
		||||
  Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
  you may not use this file except in compliance with the License.
 | 
			
		||||
  You may obtain a copy of the License at
 | 
			
		||||
 | 
			
		||||
  http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 | 
			
		||||
  Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
  distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
  See the License for the specific language governing permissions and
 | 
			
		||||
  limitations under the License.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-template-name="unknown">
 | 
			
		||||
    <div class="form-tips"><span data-i18n="[html]unknown.tip"></span></div>
 | 
			
		||||
@@ -20,11 +5,14 @@
 | 
			
		||||
 | 
			
		||||
<script type="text/x-red" data-help-name="unknown">
 | 
			
		||||
    <p>This node is a type unknown to your installation of Node-RED.</p>
 | 
			
		||||
    <p><i>If you deploy with the node in this state, it's configuration will be preserved, but
 | 
			
		||||
    <h3>Details</h3>
 | 
			
		||||
    <p><i>If you deploy with the node in this state, its configuration will be preserved, but
 | 
			
		||||
    the flow will not start until the missing type is installed.</i></p>
 | 
			
		||||
    <p>It is possible this node type is already installed, but is missing a dependency. Check the Node-RED start-up log for
 | 
			
		||||
       any error messages associated with the missing node type. Use <b>npm install <module></b> to install any missing modules
 | 
			
		||||
       and restart Node-RED and reimport the nodes.</p>
 | 
			
		||||
    <p>Use the <code>Menu - Manage Palette</code> option
 | 
			
		||||
    to search for and install nodes, or <b>npm install <module></b> to
 | 
			
		||||
    install, any missing modules and restart Node-RED and reimport the nodes.</p>
 | 
			
		||||
    <p>It is possible this node type is already installed, but is missing a dependency. Check the Node-RED start-up
 | 
			
		||||
    log for any error messages associated with the missing node type.</p>
 | 
			
		||||
    <p>Otherwise, you should contact the author of the flow to obtain a copy of the missing node type.</p>
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
        "enabled": "Enabled",
 | 
			
		||||
        "disabled":"Disabled",
 | 
			
		||||
        "info": "Description",
 | 
			
		||||
        "tip": "Description will accept Markdown and will appear in the Info tab."
 | 
			
		||||
        "tip": "Description accepts Markdown and will appear in the Info tab."
 | 
			
		||||
    },
 | 
			
		||||
    "menu": {
 | 
			
		||||
        "label": {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user