UNPKG

smithtek-nodered

Version:

NodeRED node to post data on SmithTek using MQTT.

137 lines (127 loc) 6.89 kB
<script type="text/javascript"> RED.nodes.registerType('smithtek_sequencer',{ category: 'function', color: '#B9B6B8', defaults: { name: {value:""}, outputs: {value:"1", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, step: {value: "10", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, stepUnits: {value:"seconds"}, pauseTime: {value: "1", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, pauseUnits: {value:"minutes"}, autostart: {value:"false"}, startupDelay: {value: "1", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, startupUnits: {value: "milliseconds"} }, inputs:1, outputs:1, icon: "smithtek.png", paletteLabel: "smithtek_seq", label: function() { if (this.name) { return this.name; } var units = this.stepUnits ? this.stepUnits.charAt(0) : "s"; if (this.stepUnits == "milliseconds") { units = "ms"; } return "sequencer " + this.step + units; }, labelStyle : function() { return this.name ? "node_label_italic" : ""; }, oneditprepare: function() { var that = this; $("#node-input-outputs").spinner({ min: 1, change: function (event, ui) { var value = this.value; if (!value.match(/^\d+$/)) { value = 1; } else if (value < this.min) { value = this.min; } if (value !== this.value) { $(this).spinner("value", value); } } }); if (!this.stepUnits) { $("#node-input-stepUnits option").filter(function() { return $(this).val() == 'seconds'; }).attr('selected',true); } if (!this.pauseUnits) { $("#node-input-pauseUnits option").filter(function() { return $(this).val() == 'minutes'; }).attr('selected',true); } if (!this.startupUnits) { $("#node-input-pauseUnits option").filter(function() { return $(this).val() == "milliseconds"; }).attr('selected',true); } } }); </script> <script type="text/x-red" data-template-name="smithtek_sequencer"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name"> </div> <div class="form-row" id="delay-details-for"> <label for="node-input-step"><i class="fa fa-clock-o"></i> <span data-i18n="smithtek.sequencer.stepTime"></span></label> <input type="text" id="node-input-step" style="text-align:end; width:50px !important"> <select id="node-input-stepUnits" style="width:200px !important"> <option value="milliseconds" data-i18n="smithtek.timeunits.ms" ></option> <option value="seconds" data-i18n="smithtek.timeunits.s"></option> <option value="minutes" data-i18n="smithtek.timeunits.m"></option> <option value="hours" data-i18n="smithtek.timeunits.h"></option> <option value="days" data-i18n="smithtek.timeunits.d"></option> </select> </div> <div class="form-row" id="pause-details-for"> <label for="node-input-pauseTime"><i class="fa fa-clock-o"></i> <span data-i18n="smithtek.sequencer.pauseTime"></span></label> <input type="text" id="node-input-pauseTime" style="text-align:end; width:50px !important"> <select id="node-input-pauseUnits" style="width:200px !important"> <option value="milliseconds" data-i18n="smithtek.timeunits.ms"></option> <option value="seconds" data-i18n="smithtek.timeunits.s"></option> <option value="minutes" data-i18n="smithtek.timeunits.m"></option> <option value="hours" data-i18n="smithtek.timeunits.h"></option> <option value="days" data-i18n="smithtek.timeunits.d"></option> </select> </div> <div class="form-row"> <input type="checkbox" id="node-input-autostart" style="display: inline-block; width: auto; vertical-align: top;"> <label style="width: auto;" for="node-input-autostart" data-i18n="smithtek.sequencer.autostart"></label></input> </div> <div class="form-row" id="startup-details-for"> <label for="node-input-startupDelay"><i class="fa fa-clock-o"></i> <span data-i18n="smithtek.sequencer.startupDelay"></span></label> <input type="text" id="node-input-startupDelay" style="text-align:end; width:50px !important"> <select id="node-input-startupUnits" style="width:200px !important"> <option value="milliseconds" data-i18n="smithtek.timeunits.ms"></option> <option value="seconds" data-i18n="smithtek.timeunits.s"></option> <option value="minutes" data-i18n="smithtek.timeunits.m"></option> <option value="hours" data-i18n="smithtek.timeunits.h"></option> <option value="days" data-i18n="smithtek.timeunits.d"></option> </select> </div> <div class="form-row"> <label for="node-input-outputs"><i class="fa fa-random"></i> <span data-i18n="node-red:function.label.outputs"></span></label> <input id="node-input-outputs" style="width: 60px;" value="1"> </div> </div> </script> <script type="text/x-red" data-help-name="smithtek_sequencer"> <p>A node to send <code>true</code> as the <code>msg.paylod</code> to each output in sequence.</p> <p><strong>Smithtek Sequencer</strong><br/> This node will step through the outputs sending a true value and pausing a set amount of time between output sends. any input will trigger a pause on the node, pausing for a set amount of time. <ul> <li><code>Step Time</code> This amount of time to wait before sending true the next output.</li> <li><code>Pause Time</code> The amount of time to pause when a value comes in on the input.</li> <li><code>Autostart</code> If checked, this node will start up when deployed.</li> <li><code>Start Delay</code> If the node is autostarting, it will wait this long before doing so.</li> <li><code>Outputs</code> The number of outputs to step through.</li> </p> </ul> </script>