diff options
Diffstat (limited to 'dgbuilder/core_nodes/core/89-delay.html')
-rw-r--r-- | dgbuilder/core_nodes/core/89-delay.html | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/dgbuilder/core_nodes/core/89-delay.html b/dgbuilder/core_nodes/core/89-delay.html new file mode 100644 index 00000000..dcb0a5b9 --- /dev/null +++ b/dgbuilder/core_nodes/core/89-delay.html @@ -0,0 +1,167 @@ +<!-- + Copyright 2013 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. +--> + +<!-- First, the content of the edit dialog is defined. --> +<script type="text/x-red" data-template-name="delay"> + + <div class="form-row"> + <label for="node-input-pauseType"><i class="fa fa-tasks"></i> Action</label> + <select id="node-input-pauseType" style="width:270px !important"> + <option value="delay">Delay message</option> + <option value="rate">Limit rate to</option> + <option value="random">Random delay</option> + </select> + </div> + <div id="delay-details" class="form-row"> + <label for="node-input-timeout"><i class="fa fa-clock-o"></i> For</label> + <input type="text" id="node-input-timeout" placeholder="Time" style="direction:rtl; width:50px !important"> + <select id="node-input-timeoutUnits" style="width:200px !important"> + <option value="milliseconds">Milliseconds</option> + <option value="seconds">Seconds</option> + <option value="minutes">Minutes</option> + <option value="hours">Hours</option> + <option value="days">Days</option> + </select> + </div> + + <div id="rate-details" class="form-row"> + <label for="node-input-rate"><i class="fa fa-clock-o"></i> To</label> + <input type="text" id="node-input-rate" placeholder="1" style="direction:rtl; width:30px !important"> + <label for="node-input-reateUnits">msg(s) per</label> + <select id="node-input-rateUnits" style="width:140px !important"> + <option value="second">Second</option> + <option value="minute">Minute</option> + <option value="hour">Hour</option> + <option value="day">Day</option> + </select> + <br/> + <input style="margin: 20px 0 20px 100px; width: 30px;" type="checkbox" id="node-input-drop"><label style="width: 250px;" for="node-input-drop">drop intermediate messages</label> + </div> + + <div id="random-details" class="form-row"> + <label for="node-input-randomFirst"><i class="fa fa-clock-o"></i> Between</label> + <input type="text" id="node-input-randomFirst" placeholder="" style="directon:rtl; width:30px !important"> + <label for="node-input-randomLast" style="width:20px"> & </label> + <input type="text" id="node-input-randomLast" placeholder="" style="directon:rtl; width:30px !important"> + <select id="node-input-randomUnits" style="width:140px !important"> + <option value="milliseconds">Milliseconds</option> + <option value="seconds">Seconds</option> + <option value="minutes">Minutes</option> + <option value="hours">Hours</option> + <option value="days">Days</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> + +</script> + +<!-- Next, some simple help text is provided for the node. --> +<script type="text/x-red" data-help-name="delay"> + <p>Introduces a delay into a flow or rate limts messges</p> + <p>Default delay is 5 seconds and rate limit of 1 msg/second, but both can be configured</p> +</script> + +<!-- Finally, the node type is registered along with all of its properties --> +<script type="text/javascript"> + RED.nodes.registerType('delay',{ + category: 'function', // the palette category + color:"#E6E0F8", + defaults: { // defines the editable properties of the node + name: {value:""}, // along with default values. + pauseType: {value:"delay", required:true}, + timeout: {value:"5", required:true, validate:RED.validators.number()}, + timeoutUnits: {value:"seconds"}, + rate: {value:"1", required:true, validate:RED.validators.number()}, + rateUnits: {value: "second"}, + randomFirst: {value:"1", required:true, validate:RED.validators.number()}, + randomLast: {value:"5", required:true, validate:RED.validators.number()}, + randomUnits: {value: "seconds"}, + drop: {value:false} + }, + inputs:1, // set the number of inputs - only 0 or 1 + outputs:1, // set the number of outputs - 0 to n + icon: "timer.png", // set the icon (held in public/icons) + label: function() { // sets the default label contents + if (this.pauseType == "delay") { + var units = this.timeoutUnits ? this.timeoutUnits.charAt(0) : "s"; + if (this.timeoutUnits == "milliseconds") { units = "ms"; } + return this.name||"delay "+this.timeout+" " + units; + } else if (this.pauseType == "rate") { + var units = this.rateUnits ? this.rateUnits.charAt(0) : "s"; + return this.name||"limit "+this.rate+" msg/"+ units; + } else if (this.pauseType == "random") { + return this.name || "random"; + } + return "foo"; + }, + labelStyle: function() { // sets the class to apply to the label + return this.name?"node_label_italic":""; + }, + oneditprepare: function() { + $( "#node-input-timeout" ).spinner({min:1,max:60}); + $( "#node-input-rate" ).spinner({min:1}); + + $( "#node-input-randomFirst" ).spinner({min:0}); + $( "#node-input-randomLast" ).spinner({min:1}); + + if (this.pauseType == "delay") { + $("#delay-details").show(); + $("#rate-details").hide(); + $("#random-details").hide(); + } else if (this.pauseType == "rate") { + $("#delay-details").hide(); + $("#rate-details").show(); + $("#random-details").hide(); + } else if (this.pauseType == "random") { + $("#delay-details").hide(); + $("#rate-details").hide(); + $("#random-details").show(); + } + + if (!this.timeoutUnits) { + $("#node-input-timeoutUnits option").filter(function() { + return $(this).val() == 'seconds'; + }).attr('selected', true); + } + + if (!this.randomUnits) { + $("#node-input-randomUnits option").filter(function() { + return $(this).val() == 'seconds'; + }).attr('selected', true); + } + + $("#node-input-pauseType").on("change",function() { + if (this.value == "delay") { + $("#delay-details").show(); + $("#rate-details").hide(); + $("#random-details").hide(); + } else if (this.value == "rate") { + $("#delay-details").hide(); + $("#rate-details").show(); + $("#random-details").hide(); + } else if (this.value == "random") { + $("#delay-details").hide(); + $("#rate-details").hide(); + $("#random-details").show(); + } + }); + } + }); +</script> |