[CCSDK-28] populated the seed code for dgbuilder
[ccsdk/distribution.git] / dgbuilder / core_nodes / logic / 16-range.html
diff --git a/dgbuilder/core_nodes/logic/16-range.html b/dgbuilder/core_nodes/logic/16-range.html
new file mode 100644 (file)
index 0000000..5f87128
--- /dev/null
@@ -0,0 +1,81 @@
+<!--
+  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.
+-->
+
+<script type="text/x-red" data-template-name="range">
+    <div class="form-row">
+        <label for="node-input-action"><i class="fa fa-dot-circle-o"></i> Action</label>
+        <select id="node-input-action" style="width:70%; margin-right:5px;">
+            <option value="scale">Scale msg.payload</option>
+            <option value="clamp">Scale and limit to the target range</option>
+            <option value="roll">Scale and wrap within the target range</option>
+        </select>
+    </div>
+    <br/>
+    <div class="form-row"><i class="fa fa-sign-in"></i> Map the input range:</div>
+    <div class="form-row"><label></label>
+        from: <input type="text" id="node-input-minin" placeholder="e.g. 0" style="width:100px;"/>
+        &nbsp;&nbsp;to: <input type="text" id="node-input-maxin" placeholder="e.g. 99" style="width:100px;"/>
+    </div>
+    <div class="form-row"><i class="fa fa-sign-out"></i> to the result range:</div>
+    <div class="form-row"><label></label>
+        from: <input type="text" id="node-input-minout" placeholder="e.g. 0" style="width:100px;"/>
+        &nbsp;&nbsp;to: <input type="text" id="node-input-maxout" placeholder="e.g. 255" style="width:100px;"/>
+    </div>
+    <br/>
+    <div class="form-row"><label></label>
+        <input type="checkbox" id="node-input-round" style="display: inline-block; width: auto; vertical-align: top;">
+        <label style="width: auto;" for="node-input-round">Round result to the nearest integer?</label></input>
+    </div>
+    <br/>
+    <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" id="node-tip">Tip: This node ONLY works with numbers.</div>
+</script>
+
+<script type="text/x-red" data-help-name="range">
+    <p>A simple function node to remap numeric input values to another scale.</p>
+    <p>Currently only does a linear scaling.</p>
+    <p><b>Note:</b> This only operates on <b>numbers</b>. Anything else will try to be made into a number and rejected if that fails.</p>
+    <p><i>Scale and limit to target range</i> means that the result will never be outside the range specified within the result range.</p>
+    <p><i>Scale and wrap within the target range</i> means that the result will essentially be a "modulo-style" wrap-around within the result range.</p>
+</script>
+
+<script type="text/javascript">
+    RED.nodes.registerType('range', {
+        color: "#E2D96E",
+        category: 'function',
+        defaults: {
+            minin: {value:"",required:true,validate:RED.validators.number()},
+            maxin: {value:"",required:true,validate:RED.validators.number()},
+            minout: {value:"",required:true,validate:RED.validators.number()},
+            maxout: {value:"",required:true,validate:RED.validators.number()},
+            action: {value:"scale"},
+            round: {value:false},
+            name: {value:""}
+        },
+        inputs: 1,
+        outputs: 1,
+        icon: "range.png",
+        label: function() {
+            return this.name || "range";
+        },
+        labelStyle: function() {
+            return this.name ? "node_label_italic" : "";
+        }
+    });
+</script>