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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy