UNPKG

node-red-contrib-qnap-timeseries

Version:
242 lines (204 loc) 7.28 kB
<!-- mongodb config --> <script type="text/x-red" data-template-name="mongodb"> <div class="form-row"> <label for="node-config-input-hostname"><i class="fa fa-bookmark"></i> <span data-i18n="mongodb.label.host"></span></label> <input class="input-append-left" type="text" id="node-config-input-hostname" placeholder="localhost" style="width: 40%;" > <label for="node-config-input-port" style="margin-left: 10px; width: 35px; "> <span data-i18n="mongodb.label.port"></span></label> <input type="text" id="node-config-input-port" style="width:45px"> </div> <div class="form-row"> <label for="node-config-input-db"><i class="fa fa-database"></i> <span data-i18n="mongodb.label.database"></span></label> <input type="text" id="node-config-input-db"> </div> <div class="form-row"> <label for="node-config-input-user"><i class="fa fa-user"></i> <span data-i18n="mongodb.label.username"></span></label> <input type="text" id="node-config-input-user"> </div> <div class="form-row"> <label for="node-config-input-password"><i class="fa fa-lock"></i> <span data-i18n="mongodb.label.password"></span></label> <input type="password" id="node-config-input-password"> </div> <div class="form-row"> <label for="node-config-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label> <input type="text" id="node-config-input-name" data-i18n="[placeholder]node-red:common.label.name"> </div> </script> <script type="text/javascript"> RED.nodes.registerType('mongodb', { category: 'config', color: "rgb(218, 196, 180)", defaults: { hostname: {value: "127.0.0.1", required: true}, port: {value: 27017, required: true}, db: {value: "", required: true}, name: {value: ""} }, credentials: { user: {type: "text"}, password: {type: "password"} }, label: function() { return this.name || this.hostname + ":" + this.port + "/" + this.db; } }); </script> <!-- mongodb out --> <script type="text/x-red" data-template-name="mongodb out"> <div class="form-row"> <label for="node-input-mongodb"><i class="fa fa-bookmark"></i> <span data-i18n="mongodb.label.server"></span></label> <input type="text" id="node-input-mongodb"> </div> <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label> <input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name"> </div> <div class="form-tips" id="node-warning"><span data-i18n="[html]mongodb.tip"></span></div> </script> <script type="text/x-red" data-help-name="mongodb out"> <p>A simple MongoDB output node. Save data to <b>time-series</b> format in QIoT database.</p> </script> <script type="text/javascript"> RED.nodes.registerType('mongodb out', { category: 'QNAP', color: "#FF5809", defaults: { name: {value: ""}, mongodb: {type: "mongodb", required: true} }, inputs: 1, outputs: 0, icon: "db.png", align: "right", paletteLabel: 'QDatabase', label: function() { return this.name||"qiot-database";; }, oneditprepare: function(){ var node = this; } }); </script> <!-- mongodb historic --> <!-- qiot historic node --> <script type="text/x-red" data-template-name="mongodb aggre"> <div class="form-row"> <label for="node-input-mongodb"><i class="fa fa-bookmark"></i> <span data-i18n="mongodb.label.server"></span></label> <input type="text" id="node-input-mongodb"> </div> <div class="form-row"> <label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label> <input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name"> </div> <div class="form-row"> <label for="node-input-deviceid"><i class="fa fa-tag"></i> <span data-i18n="mongodb.label.deviceid"></span></label> <input type="text" id="node-input-deviceid" > </div> <div class="form-row"> <label for="node-input-sensorid"><i class="fa fa-tag"></i> <span data-i18n="mongodb.label.sensorid"></span></label> <input type="text" id="node-input-sensorid"> </div> <div class="form-row"> <label for="node-input-resolution"><i class="fa fa-object-group"></i> <span data-i18n="mongodb.label.resolution"></span></label> <select type="text" id="node-input-resolution" style="width:70%;"> <option value="rm">Minute</option> <option value="rh">Hour</option> <option value="rd">Day</option> </select> </div> <div class="form-row"> <label for="node-input-interval"><i class="fa fa-object-group"></i> <span data-i18n="mongodb.label.interval"></span></label> <select type="text" id="node-input-interval" style="width:70%;"> </select> </div> <div class="form-row"> <label for="node-input-range"><i class="fa fa-object-group"></i> <span data-i18n="mongodb.label.range"></span></label> <select type="text" id="node-input-range" style="width:70%;"> </select> </div> </script> <script type="text/x-red" data-help-name="mongodb aggre"> <p>Pass <code>msg.payload.start_date</code> and <code>msg.payload.end_date</code> can enable date range filter function</p> <p>The following functions are available to define date variable:</p> <ul> <li><code>new Date()</code></li> <li><code>"2016-08-29T04:25:32.610Z"</code></li> </ul> <p>Sample code:</p> <pre>var start_date = new Date(); start_date.setHours(start_date.getHours() - 2); var msg = { payload: { start_date: start_date, end_date: new Date() } }; </pre> <p><b>Note: </b>Datetime in UTC</p> </script> <script type="text/javascript"> RED.nodes.registerType('mongodb aggre',{ category: 'QNAP', color: '#FF5809', defaults: { name: {value:""}, mongodb: {type: "mongodb", required: true}, deviceid: {value:""}, sensorid: {value:""}, resolution: {value:"rh"}, interval: {value:"1"}, range: {value:"d"} }, inputs:1, outputs:1, icon: "function.png", align: 'left', paletteLabel: 'QHistoric', label: function() { return this.name||"qiot-historic-api"; }, oneditprepare: function(){ var node = this; this.nid = node.id; $("#node-input-resolution").change(function(){ var type = $("#node-input-resolution").val(); var interval_opt; var range_opt; switch (type){ case 'rm': interval_opt = [5, 10, 15, 30]; range_opt = ['day']; break; case 'rh': interval_opt = [1, 3, 6, 12]; range_opt = ['day', 'week']; break; case 'rd': interval_opt = [1]; range_opt = ['week', 'month']; break; } $("#node-input-interval option").remove(); interval_opt.forEach(function(item){ $("#node-input-interval").append($("<option></option>") .attr("value", item) .attr("selected", (node.interval == item)) .text(item)); }); $("#node-input-range option").remove(); range_opt.forEach(function(item){ $("#node-input-range").append($("<option></option>") .attr("value", item.substring(0,1)) .attr("selected", (node.range == item.substring(0,1))) .text(item)); }); }); $("#node-input-resolution").change(); }, oneditsave: function() { }, onpaletteadd: function() { }, onpaletteremove: function() { } }); </script>