|
368 | 368 | if(level == "groupcollapsed") |
369 | 369 | { |
370 | 370 | chevron.addClass("collapsed"); |
371 | | - group.collapse("hide");//.removeClass("in"); |
| 371 | + group.collapse("hide"); |
372 | 372 | } |
373 | 373 | } |
374 | 374 | else if(level == "groupend") |
|
399 | 399 | return this.logMessage(now, [""], level, stack); |
400 | 400 | } |
401 | 401 |
|
402 | | - var message, j, tokens, token, sub; |
403 | | - |
404 | | - message = messages[0]; |
| 402 | + var message = messages[0], j, tokens, token, sub; |
405 | 403 |
|
406 | 404 | //if the first message is a string, then check it for string formatting tokens |
407 | 405 | if (typeof message == "string") |
|
424 | 422 | // Do object substitution |
425 | 423 | else if (token == "%o" || token == "%O") |
426 | 424 | { |
427 | | - sub = JSON.stringify(sub, null, "\t"); |
| 425 | + sub = this.prepareObject(sub)[0].outerHTML; |
428 | 426 | } |
429 | 427 | else if(token == "%d" || token == "%i") |
430 | 428 | { |
|
455 | 453 | { |
456 | 454 | if(i > 0) |
457 | 455 | message += " "; |
458 | | - if (typeof message === "object") |
| 456 | + if (typeof messages[i] === "object") |
459 | 457 | { |
460 | | - message += JSON.stringify(messages[i], null, "\t"); |
| 458 | + message += this.prepareObject(messages[i])[0].outerHTML; |
461 | 459 | } |
462 | 460 | else |
463 | 461 | message += messages[i]; |
|
473 | 471 | return log; |
474 | 472 | }; |
475 | 473 |
|
| 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 | + |
476 | 514 | /** |
477 | 515 | * Gets the JQuery element that logs should be added to. |
478 | 516 | * @method getLogParent |
|
0 commit comments