diff --git a/io/emoncms/88-emoncms.html b/io/emoncms/88-emoncms.html
index b179b7af..900ad490 100644
--- a/io/emoncms/88-emoncms.html
+++ b/io/emoncms/88-emoncms.html
@@ -85,11 +85,36 @@
category: 'config',
defaults: {
server: {value:"http://localhost",required:true},
- apikey: {value:"",required:true},
+ // apikey: {value:"",required:true},
name: {value:""}
},
label: function() {
return this.name||this.server;
+ },
+ oneditprepare: function() {
+ $.getJSON('emoncms-server/'+this.id,function(data) {
+ if (data.apikey) {
+ $('#node-config-input-apikey').val(data.apikey);
+ }
+ });
+ },
+ oneditsave: function() {
+ var newApikey = $('#node-config-input-apikey').val();
+ var credentials = {};
+ credentials.apikey = newApikey;
+ $.ajax({
+ url: 'emoncms-server/'+this.id,
+ type: 'POST',
+ data: credentials,
+ success:function(result){}
+ });
+ },
+ ondelete: function() {
+ $.ajax({
+ url: 'emoncms-server/'+this.id,
+ type: 'DELETE',
+ success: function(result) {}
+ });
}
});
diff --git a/io/emoncms/88-emoncms.js b/io/emoncms/88-emoncms.js
index a007d3d5..74ad43a4 100644
--- a/io/emoncms/88-emoncms.js
+++ b/io/emoncms/88-emoncms.js
@@ -19,11 +19,50 @@ var RED = require(process.env.NODE_RED_HOME+"/red/red");
function EmoncmsServerNode(n) {
RED.nodes.createNode(this,n);
this.server = n.server;
- this.apikey = n.apikey;
this.name = n.name;
+ var credentials = RED.nodes.getCredentials(n.id);
+ if (credentials) {
+ this.apikey = credentials.apikey;
+ }
+
}
RED.nodes.registerType("emoncms-server",EmoncmsServerNode);
+var querystring = require('querystring');
+
+RED.app.get('/emoncms-server/:id',function(req,res) {
+ var credentials = RED.nodes.getCredentials(req.params.id);
+ if (credentials) {
+ res.send(JSON.stringify({apikey:credentials.apikey}));
+ } else {
+ res.send(JSON.stringify({}));
+ }
+});
+
+RED.app.delete('/emoncms-server/:id',function(req,res) {
+ RED.nodes.deleteCredentials(req.params.id);
+ res.send(200);
+});
+
+RED.app.post('/emoncms-server/:id',function(req,res) {
+
+ var body = "";
+ req.on('data', function(chunk) {
+ body+=chunk;
+ });
+ req.on('end', function(){
+ var newCreds = querystring.parse(body);
+ var credentials = RED.nodes.getCredentials(req.params.id)||{};
+ if (newCreds.apikey == null || newCreds.apikey == "") {
+ delete credentials.apikey;
+ } else {
+ credentials.apikey = newCreds.apikey;
+ }
+ RED.nodes.addCredentials(req.params.id,credentials);
+ res.send(200);
+ });
+});
+
function Emoncms(n) {
RED.nodes.createNode(this,n);
this.emonServer = n.emonServer;