update notify package to use a more cross platform library

This commit is contained in:
Dave Conway-Jones 2018-09-10 11:37:20 -04:00
parent 949bbe95cd
commit 8acc5064d0
No known key found for this signature in database
GPG Key ID: 9E7F9C73F5168CD4
4 changed files with 29 additions and 19 deletions

View File

@ -1,5 +1,5 @@
<script type="text/x-red" data-template-name="notify"> <script type="text/x-red" data-template-name="nnotify">
<div class="form-row"> <div class="form-row">
<label for="node-input-title"><i class="fa fa-flag"></i> Title</label> <label for="node-input-title"><i class="fa fa-flag"></i> Title</label>
<input type="text" id="node-input-title" placeholder="Node-RED"> <input type="text" id="node-input-title" placeholder="Node-RED">
@ -10,15 +10,15 @@
</div> </div>
</script> </script>
<script type="text/x-red" data-help-name="notify"> <script type="text/x-red" data-help-name="nnotify">
<p>Uses Growl to provide a desktop popup containing the <code>msg.payload</code>. Only useful on the local machine.</p> <p>Uses node-notifier to provide a desktop popup containing the <code>msg.payload</code>. Only useful on the local machine.</p>
<p>Optionally uses <code>msg.topic</code> as the title.</p> <p>Optionally uses <code>msg.topic</code> as the title, and <code>msg.icon</code> as the full path to an icon file to display.</p>
<p>Uses Growl so should work cross platform but will need pre-reqs installed... see <i><a href="https://npmjs.org/package/growl" target="_new">this link.</a></i></p> <p>Uses node-notifier so should work cross platform but may need to intall pre-reqs... see <i><a href="https://www.npmjs.com/package/node-notifier" target="_new">this link.</a></i></p>
<p>If installing on Windows you MUST read the install instructions ... especially the bit about adding growlnotify to your path... or it WILL NOT work.</p> <p>If installing on Windows you MUST read the install instructions... or it WILL NOT work.</p>
</script> </script>
<script type="text/javascript"> <script type="text/javascript">
RED.nodes.registerType('notify',{ RED.nodes.registerType('nnotify',{
category: 'output', category: 'output',
defaults: { defaults: {
title: {value:""}, title: {value:""},
@ -29,6 +29,7 @@
outputs:0, outputs:0,
icon: "alert.png", icon: "alert.png",
align: "right", align: "right",
paletteLabel: "notify",
label: function() { label: function() {
return this.name||this.title||"notify"; return this.name||this.title||"notify";
}, },

View File

@ -1,26 +1,35 @@
module.exports = function(RED) { module.exports = function(RED) {
"use strict"; "use strict";
var growl = require('growl'); var notifier = require('node-notifier');
var imagefile = process.env.NODE_RED_HOME+"/public/node-red.png"; var path = require('path');
var fs = require('fs');
var image = path.join(__dirname, "/node-red.png");
function NotifyNode(n) { function NotifyNode(n) {
RED.nodes.createNode(this,n); RED.nodes.createNode(this,n);
this.title = n.title; this.title = n.title;
var node = this; var node = this;
node.on("input",function(msg) { node.on("input",function(msg) {
var titl = node.title || msg.topic; var title = node.title || msg.topic;
if (typeof(msg.payload) == 'object') { if (typeof msg.payload === 'object') {
msg.payload = JSON.stringify(msg.payload); msg.payload = JSON.stringify(msg.payload);
} }
if (typeof(titl) != 'undefined') { var icon = image;
growl(msg.payload, { title: titl, image: imagefile }); if (msg.icon) {
if (fs.existsSync(msg.icon)) { icon = msg.icon; }
else { node.error("Bad Icon file: "+msg.icon,msg); }
}
var icon = msg.icon || image;
if (typeof(title) !== 'undefined') {
notifier.notify({ message:msg.payload, title:title, icon:icon });
} }
else { else {
growl(msg.payload, { image: imagefile }); notifier.notify({ message:msg.payload, icon:imagefile });
} }
}); });
} }
RED.nodes.registerType("notify",NotifyNode); RED.nodes.registerType("nnotify",NotifyNode);
} }

BIN
social/notify/node-red.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1019 B

View File

@ -1,17 +1,17 @@
{ {
"name" : "node-red-node-notify", "name" : "node-red-node-notify",
"version" : "0.0.5", "version" : "0.1.1",
"description" : "A Node-RED node to send local popup Notify alerts", "description" : "A Node-RED node to send local popup Notify alerts",
"dependencies" : { "dependencies" : {
"growl" : "1.8.1" "node-notifier" : "5.2.1"
}, },
"repository" : { "repository" : {
"type":"git", "type":"git",
"url":"https://github.com/node-red/node-red-nodes.git", "url":"https://github.com/node-red/node-red-nodes.git",
"path":"/tree/master/social/growl" "path":"/tree/master/social/notify"
}, },
"license": "Apache-2.0", "license": "Apache-2.0",
"keywords": [ "node-red", "growl", "notify"], "keywords": [ "node-red", "notify", "growl"],
"node-red" : { "node-red" : {
"nodes" : { "nodes" : {
"notify": "57-notify.js" "notify": "57-notify.js"