forked from node-red/node-red-dashboard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ui_toast.js
51 lines (47 loc) · 1.74 KB
/
ui_toast.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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; }
}
else { this.displayTime = 3000; }
if (this.displayTime <= 0) { this.displayTime = 1; }
this.position = config.position || "top right";
this.highlight = config.highlight;
this.ok = config.ok;
this.cancel = config.cancel;
this.topic = config.topic;
var node = this;
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.position !== "dialog") { delete msg.socketid; }
ui.emitSocket('show-toast', {
title: node.topic || msg.topic,
message: msg.payload,
highlight: node.highlight || msg.highlight,
displayTime: node.displayTime,
position: node.position,
id: node.id,
dialog: (node.position === "dialog") || false,
ok: node.ok,
cancel: node.cancel,
socketid: msg.socketid,
msg: msg
});
});
node.on("close", done);
}
RED.nodes.registerType("ui_toast", ToastNode);
};