smart-energy-monitor/software/flow/node_modules/node-red-dashboard/nodes/ui_toast.js

69 lines
2.5 KiB
JavaScript

module.exports = function(RED) {
var ui = require('../ui')(RED);
function ToastNode(config) {
RED.nodes.createNode(this, config);
if (config.hasOwnProperty("displayTime") && (config.displayTime.length > 0)) {
try { this.displayTime = parseFloat(config.displayTime) * 1000; }
catch(e) { this.displayTime = 3000; }
}
this.position = config.position || "top right";
this.highlight = config.highlight;
this.ok = config.ok;
this.cancel = config.cancel;
this.className = config.className;
this.topic = config.topic;
if (config.sendall === undefined) { this.sendall = true; }
else { this.sendall = config.sendall; }
this.raw = config.raw || false;
var node = this;
// var noscript = function (content) {
// if (typeof content === "object") { return null; }
// content = '' + content;
// content = content.replace(/<.*cript.*/ig, '');
// content = content.replace(/.on\w+=.*".*"/g, '');
// content = content.replace(/.on\w+=.*\'.*\'/g, '');
// return content;
// }
var done = ui.add({
node: node,
control: {},
storeFrontEndInputAsState: false,
forwardInputMessages: false,
beforeSend: function (msg) {
var m = msg.payload.msg;
m.topic = node.topic || m.topic;
return m;
}
});
node.on('input', function(msg) {
if (node.sendall === true) { delete msg.socketid; }
var dt = node.displayTime || msg.timeout * 1000 || 3000;
if (dt <= 0) { dt = 1; }
//msg.payload = noscript(msg.payload);
ui.emitSocket('show-toast', {
title: node.topic || msg.topic,
toastClass: node.className || msg.className,
message: msg.payload,
highlight: node.highlight || msg.highlight,
displayTime: dt,
position: node.position,
id: node.id,
dialog: (node.position === "dialog" || node.position === "prompt") || false,
prompt: (node.position === "prompt") || false,
ok: node.ok,
cancel: node.cancel,
socketid: msg.socketid,
raw: node.raw,
msg: msg
});
});
node.on("close", done);
}
RED.nodes.registerType("ui_toast", ToastNode);
};