diff --git a/nodes/core/core/58-debug.js b/nodes/core/core/58-debug.js
index 5bc97da4a..e16f710b5 100644
--- a/nodes/core/core/58-debug.js
+++ b/nodes/core/core/58-debug.js
@@ -153,7 +153,7 @@ module.exports = function(RED) {
msg.format = (msg.msg === null)?"null":"undefined";
msg.msg = "(undefined)";
} else {
- msg.format = "string ["+msg.msg.length+"]";
+ msg.format = "string["+msg.msg.length+"]";
if (msg.msg.length > debuglength) {
msg.msg = msg.msg.substring(0,debuglength)+"...";
}
diff --git a/nodes/core/core/lib/debug/debug-utils.js b/nodes/core/core/lib/debug/debug-utils.js
index 3604a1a4b..3bede1f43 100644
--- a/nodes/core/core/lib/debug/debug-utils.js
+++ b/nodes/core/core/lib/debug/debug-utils.js
@@ -185,8 +185,8 @@ RED.debug = (function() {
}
} else if (typeof value === 'string') {
subvalue = value;
- if (subvalue.length > 50) {
- subvalue = subvalue.substring(0,50)+"…";
+ if (subvalue.length > 30) {
+ subvalue = subvalue.substring(0,30)+"…";
}
result = $('').html('"'+formatString(subvalue)+'"');
} else {
@@ -241,7 +241,16 @@ RED.debug = (function() {
if (obj === null || obj === undefined) {
$(''+obj+'').appendTo(entryObj);
} else if (typeof obj === 'string') {
- $('').html('"'+formatString(obj)+'"').appendTo(entryObj);
+ element.addClass('collapsed');
+ $(' ').prependTo(header);
+ $('').html('"'+formatString(obj)+'"').appendTo(entryObj);
+ makeExpandable(header, function() {
+ $('').html(typeHint||'string').appendTo(header);
+ var row = $('
').appendTo(element);
+ $('').html(obj).appendTo(row);
+ });
+
+
} else if (typeof obj === 'number') {
e = $('').text(""+obj).appendTo(entryObj);
e.click(function(evt) {
@@ -271,6 +280,8 @@ RED.debug = (function() {
originalLength = data.length;
}
type = obj.type.toLowerCase();
+ } else if (/buffer/.test(typeHint)) {
+ type = 'buffer';
}
var fullLength = data.length;
@@ -278,7 +289,26 @@ RED.debug = (function() {
$(' ').prependTo(header);
makeExpandable(header,function() {
if (!key) {
- $('').html(typeHint||(type+'['+originalLength+']')).appendTo(header);
+ var headerHead = $('').html(typeHint||(type+'['+originalLength+']')).appendTo(header);
+ if (type === 'buffer') {
+ // var bufferOpts = $('').appendTo(headerHead);
+ // //dec hex string
+ // $('').addClass('selected').html('dec').appendTo(bufferOpts).click(function(e) {
+ // $(this).addClass('selected').siblings().removeClass('selected');
+ // e.preventDefault();
+ // e.stopPropagation();
+ // })
+ // $('').html('hex').appendTo(bufferOpts).click(function(e) {
+ // $(this).addClass('selected').siblings().removeClass('selected');
+ // e.preventDefault();
+ // e.stopPropagation();
+ // })
+ // $('').html('string').appendTo(bufferOpts).click(function(e) {
+ // $(this).addClass('selected').siblings().removeClass('selected');
+ // e.preventDefault();
+ // e.stopPropagation();
+ // })
+ }
}
var row;
if (fullLength <= 10) {
@@ -305,6 +335,9 @@ RED.debug = (function() {
})());
$('').html("["+minRange+" … "+Math.min(fullLength-1,(minRange+9))+"]").appendTo(header);
}
+ if (fullLength < originalLength) {
+ $('['+fullLength+' … '+originalLength+']
').appendTo(element);
+ }
}
});
}
@@ -332,7 +365,7 @@ RED.debug = (function() {
} else if (typeof obj === 'object') {
element.addClass('collapsed');
var keys = Object.keys(obj);
- if (keys.length > 0) {
+ if (key || keys.length > 0) {
$(' ').prependTo(header);
makeExpandable(header, function() {
if (!key) {
@@ -342,6 +375,9 @@ RED.debug = (function() {
var row = $('').appendTo(element);
buildMessageElement(obj[keys[i]],keys[i],false).appendTo(row);
}
+ if (keys.length === 0) {
+ $('').text("empty").appendTo(element);
+ }
});
}
if (key) {
@@ -365,36 +401,6 @@ RED.debug = (function() {
$('empty').appendTo(headerHead);
}
$(' }').appendTo(headerHead);
-
-
- // $('').html('object').appendTo(header);
- // headerHead = $('').appendTo(header);
- // $('{ ').appendTo(headerHead);
- // for (i=0;i').text(keys[i]).appendTo(headerHead);
- // $(': ').appendTo(headerHead);
- // buildMessageSummaryValue(obj[keys[i]]).appendTo(headerHead);
- // if (i < keys.length -1) {
- // $(', ').appendTo(headerHead);
- // }
- // }
- // if (i === 5) {
- // $(' …').appendTo(headerHead);
- // }
- // }
- // entryObj = $('').appendTo(element);
- // var entryHeader = $('').appendTo(entryObj);
- // $('').text(keys[i]).appendTo(entryHeader);
- // $(': ').appendTo(entryHeader);
- // e = $('').appendTo(entryObj);
- // buildMessageElement(obj[keys[i]],keys[i]).appendTo(e);
- // }
- // $('…
').appendTo(element);
- }
- if (keys.length === 0) {
- $('').text("empty").appendTo(element);
}
} else {
$('').text(""+obj).appendTo(entryObj);
@@ -402,167 +408,6 @@ RED.debug = (function() {
return element;
}
-
-
- // function buildMessageElement(obj,topLevel,typeHint) {
- // var i;
- // var e;
- // var entryObj;
- // var header;
- // var headerHead;
- // var value,subvalue;
- // var element = $('').toggleClass('collapsed',topLevel);
- // if (Array.isArray(obj)) {
- // var originalLength = obj.length;
- // if (typeHint) {
- // var m = /\[(\d+)\]/.exec(typeHint);
- // if (m) {
- // originalLength = parseInt(m[1]);
- // }
- // }
- // var fullLength = obj.length;
- // var length = Math.min(obj.length,10);
- // if (!topLevel) {
- // header = $('').html(typeHint||('array['+obj.length+']')).appendTo(element);
- // } else {
- // header = $('').appendTo(element);
- // if (length > 0) {
- // $(' ').prependTo(header);
- // makeExpandable(header);
- // }
- // $('').html(typeHint||('array['+obj.length+']')).appendTo(header);
- // headerHead = $('').appendTo(header);
- // $('[ ').appendTo(headerHead);
- // }
- // var row;
- // for (i=0;i, ').appendTo(headerHead);
- // }
- // }
- // }
- // if (fullLength < 10) {
- // row = element;
- // } else if (fullLength > 10 && (i%10) === 0) {
- // var minRange = 10*Math.floor(i/10);
- // row = $('').appendTo(element);
- // header = $('').appendTo(row);
- // $(' ').appendTo(header);
- // makeExpandable(header);
- // $('').html("["+minRange+" … "+Math.min(fullLength-1,(minRange+9))+"]").appendTo(header);
- // }
- // entryObj = $('').appendTo(row);
- //
- // header = $('').appendTo(entryObj);
- // if (typeof obj[i] === 'object' && obj[i] !== null) {
- // $(' ').appendTo(header);
- // makeExpandable(header);
- // }
- // $('').text(i).appendTo(header);
- //
- // $(': ').appendTo(entryObj);
- // e = $('').appendTo(entryObj);
- // buildMessageElement(obj[i],false).appendTo(e);
- // }
- // if (length < obj.length) {
- // if (topLevel) {
- // $(' …').appendTo(headerHead);
- // }
- // //$('…
').appendTo(element);
- // }
- // if (fullLength < originalLength) {
- // row = $('').appendTo(element);
- // $(' …').appendTo(row);
- // }
- // if (topLevel) {
- // if (length === 0) {
- // $('empty').appendTo(headerHead);
- // }
- // $(' ]').appendTo(headerHead);
- // }
- // } else if (obj === null || obj === undefined) {
- // $(''+obj+'').appendTo(element);
- // } else if (typeof obj === 'object') {
- // if (obj.hasOwnProperty('type') && obj.type === 'Buffer' && obj.hasOwnProperty('data')) {
- // buildMessageElement(obj.data,false,'buffer['+obj.data.length+']').appendTo(element);
- //
- // } else {
- // var keys = Object.keys(obj);
- // if (topLevel) {
- // header = $('').appendTo(element);
- // if (keys.length > 0) {
- // $(' ').prependTo(header);
- // makeExpandable(header);
- // }
- // } else {
- // header = $('').html('object').appendTo(element);
- // }
- // if (topLevel) {
- // $('').html('object').appendTo(header);
- // headerHead = $('').appendTo(header);
- // $('{ ').appendTo(headerHead);
- // }
- // for (i=0;i').text(keys[i]).appendTo(headerHead);
- // $(': ').appendTo(headerHead);
- // buildMessageSummaryValue(obj[keys[i]]).appendTo(headerHead);
- // if (i < keys.length -1) {
- // $(', ').appendTo(headerHead);
- // }
- // }
- // if (i === 5) {
- // $(' …').appendTo(headerHead);
- // }
- // }
- // entryObj = $('').appendTo(element);
- // var entryHeader = $('').appendTo(entryObj);
- // $('').text(keys[i]).appendTo(entryHeader);
- // $(': ').appendTo(entryHeader);
- // e = $('').appendTo(entryObj);
- // if (typeof obj[keys[i]] === 'object' && obj[keys[i]] !== null) {
- // $(' ').prependTo(entryHeader);
- // makeExpandable(entryHeader);
- // }
- // buildMessageElement(obj[keys[i]],false).appendTo(e);
- // }
- // if (keys.length === 0) {
- // $('').text("empty").appendTo(element);
- // }
- // if (topLevel) {
- // if (keys.length === 0) {
- // $('empty').appendTo(headerHead);
- // }
- // $(' }').appendTo(headerHead);
- // }
- // }
- // } else if (typeof obj === 'string') {
- // $('').html('"'+formatString(obj)+'"').appendTo(element);
- // } else if (typeof obj === 'number') {
- // e = $('').text(""+obj).appendTo(element);
- // e.click(function(evt) {
- // var format = $(this).data('format');
- // if (format === 'hex') {
- // $(this).text(""+obj).data('format','dec');
- // } else {
- // $(this).text("0x"+(obj).toString(16)).data('format','hex');
- // }
- // evt.preventDefault();
- // });
- // } else {
- // $('').text(""+obj).appendTo(element);
- // }
- // return element;
- // }
-
- function buildMessageBody(obj,el) {
-
- }
-
function handleDebugMessage(o) {
var msg = document.createElement("div");
diff --git a/nodes/core/core/lib/debug/style.css b/nodes/core/core/lib/debug/style.css
index 668a49f6b..1dca041b3 100644
--- a/nodes/core/core/lib/debug/style.css
+++ b/nodes/core/core/lib/debug/style.css
@@ -116,14 +116,19 @@
.debug-message-element.collapsed .debug-message-object-entry {
display:none;
}
-.debug-message-element:not(.collapsed) .debug-message-object-header {
+.debug-message-element:not(.collapsed)>.debug-message-expandable>.debug-message-object-value>.debug-message-object-header {
display:none;
}
.debug-message-element.collapsed .debug-message-object-type-header {
display:none;
}
-
+.debug-message-object-entry pre {
+ font-family: Menlo, monospace;
+ font-size: 12px;
+ line-height: 1.4em;
+ margin: 0 0 0 -1em;
+}
.debug-message-type-other { color: #2033d6; }
.debug-message-type-string { color: #b72828; }
@@ -140,3 +145,23 @@
.debug-message-expandable:hover .debug-message-object-handle {
color: #b72828 !important;
}
+
+.debug-message-buffer-opts a {
+ font-size: 9px;
+ color: #bbb;
+ border: 1px solid #bbb;
+ border-radius: 2px;
+ padding: 2px 5px;
+ margin-left: 5px;
+}
+.debug-message-buffer-opts a.selected {
+ background: #eee;
+ color: #999;
+ border: 1px solid #999;
+}
+.debug-message-buffer-opts a:hover {
+ text-decoration: none;
+ color: #999;
+ border: 1px solid #999;
+ background: #f3f3f3;
+}
diff --git a/test/nodes/core/core/58-debug_spec.js b/test/nodes/core/core/58-debug_spec.js
index a85cb2011..92fcef056 100644
--- a/test/nodes/core/core/58-debug_spec.js
+++ b/test/nodes/core/core/58-debug_spec.js
@@ -49,7 +49,7 @@ describe('debug node', function() {
}, function(msg) {
JSON.parse(msg).should.eql({
topic:"debug",data:{id:"n1",name:"Debug",msg:"test",
- format:"string [4]",property:"payload"}
+ format:"string[4]",property:"payload"}
});
}, done);
});
@@ -64,7 +64,7 @@ describe('debug node', function() {
n1.emit("input", {payload:"test"});
}, function(msg) {
JSON.parse(msg).should.eql({
- topic:"debug",data:{id:"n1",msg:"test",property:"payload",format:"string [4]"}
+ topic:"debug",data:{id:"n1",msg:"test",property:"payload",format:"string[4]"}
});
count++;
}, function() {
@@ -108,7 +108,7 @@ describe('debug node', function() {
n1.emit("input", {payload:"test", foo:"bar"});
}, function(msg) {
JSON.parse(msg).should.eql({
- topic:"debug",data:{id:"n1",msg:"bar",property:"foo",format:"string [3]"}
+ topic:"debug",data:{id:"n1",msg:"bar",property:"foo",format:"string[3]"}
});
}, done);
});
@@ -122,7 +122,7 @@ describe('debug node', function() {
n1.emit("input", {payload:"test", foo: {bar: "bar"}});
}, function(msg) {
JSON.parse(msg).should.eql({
- topic:"debug",data:{id:"n1",msg:"bar",property:"foo.bar",format:"string [3]"}
+ topic:"debug",data:{id:"n1",msg:"bar",property:"foo.bar",format:"string[3]"}
});
}, done);
});
@@ -236,7 +236,7 @@ describe('debug node', function() {
id:"n1",
msg: Array(1001).join("X")+'...',
property:"payload",
- format:"string [1001]"
+ format:"string[1001]"
}
});
}, done);
@@ -277,7 +277,7 @@ describe('debug node', function() {
});
}, function(msg) {
JSON.parse(msg).should.eql({
- topic:"debug",data:{id:"n1",msg:"message 2",property:"payload",format:"string [9]"}
+ topic:"debug",data:{id:"n1",msg:"message 2",property:"payload",format:"string[9]"}
});
}, done);
});