Skip to content

Commit 6ac3b94

Browse files
committed
✨ add console log stacking
1 parent 263bad0 commit 6ac3b94

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

src/features/tray/log-item.js

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import crel from "crel";
2+
import { isUndefined } from "lodash";
23

3-
export default function LogItem({ message, filePath, fileName, lineNumber, type = "log" } = {}) {
4+
export default function LogItem({
5+
message,
6+
filePath,
7+
fileName,
8+
lineNumber,
9+
amount,
10+
type = "log"
11+
} = {}) {
412
// figure out type
513
if (type === "error") type = "error";
614
else if (typeof message === "string") type = "string";
@@ -19,8 +27,11 @@ export default function LogItem({ message, filePath, fileName, lineNumber, type
1927
// line location
2028
const lineLoc = fileName + ":" + lineNumber;
2129

30+
// prepare amount
31+
amount = isUndefined(amount) ? 1 : amount;
32+
2233
// Prepare LogItem parts
23-
const LogAmount = crel("div", { class: "mde-log-amount" });
34+
const LogAmount = crel("div", { class: "mde-log-amount" }, amount === 1 ? "" : amount);
2435
const LogMessage = crel("div", { class: "mde-log-message" }, message);
2536
const LogTrace = crel("a", { class: "mde-log-trace", href: filePath, target: "_blank" }, lineLoc);
2637
const LogMessageFull = crel("pre", { class: "mde-log-message-full" }, message);

src/mde.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,15 @@ import tracer from "./utils/tracer.js";
5050
}
5151

5252
function onAddLog({ message, filePath, fileName, lineNumber, type } = {}) {
53-
state.set("log", [...state.get("log"), { message, filePath, fileName, lineNumber, type }]);
53+
const log = state.get("log");
54+
const lastEntry = log[log.length - 1];
55+
56+
if (lastEntry && lastEntry.message === message) {
57+
log[log.length - 1] = { ...lastEntry, amount: lastEntry.amount + 1 };
58+
} else {
59+
log.push({ message, filePath, fileName, lineNumber, type, amount: 1 });
60+
}
61+
state.set("log", log);
5462
render();
5563
}
5664

src/mde.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ test("MDE console.log()'s to tray", () => {
2424

2525
expect(document.querySelectorAll(".mde-log[data-type=string]").length).toBe(1);
2626
expect(document.querySelector(".mde-log .mde-log-message").innerHTML).toBe("works");
27+
28+
console.log("works");
29+
30+
expect(document.querySelector(".mde-log[data-type=string] .mde-log-amount").innerHTML).toBe("2");
2731
});
2832

2933
test("MDE console.error()'s to tray", () => {
@@ -33,6 +37,10 @@ test("MDE console.error()'s to tray", () => {
3337

3438
expect(document.querySelectorAll(".mde-log[data-type=error]").length).toBe(1);
3539
expect(document.querySelector(".mde-log .mde-log-message").innerHTML).toBe("works");
40+
41+
console.error("works");
42+
43+
expect(document.querySelector(".mde-log[data-type=error] .mde-log-amount").innerHTML).toBe("2");
3644
});
3745

3846
test("MDE console.assert()'s to tray", () => {
@@ -51,4 +59,11 @@ test("MDE console.assert()'s to tray", () => {
5159
expect(document.querySelectorAll(".mde-log .mde-log-message")[1].innerHTML).toBe(
5260
"Assertion failed: console.assert"
5361
);
62+
63+
console.assert(false);
64+
65+
expect(
66+
document.querySelectorAll(".mde-log[data-type=error]")[1].querySelector(".mde-log-amount")
67+
.innerHTML
68+
).toBe("2");
5469
});

0 commit comments

Comments
 (0)