diff options
Diffstat (limited to 'dgbuilder/core_nodes/core/89-trigger.html')
-rw-r--r-- | dgbuilder/core_nodes/core/89-trigger.html | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/dgbuilder/core_nodes/core/89-trigger.html b/dgbuilder/core_nodes/core/89-trigger.html new file mode 100644 index 00000000..f3ec530d --- /dev/null +++ b/dgbuilder/core_nodes/core/89-trigger.html @@ -0,0 +1,130 @@ +<!-- + Copyright 2014 IBM Corp. + + 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="trigger"> + <div class="form-row"> + <label for="node-input-op1type"><i class="fa fa-arrow-up"></i> Output</label> + <select id="node-input-op1type" style="width:73% !important"> + <option value="val">the value below</option> + <option value="pay">the existing payload</option> + <option value="nul">nothing (no output)</option> + </select> + </div> + <div class="form-row" id="node-op1"> + <label for="node-input-op1"> </label> + <input type="text" id="node-input-op1"> + </div> + <div class="form-row"> + <label for="node-input-duration"><i class="fa fa-clock-o"></i> then wait</label> + <input type="text" id="node-input-duration" placeholder="250" style="direction:rtl; width:70px !important"> + <select id="node-input-units" style="width:140px !important"> + <option value="ms">Milliseconds</option> + <option value="s">Seconds</option> + <option value="min">Minutes</option> + <option value="hr">Hours</option> + </select> + </div> + <div class="form-row"> + <label for="node-input-op2type"><i class="fa fa-arrow-down"></i> output</label> + <select id="node-input-op2type" style="width:73% !important"> + <option value="val">the value below</option> + <option value="pay">the existing payload</option> + <option value="nul">nothing (no output)</option> + </select> + </div> + <div class="form-row" id="node-op2"> + <label for="node-input-op2"> </label> + <input type="text" id="node-input-op2"> + </div> + <div class="form-row"> + <label for="node-input-extend"><i class="fa fa-repeat"></i> and</label> + <select id="node-input-extend" style="width:73% !important"> + <option value="false">don't extend the timer if retriggered</option> + <option value="true">extend the timer if retriggered</option> + </select> + </div> + <div class="form-row"> + <label for="node-input-name"><i class="fa fa-tag"></i> Name</label> + <input type="text" id="node-input-name" placeholder="Name"> + </div> + <!-- <div class="form-tips">Tip: Outputs can be values, null, {{templated}} or msg.payload<br/> --> + <div class="form-tips">Setting the timeout to 0 sets an infinite timeout = single shot.</div> + <script> + { + $("#node-input-op1type").change(function() { + if ($("#node-input-op1type").val() == "val") { $("#node-op1").show(); } + else { $("#node-op1").hide(); } + }); + $("#node-input-op2type").change(function() { + if ($("#node-input-op2type").val() == "val") { $("#node-op2").show(); } + else { $("#node-op2").hide(); } + }); + } + </script> +</script> + +<script type="text/x-red" data-help-name="trigger"> + <p>Creates two messages on the output separated by a timeout whenever ANY <b>msg</b> arrives on the input.</p> + <p>For example, this can be used to toggle a Raspberry PI GPIO pin on and off.</p> + <p>The two output states can be specified as can the duration of the timer. + Either output can be set to a value, or templated from the inbound + <b>msg</b> using mustache syntax. <pre>The payload is {{payload}}</pre></p> + <p>If the payload is an object then setting the output to <i>existing payload</i> will pass the complete payload object through.</p> + <p>Optionally the timer can be extended by being retriggered... or not.</p> + <p>By setting the first output to <i>nothing</i>, and selecting extend timer - a watchdog timer can be created. + No output will happen as long as repeated inputs occur within the timeout period.</p> + <p>Setting the timer to 0 creates an "infinite" timeout - the first output will happen but the second + never will, and neither can the first be retriggered - so a true one shot.</p> + <p>If a <b>msg.reset</b> property is present any timeout currently in progress + will be cleared and the second output will not happen.</p> +</script> + +<script type="text/javascript"> + RED.nodes.registerType('trigger',{ + category: 'function', + color:"#E6E0F8", + defaults: { + op1: {value:"1"}, + op2: {value:"0"}, + op1type: {value:""}, + op2type: {value:""}, + duration: {value:"250",required:true,validate:RED.validators.number()}, + extend: {value:"false"}, + units: {value: "ms"}, + name: {value:""} + }, + inputs:1, + outputs:1, + icon: "trigger.png", + label: function() { + if (this.duration > 0) { + return this.name||"trigger "+this.duration+this.units; + } + else { + return this.name||"trigger once ∞"; + } + }, + labelStyle: function() { + return this.name?"node_label_italic":""; + }, + oneditprepare: function() { + $( "#node-input-duration" ).spinner({ + min:1, + increment:25 + }); + } + }); +</script> |