2013-09-05 16:02:48 +02:00
|
|
|
/**
|
2015-01-18 10:35:32 +01:00
|
|
|
* Copyright 2013, 2015 IBM Corp.
|
2013-09-05 16:02:48 +02:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
**/
|
2014-08-08 01:01:35 +02:00
|
|
|
var RED = (function() {
|
2013-09-05 16:02:48 +02:00
|
|
|
|
|
|
|
|
2014-08-28 01:35:07 +02:00
|
|
|
function loadNodeList() {
|
|
|
|
$.ajax({
|
|
|
|
headers: {
|
|
|
|
"Accept":"application/json"
|
|
|
|
},
|
2014-09-24 10:57:45 +02:00
|
|
|
cache: false,
|
2014-08-28 01:35:07 +02:00
|
|
|
url: 'nodes',
|
|
|
|
success: function(data) {
|
|
|
|
RED.nodes.setNodeList(data);
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2015-05-06 23:14:00 +02:00
|
|
|
var nsCount = 0;
|
|
|
|
for(var i=0;i<data.length;i++) {
|
|
|
|
var ns = data[i];
|
|
|
|
if (ns.module != "node-red") {
|
|
|
|
nsCount++;
|
|
|
|
RED.i18n.loadCatalog(ns.id, function() {
|
|
|
|
nsCount--;
|
|
|
|
if (nsCount === 0) {
|
|
|
|
loadNodes();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (nsCount === 0) {
|
|
|
|
loadNodes();
|
|
|
|
}
|
2014-08-28 01:35:07 +02:00
|
|
|
}
|
2014-02-16 01:39:30 +01:00
|
|
|
});
|
|
|
|
}
|
2014-09-04 09:19:37 +02:00
|
|
|
|
2013-09-05 16:02:48 +02:00
|
|
|
function loadNodes() {
|
2014-08-28 01:35:07 +02:00
|
|
|
$.ajax({
|
|
|
|
headers: {
|
|
|
|
"Accept":"text/html"
|
|
|
|
},
|
2014-09-24 10:57:45 +02:00
|
|
|
cache: false,
|
2014-08-28 01:35:07 +02:00
|
|
|
url: 'nodes',
|
|
|
|
success: function(data) {
|
|
|
|
$("body").append(data);
|
2015-05-06 23:14:00 +02:00
|
|
|
$("body").i18n();
|
2015-07-01 00:42:03 +02:00
|
|
|
|
|
|
|
|
2014-08-28 01:35:07 +02:00
|
|
|
$(".palette-spinner").hide();
|
|
|
|
$(".palette-scroll").show();
|
|
|
|
$("#palette-search").show();
|
|
|
|
loadFlows();
|
|
|
|
}
|
2013-09-05 16:02:48 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
function loadFlows() {
|
2014-09-24 10:57:45 +02:00
|
|
|
$.ajax({
|
|
|
|
headers: {
|
|
|
|
"Accept":"application/json"
|
|
|
|
},
|
|
|
|
cache: false,
|
|
|
|
url: 'flows',
|
|
|
|
success: function(nodes) {
|
|
|
|
RED.nodes.import(nodes);
|
2015-03-15 22:54:36 +01:00
|
|
|
RED.nodes.dirty(false);
|
2015-03-12 12:21:05 +01:00
|
|
|
RED.view.redraw(true);
|
2014-09-24 10:57:45 +02:00
|
|
|
RED.comms.subscribe("status/#",function(topic,msg) {
|
|
|
|
var parts = topic.split("/");
|
|
|
|
var node = RED.nodes.node(parts[1]);
|
|
|
|
if (node) {
|
2015-07-02 00:02:50 +02:00
|
|
|
if (msg.text) {
|
2015-07-08 09:02:23 +02:00
|
|
|
msg.text = node._(msg.text.toString(),{defaultValue:msg.text.toString()});
|
2015-07-02 00:02:50 +02:00
|
|
|
}
|
2014-09-24 10:57:45 +02:00
|
|
|
node.status = msg;
|
|
|
|
if (statusEnabled) {
|
|
|
|
node.dirty = true;
|
|
|
|
RED.view.redraw();
|
2014-08-28 01:35:07 +02:00
|
|
|
}
|
|
|
|
}
|
2014-09-24 10:57:45 +02:00
|
|
|
});
|
|
|
|
RED.comms.subscribe("node/#",function(topic,msg) {
|
|
|
|
var i,m;
|
|
|
|
var typeList;
|
|
|
|
var info;
|
2014-11-07 13:28:19 +01:00
|
|
|
|
2014-09-24 10:57:45 +02:00
|
|
|
if (topic == "node/added") {
|
|
|
|
var addedTypes = [];
|
|
|
|
for (i=0;i<msg.length;i++) {
|
|
|
|
m = msg[i];
|
|
|
|
var id = m.id;
|
|
|
|
RED.nodes.addNodeSet(m);
|
2015-03-26 12:38:51 +01:00
|
|
|
addedTypes = addedTypes.concat(m.types);
|
|
|
|
$.get('nodes/'+id, function(data) {
|
|
|
|
$("body").append(data);
|
|
|
|
});
|
2014-08-07 14:46:03 +02:00
|
|
|
}
|
2014-09-24 10:57:45 +02:00
|
|
|
if (addedTypes.length) {
|
|
|
|
typeList = "<ul><li>"+addedTypes.join("</li><li>")+"</li></ul>";
|
2015-07-01 00:42:03 +02:00
|
|
|
RED.notify(RED._("palette.event.nodeAdded", {count:addedTypes.length})+typeList,"success");
|
2014-09-24 10:57:45 +02:00
|
|
|
}
|
|
|
|
} else if (topic == "node/removed") {
|
|
|
|
for (i=0;i<msg.length;i++) {
|
|
|
|
m = msg[i];
|
|
|
|
info = RED.nodes.removeNodeSet(m.id);
|
|
|
|
if (info.added) {
|
|
|
|
typeList = "<ul><li>"+m.types.join("</li><li>")+"</li></ul>";
|
2015-07-01 00:42:03 +02:00
|
|
|
RED.notify(RED._("palette.event.nodeRemoved", {count:m.types.length})+typeList,"success");
|
2014-09-24 10:57:45 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (topic == "node/enabled") {
|
|
|
|
if (msg.types) {
|
|
|
|
info = RED.nodes.getNodeSet(msg.id);
|
|
|
|
if (info.added) {
|
|
|
|
RED.nodes.enableNodeSet(msg.id);
|
2014-08-28 01:35:07 +02:00
|
|
|
typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>";
|
2015-07-01 00:42:03 +02:00
|
|
|
RED.notify(RED._("palette.event.nodeEnabled", {count:msg.types.length})+typeList,"success");
|
2014-09-24 10:57:45 +02:00
|
|
|
} else {
|
|
|
|
$.get('nodes/'+msg.id, function(data) {
|
|
|
|
$("body").append(data);
|
|
|
|
typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>";
|
2015-07-01 00:42:03 +02:00
|
|
|
RED.notify(RED._("palette.event.nodeAdded", {count:msg.types.length})+typeList,"success");
|
2014-09-24 10:57:45 +02:00
|
|
|
});
|
2014-11-07 13:28:19 +01:00
|
|
|
}
|
2014-09-24 10:57:45 +02:00
|
|
|
}
|
|
|
|
} else if (topic == "node/disabled") {
|
|
|
|
if (msg.types) {
|
|
|
|
RED.nodes.disableNodeSet(msg.id);
|
|
|
|
typeList = "<ul><li>"+msg.types.join("</li><li>")+"</li></ul>";
|
2015-07-01 00:42:03 +02:00
|
|
|
RED.notify(RED._("palette.event.nodeDisabled", {count:msg.types.length})+typeList,"success");
|
2014-09-24 10:57:45 +02:00
|
|
|
}
|
2014-08-07 14:46:03 +02:00
|
|
|
}
|
2014-09-24 10:57:45 +02:00
|
|
|
});
|
|
|
|
}
|
2013-09-05 16:02:48 +02:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2014-05-11 00:33:02 +02:00
|
|
|
var statusEnabled = false;
|
2014-08-20 22:58:54 +02:00
|
|
|
function toggleStatus(state) {
|
|
|
|
statusEnabled = state;
|
2014-05-11 00:33:02 +02:00
|
|
|
RED.view.status(statusEnabled);
|
|
|
|
}
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2014-11-12 14:21:39 +01:00
|
|
|
function loadEditor() {
|
|
|
|
RED.menu.init({id:"btn-sidemenu",
|
|
|
|
options: [
|
2015-07-03 11:07:40 +02:00
|
|
|
{id:"menu-item-sidebar-menu",label:RED._("menu.label.sidebar.sidebar"),options:[
|
|
|
|
{id:"menu-item-sidebar",label:RED._("menu.label.sidebar.show"),toggle:true,onselect:RED.sidebar.toggleSidebar, selected: true},
|
|
|
|
null
|
|
|
|
]},
|
2015-05-20 21:09:34 +02:00
|
|
|
{id:"menu-item-status",label:RED._("menu.label.displayStatus"),toggle:true,onselect:toggleStatus, selected: true},
|
2014-11-12 14:21:39 +01:00
|
|
|
null,
|
2015-05-20 21:09:34 +02:00
|
|
|
{id:"menu-item-import",label:RED._("menu.label.import"),options:[
|
|
|
|
{id:"menu-item-import-clipboard",label:RED._("menu.label.clipboard"),onselect:RED.clipboard.import},
|
|
|
|
{id:"menu-item-import-library",label:RED._("menu.label.library"),options:[]}
|
2014-11-12 14:21:39 +01:00
|
|
|
]},
|
2015-05-20 21:09:34 +02:00
|
|
|
{id:"menu-item-export",label:RED._("menu.label.export"),disabled:true,options:[
|
|
|
|
{id:"menu-item-export-clipboard",label:RED._("menu.label.clipboard"),disabled:true,onselect:RED.clipboard.export},
|
|
|
|
{id:"menu-item-export-library",label:RED._("menu.label.library"),disabled:true,onselect:RED.library.export}
|
2014-11-12 14:21:39 +01:00
|
|
|
]},
|
|
|
|
null,
|
2015-09-25 22:06:39 +02:00
|
|
|
{id:"menu-item-subflow",label:RED._("menu.label.subflows"), options: [
|
|
|
|
{id:"menu-item-subflow-create",label:RED._("menu.label.createSubflow"),onselect:RED.subflow.createSubflow},
|
|
|
|
{id:"menu-item-subflow-convert",label:RED._("menu.label.selectionToSubflow"),disabled:true,onselect:RED.subflow.convertToSubflow},
|
|
|
|
]},
|
|
|
|
null,
|
2015-09-27 21:18:21 +02:00
|
|
|
{id:"menu-item-workspace",label:RED._("menu.label.flows"),options:[
|
|
|
|
{id:"menu-item-workspace-add",label:RED._("menu.label.add"),onselect:RED.workspaces.add},
|
|
|
|
{id:"menu-item-workspace-edit",label:RED._("menu.label.rename"),onselect:RED.workspaces.edit},
|
|
|
|
{id:"menu-item-workspace-delete",label:RED._("menu.label.delete"),onselect:RED.workspaces.remove},
|
2015-09-23 23:49:48 +02:00
|
|
|
null
|
|
|
|
]},
|
|
|
|
null,
|
2016-01-07 23:28:03 +01:00
|
|
|
{id:"menu-item-layout",label:RED._("menu.label.layout.layout"), options: [
|
|
|
|
{id:"menu-item-layout-show-grid",label:RED._("menu.label.layout.showGrid"),toggle:true,onselect:RED.view.toggleShowGrid},
|
|
|
|
{id:"menu-item-layout-snap-grid",label:RED._("menu.label.layout.snapGrid"),toggle:true,onselect:RED.view.toggleSnapGrid}
|
|
|
|
]},
|
|
|
|
null,
|
2015-05-20 21:09:34 +02:00
|
|
|
{id:"menu-item-keyboard-shortcuts",label:RED._("menu.label.keyboardShortcuts"),onselect:RED.keyboard.showHelp},
|
2015-04-13 17:48:38 +02:00
|
|
|
{id:"menu-item-help",
|
|
|
|
label: RED.settings.theme("menu.menu-item-help.label","Node-RED Website"),
|
|
|
|
href: RED.settings.theme("menu.menu-item-help.url","http://nodered.org/docs")
|
2015-04-13 12:35:52 +02:00
|
|
|
}
|
2014-11-12 14:21:39 +01:00
|
|
|
]
|
|
|
|
});
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2015-03-16 00:07:57 +01:00
|
|
|
RED.user.init();
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2014-11-12 14:21:39 +01:00
|
|
|
RED.library.init();
|
|
|
|
RED.palette.init();
|
|
|
|
RED.sidebar.init();
|
2015-03-12 01:08:47 +01:00
|
|
|
RED.subflow.init();
|
2015-03-13 00:38:37 +01:00
|
|
|
RED.workspaces.init();
|
|
|
|
RED.clipboard.init();
|
2014-11-12 14:21:39 +01:00
|
|
|
RED.view.init();
|
2015-05-26 22:52:23 +02:00
|
|
|
RED.editor.init();
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2015-04-13 12:35:52 +02:00
|
|
|
RED.deploy.init(RED.settings.theme("deployButton",null));
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2015-03-14 23:16:07 +01:00
|
|
|
RED.keyboard.add(/* ? */ 191,{shift:true},function(){RED.keyboard.showHelp();d3.event.preventDefault();});
|
2014-11-12 14:21:39 +01:00
|
|
|
RED.comms.connect();
|
2015-03-15 23:54:55 +01:00
|
|
|
|
|
|
|
$("#main-container").show();
|
|
|
|
$(".header-toolbar").show();
|
|
|
|
|
2014-11-12 14:21:39 +01:00
|
|
|
loadNodeList();
|
|
|
|
}
|
|
|
|
|
2014-11-11 11:15:02 +01:00
|
|
|
$(function() {
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2014-11-11 11:15:02 +01:00
|
|
|
if ((window.location.hostname !== "localhost") && (window.location.hostname !== "127.0.0.1")) {
|
2015-04-13 10:48:49 +02:00
|
|
|
document.title = document.title+" : "+window.location.hostname;
|
2014-11-11 11:15:02 +01:00
|
|
|
}
|
2015-07-01 00:42:03 +02:00
|
|
|
|
2015-02-26 22:29:56 +01:00
|
|
|
ace.require("ace/ext/language_tools");
|
|
|
|
|
2015-07-08 18:07:14 +02:00
|
|
|
RED.i18n.init(function() {
|
|
|
|
RED.settings.init(loadEditor);
|
|
|
|
})
|
2013-09-05 16:02:48 +02:00
|
|
|
});
|
|
|
|
|
2014-11-07 13:28:19 +01:00
|
|
|
|
2013-09-05 16:02:48 +02:00
|
|
|
return {
|
|
|
|
};
|
2014-08-08 01:01:35 +02:00
|
|
|
})();
|