Skip to content

Commit af0c17c

Browse files
author
Andrew Start
committed
Added proper object support for logs.
1 parent cea5c5a commit af0c17c

File tree

2 files changed

+57
-11
lines changed

2 files changed

+57
-11
lines changed

src/springroll/remote/RemoteTrace.js

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@
368368
if(level == "groupcollapsed")
369369
{
370370
chevron.addClass("collapsed");
371-
group.collapse("hide");//.removeClass("in");
371+
group.collapse("hide");
372372
}
373373
}
374374
else if(level == "groupend")
@@ -399,9 +399,7 @@
399399
return this.logMessage(now, [""], level, stack);
400400
}
401401

402-
var message, j, tokens, token, sub;
403-
404-
message = messages[0];
402+
var message = messages[0], j, tokens, token, sub;
405403

406404
//if the first message is a string, then check it for string formatting tokens
407405
if (typeof message == "string")
@@ -424,7 +422,7 @@
424422
// Do object substitution
425423
else if (token == "%o" || token == "%O")
426424
{
427-
sub = JSON.stringify(sub, null, "\t");
425+
sub = this.prepareObject(sub)[0].outerHTML;
428426
}
429427
else if(token == "%d" || token == "%i")
430428
{
@@ -455,9 +453,9 @@
455453
{
456454
if(i > 0)
457455
message += " ";
458-
if (typeof message === "object")
456+
if (typeof messages[i] === "object")
459457
{
460-
message += JSON.stringify(messages[i], null, "\t");
458+
message += this.prepareObject(messages[i])[0].outerHTML;
461459
}
462460
else
463461
message += messages[i];
@@ -473,6 +471,46 @@
473471
return log;
474472
};
475473

474+
/**
475+
* Turns an object into an HTML element suitable for display.
476+
* @method prepareObject
477+
* @param {Object} input The input object.
478+
* @return {jquery} The jquery element for the object
479+
*/
480+
p.prepareObject = function(input)
481+
{
482+
var output = $("<div class='object'>" + (Array.isArray(input) ? "Array [" : "Object {") + "</div>");
483+
484+
var group = $("<div class='group log collapse in'></div>");
485+
for(var key in input)
486+
{
487+
var line = $("<div class='line'></div>");
488+
if(typeof input[key] == "object")
489+
{
490+
line.append(key + ": ", this.prepareObject(input[key]));
491+
}
492+
else
493+
{
494+
line.append(key + ": " + input[key]);
495+
}
496+
group.append(line);
497+
}
498+
if(group.children().length)
499+
{
500+
var groupId = "group_" + this.nextGroupId++;
501+
group.attr("id", groupId);
502+
var chevron = $("<span class='groupToggle' data-toggle='collapse' data-target='#" + groupId + "'></span>");
503+
chevron.append(
504+
$("<span class='glyphicon glyphicon-chevron-right right'></span>"),
505+
$("<span class='glyphicon glyphicon-chevron-down down'></span>")
506+
);
507+
output.prepend(chevron);
508+
output.append(group);
509+
}
510+
output.append(Array.isArray(input) ? "]" : "}");
511+
return output;
512+
};
513+
476514
/**
477515
* Gets the JQuery element that logs should be added to.
478516
* @method getLogParent

src/springroll/remote/less/trace.less

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,19 @@
6767
.user-deselect();
6868
cursor:pointer;
6969
padding-right: 5px;
70-
.down { display:inline }
71-
.right { display:none }
70+
.down { display:inline; }
71+
.right { display:none; }
7272
&.collapsed {
73-
.down { display:none}
74-
.right { display:inline }
73+
.down { display:none; }
74+
.right { display:inline; }
75+
}
76+
}
77+
78+
.object {
79+
display: inline-block;
80+
vertical-align: top;
81+
.line {
82+
display: block;
7583
}
7684
}
7785
}

0 commit comments

Comments
 (0)