Skip to content

Commit 71591c6

Browse files
committed
Add println and printf to LogRenderer
1 parent 837fd3e commit 71591c6

File tree

7 files changed

+37
-25
lines changed

7 files changed

+37
-25
lines changed

package-lock.json

Lines changed: 11 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
},
2020
"keywords": [
2121
"algorithm",
22-
"visualizer"
22+
"data-structure",
23+
"visualization",
24+
"animation"
2325
],
2426
"author": {
2527
"name": "Jinseo Jason Park",
@@ -94,6 +96,7 @@
9496
"remove-markdown": "^0.3.0",
9597
"sass-loader": "^7.0.3",
9698
"screenfull": "^3.3.2",
99+
"sprintf-js": "^1.1.2",
97100
"style-loader": "^0.21.0",
98101
"uglifyjs-webpack-plugin": "^1.2.4",
99102
"webpack": "^4.5.0",

src/backend/tracers/js/worker.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const process = { env: { ALGORITHM_VISUALIZER: '1' } };
2-
importScripts('https://unpkg.com/algorithm-visualizer/dist/algorithm-visualizer.js');
2+
importScripts('https://unpkg.com/algorithm-visualizer@latest/dist/algorithm-visualizer.js');
33
importScripts('https://unpkg.com/babel-standalone@6/babel.min.js');
44

55
const sandbox = code => {

src/frontend/core/datas/GraphData.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ class GraphData extends Data {
231231
if (weight !== undefined) node.weight = weight;
232232
node.visitedCount += visit ? 1 : -1;
233233
if (this.logData) {
234-
this.logData.print(visit ? (source || '') + ' -> ' + target : (source || '') + ' <- ' + target);
234+
this.logData.println(visit ? (source || '') + ' -> ' + target : (source || '') + ' <- ' + target);
235235
}
236236
}
237237

@@ -249,7 +249,7 @@ class GraphData extends Data {
249249
const node = this.findNode(target);
250250
node.selectedCount += select ? 1 : -1;
251251
if (this.logData) {
252-
this.logData.print(select ? (source || '') + ' => ' + target : (source || '') + ' <= ' + target);
252+
this.logData.println(select ? (source || '') + ' => ' + target : (source || '') + ' <= ' + target);
253253
}
254254
}
255255

src/frontend/core/datas/LogData.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { sprintf } from 'sprintf-js';
12
import { Data } from '/core/datas';
23
import { LogRenderer } from '/core/renderers';
34

@@ -6,13 +7,21 @@ class LogData extends Data {
67
return LogRenderer;
78
}
89

9-
set(messages = []) {
10-
this.messages = messages;
10+
set(log = '') {
11+
this.log = log;
1112
super.set();
1213
}
1314

1415
print(message) {
15-
this.messages.push(message);
16+
this.log += message;
17+
}
18+
19+
println(message) {
20+
this.print(message + '\n');
21+
}
22+
23+
printf(format, ...args) {
24+
this.print(sprintf(format, ...args));
1625
}
1726
}
1827

src/frontend/core/renderers/LogRenderer/index.jsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,15 @@ class LogRenderer extends Renderer {
1111

1212
componentDidUpdate(prevProps, prevState, snapshot) {
1313
super.componentDidUpdate(prevProps, prevState, snapshot);
14-
const { lastChild } = this.element.current;
15-
if (lastChild) lastChild.scrollIntoView();
14+
const div = this.element.current;
15+
div.scrollTop = div.scrollHeight;
1616
}
1717

1818
renderData() {
19-
const { messages } = this.props.data;
19+
const { log } = this.props.data;
2020

2121
return (
22-
<div className={styles.log} ref={this.element}>
23-
{
24-
messages.map((message, i) => (
25-
<span className={styles.message} key={i} dangerouslySetInnerHTML={{ __html: message }} />
26-
))
27-
}
28-
</div>
22+
<div className={styles.log} ref={this.element} dangerouslySetInnerHTML={{ __html: log }} />
2923
);
3024
}
3125
}

src/frontend/core/renderers/LogRenderer/stylesheet.scss

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
flex-direction: column;
99
overflow-y: auto;
1010
font-family: $font-family-monospace;
11-
12-
.message {
13-
margin: 2px 0;
14-
}
15-
}
11+
white-space: pre-wrap;
12+
line-height: 1.6;
13+
}

0 commit comments

Comments
 (0)