From a844ca161f76e575f38f5eeb35a25b708b1bac5c Mon Sep 17 00:00:00 2001 From: Dave Conway-Jones Date: Mon, 21 Aug 2017 22:00:23 +0100 Subject: [PATCH] Spinner fixes (#1371) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix for function node invalid spinner values to close #1370 * better validation of spinners for inject and delay (don’t allow negative numbers) * remove need for declaring local min variable --- nodes/core/core/20-inject.html | 2 +- nodes/core/core/80-function.html | 8 +++++++- nodes/core/core/89-delay.html | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/nodes/core/core/20-inject.html b/nodes/core/core/20-inject.html index 45488d254..9273cceae 100644 --- a/nodes/core/core/20-inject.html +++ b/nodes/core/core/20-inject.html @@ -181,7 +181,7 @@ If you want every 20 minutes from now - use the "interval" option.

topic: {value:""}, payload: {value:"", validate: RED.validators.typedInput("payloadType")}, payloadType: {value:"date"}, - repeat: {value:""}, + repeat: {value:"", validate:function(v) { return ((v === "") || (RED.validators.number(v) && (v >= 0))) }}, crontab: {value:""}, once: {value:false} }, diff --git a/nodes/core/core/80-function.html b/nodes/core/core/80-function.html index f9fbfc4a7..b64df3dce 100644 --- a/nodes/core/core/80-function.html +++ b/nodes/core/core/80-function.html @@ -73,7 +73,13 @@ oneditprepare: function() { var that = this; $( "#node-input-outputs" ).spinner({ - min:1 + 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); } + } }); this.editor = RED.editor.createEditor({ diff --git a/nodes/core/core/89-delay.html b/nodes/core/core/89-delay.html index b7d2d8c6f..d6ed0dfa2 100644 --- a/nodes/core/core/89-delay.html +++ b/nodes/core/core/89-delay.html @@ -129,13 +129,13 @@ defaults: { name: {value:""}, pauseType: {value:"delay", required:true}, - timeout: {value:"5", required:true, validate:RED.validators.number()}, + timeout: {value:"5", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, timeoutUnits: {value:"seconds"}, - rate: {value:"1", required:true, validate:RED.validators.number()}, + rate: {value:"1", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, nbRateUnits: {value:"1", required:false, validate:RED.validators.regex(/\d+|/)}, rateUnits: {value: "second"}, - randomFirst: {value:"1", required:true, validate:RED.validators.number()}, - randomLast: {value:"5", required:true, validate:RED.validators.number()}, + randomFirst: {value:"1", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, + randomLast: {value:"5", required:true, validate:function(v) { return RED.validators.number(v) && (v >= 0); }}, randomUnits: {value: "seconds"}, drop: {value:false} },