mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Update info sidebar on node edit
Fixes #168 Moves info sidebar to its own file so it can be refreshed from other parts of the UI
This commit is contained in:
parent
fb5b45c655
commit
325600ea61
@ -314,6 +314,7 @@
|
|||||||
<script src="red/ui/view.js"></script>
|
<script src="red/ui/view.js"></script>
|
||||||
<script src="red/ui/sidebar.js"></script>
|
<script src="red/ui/sidebar.js"></script>
|
||||||
<script src="red/ui/palette.js"></script>
|
<script src="red/ui/palette.js"></script>
|
||||||
|
<script src="red/ui/tab-info.js"></script>
|
||||||
<script src="red/ui/tab-config.js"></script>
|
<script src="red/ui/tab-config.js"></script>
|
||||||
<script src="red/ui/editor.js"></script>
|
<script src="red/ui/editor.js"></script>
|
||||||
<script src="red/ui/library.js"></script>
|
<script src="red/ui/library.js"></script>
|
||||||
|
@ -39,7 +39,7 @@ RED.nodes = function() {
|
|||||||
function addNode(n) {
|
function addNode(n) {
|
||||||
if (n._def.category == "config") {
|
if (n._def.category == "config") {
|
||||||
configNodes[n.id] = n;
|
configNodes[n.id] = n;
|
||||||
RED.configTab.refresh();
|
RED.sidebar.config.refresh();
|
||||||
} else {
|
} else {
|
||||||
n.dirty = true;
|
n.dirty = true;
|
||||||
nodes.push(n);
|
nodes.push(n);
|
||||||
@ -58,7 +58,7 @@ RED.nodes = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (updatedConfigNode) {
|
if (updatedConfigNode) {
|
||||||
RED.configTab.refresh();
|
RED.sidebar.config.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -274,8 +274,9 @@ RED.editor = function() {
|
|||||||
}
|
}
|
||||||
$( this ).dialog('option','height','auto');
|
$( this ).dialog('option','height','auto');
|
||||||
$( this ).dialog('option','width','500');
|
$( this ).dialog('option','width','500');
|
||||||
|
RED.sidebar.info.refresh(editing_node);
|
||||||
|
RED.sidebar.config.refresh();
|
||||||
editing_node = null;
|
editing_node = null;
|
||||||
RED.configTab.refresh();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -474,7 +475,7 @@ RED.editor = function() {
|
|||||||
if (RED.view.state() != RED.state.EDITING) {
|
if (RED.view.state() != RED.state.EDITING) {
|
||||||
RED.keyboard.enable();
|
RED.keyboard.enable();
|
||||||
}
|
}
|
||||||
RED.configTab.refresh();
|
RED.sidebar.config.refresh();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -34,18 +34,9 @@ RED.sidebar = function() {
|
|||||||
//$('#sidebar').tabs("refresh");
|
//$('#sidebar').tabs("refresh");
|
||||||
}
|
}
|
||||||
|
|
||||||
var content = document.createElement("div");
|
|
||||||
content.id = "tab-info";
|
|
||||||
content.style.paddingTop = "4px";
|
|
||||||
content.style.paddingLeft = "4px";
|
|
||||||
content.style.paddingRight = "4px";
|
|
||||||
|
|
||||||
addTab("info",content);
|
|
||||||
|
|
||||||
$('#btn-sidebar').click(function() {toggleSidebar();});
|
$('#btn-sidebar').click(function() {toggleSidebar();});
|
||||||
RED.keyboard.add(/* SPACE */ 32,{ctrl:true},function(){toggleSidebar();d3.event.preventDefault();});
|
RED.keyboard.add(/* SPACE */ 32,{ctrl:true},function(){toggleSidebar();d3.event.preventDefault();});
|
||||||
|
|
||||||
|
|
||||||
var sidebarSeparator = {};
|
var sidebarSeparator = {};
|
||||||
$("#sidebar-separator").draggable({
|
$("#sidebar-separator").draggable({
|
||||||
axis: "x",
|
axis: "x",
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
**/
|
**/
|
||||||
RED.configTab = function() {
|
RED.sidebar.config = function() {
|
||||||
|
|
||||||
var content = document.createElement("div");
|
var content = document.createElement("div");
|
||||||
content.id = "tab-config";
|
content.id = "tab-config";
|
||||||
|
69
public/red/ui/tab-info.js
Normal file
69
public/red/ui/tab-info.js
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/**
|
||||||
|
* Copyright 2013 IBM Corp.
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
**/
|
||||||
|
RED.sidebar.info = function() {
|
||||||
|
|
||||||
|
var content = document.createElement("div");
|
||||||
|
content.id = "tab-info";
|
||||||
|
content.style.paddingTop = "4px";
|
||||||
|
content.style.paddingLeft = "4px";
|
||||||
|
content.style.paddingRight = "4px";
|
||||||
|
|
||||||
|
RED.sidebar.addTab("info",content);
|
||||||
|
|
||||||
|
function refresh(node) {
|
||||||
|
var table = '<table class="node-info"><tbody>';
|
||||||
|
|
||||||
|
table += "<tr><td>Type</td><td> "+node.type+"</td></tr>";
|
||||||
|
table += "<tr><td>ID</td><td> "+node.id+"</td></tr>";
|
||||||
|
table += '<tr class="blank"><td colspan="2"> Properties</td></tr>';
|
||||||
|
for (var n in node._def.defaults) {
|
||||||
|
var val = node[n]||"";
|
||||||
|
var type = typeof val;
|
||||||
|
if (type === "string") {
|
||||||
|
if (val.length > 30) {
|
||||||
|
val = val.substring(0,30)+" ...";
|
||||||
|
}
|
||||||
|
} else if (type === "number") {
|
||||||
|
val = val.toString();
|
||||||
|
} else if ($.isArray(val)) {
|
||||||
|
val = "[<br/>";
|
||||||
|
for (var i=0;i<Math.min(node[n].length,10);i++) {
|
||||||
|
var vv = JSON.stringify(node[n][i],jsonFilter," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
||||||
|
val += " "+i+": "+vv+"<br/>";
|
||||||
|
}
|
||||||
|
if (node[n].length > 10) {
|
||||||
|
val += " ... "+node[n].length+" items<br/>";
|
||||||
|
}
|
||||||
|
val += "]";
|
||||||
|
} else {
|
||||||
|
val = JSON.stringify(val,jsonFilter," ");
|
||||||
|
val = val.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
||||||
|
}
|
||||||
|
|
||||||
|
table += "<tr><td> "+n+"</td><td>"+val+"</td></tr>";
|
||||||
|
}
|
||||||
|
table += "</tbody></table><br/>";
|
||||||
|
table += '<div class="node-help">'+($("script[data-help-name|='"+node.type+"']").html()||"")+"</div>";
|
||||||
|
$("#tab-info").html(table);
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
refresh:refresh,
|
||||||
|
clear: function() {
|
||||||
|
$("#tab-info").html("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}();
|
@ -475,9 +475,9 @@ RED.view = function() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (moving_set.length == 1) {
|
if (moving_set.length == 1) {
|
||||||
buildInfo(moving_set[0].n);
|
RED.sidebar.info.refresh(moving_set[0].n);
|
||||||
} else {
|
} else {
|
||||||
$("#tab-info").html("");
|
RED.sidebar.info.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -538,43 +538,6 @@ RED.view = function() {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildInfo(node) {
|
|
||||||
var table = '<table class="node-info"><tbody>';
|
|
||||||
|
|
||||||
table += "<tr><td>Type</td><td> "+node.type+"</td></tr>";
|
|
||||||
table += "<tr><td>ID</td><td> "+node.id+"</td></tr>";
|
|
||||||
table += '<tr class="blank"><td colspan="2"> Properties</td></tr>';
|
|
||||||
for (var n in node._def.defaults) {
|
|
||||||
var val = node[n]||"";
|
|
||||||
var type = typeof val;
|
|
||||||
if (type === "string") {
|
|
||||||
if (val.length > 30) {
|
|
||||||
val = val.substring(0,30)+" ...";
|
|
||||||
}
|
|
||||||
} else if (type === "number") {
|
|
||||||
val = val.toString();
|
|
||||||
} else if ($.isArray(val)) {
|
|
||||||
val = "[<br/>";
|
|
||||||
for (var i=0;i<Math.min(node[n].length,10);i++) {
|
|
||||||
var vv = JSON.stringify(node[n][i],jsonFilter," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
|
||||||
val += " "+i+": "+vv+"<br/>";
|
|
||||||
}
|
|
||||||
if (node[n].length > 10) {
|
|
||||||
val += " ... "+node[n].length+" items<br/>";
|
|
||||||
}
|
|
||||||
val += "]";
|
|
||||||
} else {
|
|
||||||
val = JSON.stringify(val,jsonFilter," ");
|
|
||||||
val = val.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");
|
|
||||||
}
|
|
||||||
|
|
||||||
table += "<tr><td> "+n+"</td><td>"+val+"</td></tr>";
|
|
||||||
}
|
|
||||||
table += "</tbody></table><br/>";
|
|
||||||
table += '<div class="node-help">'+($("script[data-help-name|='"+node.type+"']").html()||"")+"</div>";
|
|
||||||
$("#tab-info").html(table);
|
|
||||||
}
|
|
||||||
|
|
||||||
function calculateTextWidth(str) {
|
function calculateTextWidth(str) {
|
||||||
var sp = document.createElement("span");
|
var sp = document.createElement("span");
|
||||||
sp.className = "node_label";
|
sp.className = "node_label";
|
||||||
|
Loading…
Reference in New Issue
Block a user