Aggiunto nodo debounce
parent
869b8b357b
commit
99840b7ac2
|
|
@ -0,0 +1,33 @@
|
||||||
|
|
||||||
|
<script type="text/html" data-template-name="my-debounce">
|
||||||
|
<div class="form-row">
|
||||||
|
<label for="node-input-delay"><i class="fa fa-wrench"></i> Delay</label>
|
||||||
|
<input type="text" id="node-input-delay">
|
||||||
|
</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>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/html" data-help-name="my-debounce">
|
||||||
|
<p>Deduplica messaggi per valore del payload entro <code>delay</code>.</p>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
RED.nodes.registerType('my-debounce',{
|
||||||
|
category: 'function',
|
||||||
|
color: "#E6E0F8",
|
||||||
|
defaults: {
|
||||||
|
delay: { value: 1000, required: true, validate: RED.validators.number() },
|
||||||
|
name: { value: "" }
|
||||||
|
},
|
||||||
|
inputs: 1,
|
||||||
|
outputs: 1,
|
||||||
|
icon: "timer.png",
|
||||||
|
label: function() {
|
||||||
|
return this.name || "my-debounce";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
|
||||||
|
module.exports = function (RED) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function XMPPServerNode(n) {
|
||||||
|
RED.nodes.createNode(this, n);
|
||||||
|
this.delay_msec = n.delay;
|
||||||
|
//this.by_value = n.by_value;
|
||||||
|
this.recv = new Map();
|
||||||
|
this.on("input", msg => {
|
||||||
|
let msg_json = JSON.stringify(msg.payload);
|
||||||
|
let now = new Date();
|
||||||
|
for (let [key, val] of this.recv) {
|
||||||
|
if ((now.getTime() - val.getTime()) > this.delay_msec) {
|
||||||
|
this.recv.delete(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!this.recv.has(msg_json)) {
|
||||||
|
this.send(msg);
|
||||||
|
this.recv.set(msg_json, now);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
RED.nodes.registerType("my-debounce", XMPPServerNode);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -13,7 +13,8 @@
|
||||||
"keywords": [ "node-red", "xmpp" ],
|
"keywords": [ "node-red", "xmpp" ],
|
||||||
"node-red" : {
|
"node-red" : {
|
||||||
"nodes" : {
|
"nodes" : {
|
||||||
"xmpp": "92-xmpp.js"
|
"xmpp": "92-xmpp.js",
|
||||||
|
"my-debounce": "my-debounce.js"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"author": {
|
"author": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue