Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tianyazhichiC
algorithm-visualizer
提交
2c0d5897
A
algorithm-visualizer
项目概览
tianyazhichiC
/
algorithm-visualizer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
algorithm-visualizer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2c0d5897
编写于
4月 28, 2018
作者:
J
Jason Park
提交者:
Jason
4月 30, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add import statement to algorithm codes
上级
841a0e11
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
46 addition
and
20 deletion
+46
-20
.eslintrc.js
.eslintrc.js
+5
-1
bin/temporary_action.js
bin/temporary_action.js
+12
-1
src/frontend/core/datas/GraphData.js
src/frontend/core/datas/GraphData.js
+6
-13
src/frontend/core/tracerManager.jsx
src/frontend/core/tracerManager.jsx
+15
-5
src/frontend/core/tracers/GraphTracer.js
src/frontend/core/tracers/GraphTracer.js
+8
-0
未找到文件。
.eslintrc.js
浏览文件 @
2c0d5897
module
.
exports
=
{
module
.
exports
=
{
'
extends
'
:
'
airbnb
'
'
extends
'
:
'
airbnb
'
,
'
rules
'
:
{
'
no-plusplus
'
:
'
off
'
,
'
no-mixed-operators
'
:
'
off
'
,
}
};
};
\ No newline at end of file
bin/temporary_action.js
浏览文件 @
2c0d5897
...
@@ -9,7 +9,18 @@ for (const category of categories) {
...
@@ -9,7 +9,18 @@ for (const category of categories) {
if
(
algorithm
.
startsWith
(
'
.
'
))
continue
;
if
(
algorithm
.
startsWith
(
'
.
'
))
continue
;
const
filepath
=
path
.
resolve
(
__dirname
,
'
..
'
,
'
algorithm
'
,
category
,
algorithm
,
'
code.js
'
);
const
filepath
=
path
.
resolve
(
__dirname
,
'
..
'
,
'
algorithm
'
,
category
,
algorithm
,
'
code.js
'
);
const
code
=
fs
.
readFileSync
(
filepath
,
'
utf-8
'
);
const
code
=
fs
.
readFileSync
(
filepath
,
'
utf-8
'
);
const
newCode
=
code
.
replace
(
/
([
a-z
])
_
([
a-z
])
/g
,
(
m
,
m1
,
m2
)
=>
m1
+
m2
.
toUpperCase
());
const
tracers
=
[
'
Array1DTracer
'
,
'
Array2DTracer
'
,
'
ChartTracer
'
,
'
GraphTracer
'
,
'
LogTracer
'
,
'
Randomize
'
,
'
Tracer
'
,
];
const
used
=
tracers
.
filter
(
tracer
=>
code
.
includes
(
tracer
));
const
importLine
=
`import {
${
used
.
join
(
'
,
'
)}
} from 'algorithm-visualizer';\n\n`
;
const
newCode
=
importLine
+
code
;
fs
.
writeFileSync
(
filepath
,
newCode
,
'
utf-8
'
);
fs
.
writeFileSync
(
filepath
,
newCode
,
'
utf-8
'
);
}
}
}
}
\ No newline at end of file
src/frontend/core/datas/GraphData.js
浏览文件 @
2c0d5897
import
{
Data
}
from
'
/core/datas
'
;
import
{
Data
}
from
'
/core/datas
'
;
import
{
GraphTracer
}
from
'
/core/tracers
'
;
import
{
distance
}
from
'
/common/util
'
;
import
{
distance
}
from
'
/common/util
'
;
import
{
tracerManager
}
from
'
/core
'
;
import
{
tracerManager
}
from
'
/core
'
;
...
@@ -25,7 +26,7 @@ class GraphData extends Data {
...
@@ -25,7 +26,7 @@ class GraphData extends Data {
this
.
logData
=
null
;
this
.
logData
=
null
;
}
}
set
(
array2d
=
[],
layout
=
Graph
Data
.
LAYOUT
.
CIRCLE
,
root
=
0
)
{
set
(
array2d
=
[],
layout
=
Graph
Tracer
.
LAYOUT
.
CIRCLE
,
root
=
0
)
{
const
{
directed
,
weighted
}
=
this
.
options
;
const
{
directed
,
weighted
}
=
this
.
options
;
const
{
baseWidth
,
baseHeight
,
padding
}
=
this
.
dimensions
;
const
{
baseWidth
,
baseHeight
,
padding
}
=
this
.
dimensions
;
this
.
graph
=
new
Graph
([],
[],
directed
);
this
.
graph
=
new
Graph
([],
[],
directed
);
...
@@ -53,16 +54,16 @@ class GraphData extends Data {
...
@@ -53,16 +54,16 @@ class GraphData extends Data {
const
height
=
bottom
-
top
;
const
height
=
bottom
-
top
;
const
rect
=
{
left
,
top
,
right
,
bottom
,
width
,
height
};
const
rect
=
{
left
,
top
,
right
,
bottom
,
width
,
height
};
switch
(
layout
)
{
switch
(
layout
)
{
case
Graph
Data
.
LAYOUT
.
CIRCLE
:
case
Graph
Tracer
.
LAYOUT
.
CIRCLE
:
this
.
graph
.
layoutCircle
(
rect
);
this
.
graph
.
layoutCircle
(
rect
);
break
;
break
;
case
Graph
Data
.
LAYOUT
.
TREE
:
case
Graph
Tracer
.
LAYOUT
.
TREE
:
this
.
graph
.
layoutTree
(
rect
,
root
);
this
.
graph
.
layoutTree
(
rect
,
root
);
break
;
break
;
case
Graph
Data
.
LAYOUT
.
RANDOM
:
case
Graph
Tracer
.
LAYOUT
.
RANDOM
:
this
.
graph
.
layoutRandom
(
rect
);
this
.
graph
.
layoutRandom
(
rect
);
break
;
break
;
case
Graph
Data
.
LAYOUT
.
NONE
:
case
Graph
Tracer
.
LAYOUT
.
NONE
:
default
:
default
:
break
;
break
;
}
}
...
@@ -209,12 +210,4 @@ class Graph {
...
@@ -209,12 +210,4 @@ class Graph {
}
}
}
}
GraphData
.
LAYOUT
=
{
CIRCLE
:
'
circle
'
,
TREE
:
'
tree
'
,
RANDOM
:
'
random
'
,
NONE
:
'
none
'
,
// FORCE_DIRECTED: 'force_directed',
};
export
default
GraphData
;
export
default
GraphData
;
\ No newline at end of file
src/frontend/core/tracerManager.jsx
浏览文件 @
2c0d5897
...
@@ -2,13 +2,17 @@ import React from 'react';
...
@@ -2,13 +2,17 @@ import React from 'react';
import
{
Randomize
,
Seed
}
from
'
/core
'
;
import
{
Randomize
,
Seed
}
from
'
/core
'
;
import
*
as
Tracers
from
'
/core/tracers
'
;
import
*
as
Tracers
from
'
/core/tracers
'
;
import
{
Tracer
}
from
'
/core/tracers
'
;
import
{
Tracer
}
from
'
/core/tracers
'
;
import
*
as
Datas
from
'
/core/datas
'
;
import
{
Array1DData
,
Array2DData
,
ChartData
,
Data
,
GraphData
,
LogData
}
from
'
/core/datas
'
;
import
{
Array1DData
,
Array2DData
,
ChartData
,
Data
,
GraphData
,
LogData
}
from
'
/core/datas
'
;
import
{
Array1DRenderer
,
Array2DRenderer
,
ChartRenderer
,
GraphRenderer
,
LogRenderer
,
Renderer
}
from
'
/core/renderers
'
;
import
{
Array1DRenderer
,
Array2DRenderer
,
ChartRenderer
,
GraphRenderer
,
LogRenderer
,
Renderer
}
from
'
/core/renderers
'
;
Object
.
assign
(
window
,
Tracers
);
Object
.
assign
(
window
,
{
Object
.
assign
(
window
,
Datas
);
modules
:
{
Object
.
assign
(
window
,
{
Randomize
});
'
algorithm-visualizer
'
:
{
...
Tracers
,
Randomize
,
},
}
});
class
TracerManager
{
class
TracerManager
{
constructor
()
{
constructor
()
{
...
@@ -162,12 +166,18 @@ class TracerManager {
...
@@ -162,12 +166,18 @@ class TracerManager {
}
}
}
}
sandboxEval
(
code
){
const
require
=
moduleName
=>
window
.
modules
[
moduleName
];
// fake require
eval
(
code
);
}
execute
(
callback
)
{
execute
(
callback
)
{
try
{
try
{
const
lines
=
this
.
code
.
split
(
'
\n
'
).
map
((
line
,
i
)
=>
line
.
replace
(
/
(
.+
\.
*wait *
)(\(
*
\))
/g
,
`$1(
${
i
}
)`
));
const
lines
=
this
.
code
.
split
(
'
\n
'
).
map
((
line
,
i
)
=>
line
.
replace
(
/
(
.+
\.
*wait *
)(\(
*
\))
/g
,
`$1(
${
i
}
)`
));
const
seed
=
new
Seed
();
const
seed
=
new
Seed
();
Tracer
.
seed
=
seed
;
Tracer
.
seed
=
seed
;
eval
(
Babel
.
transform
(
lines
.
join
(
'
\n
'
),
{
presets
:
[
'
es2015
'
]
}).
code
);
const
{
code
}
=
Babel
.
transform
(
lines
.
join
(
'
\n
'
),
{
presets
:
[
'
es2015
'
]
});
this
.
sandboxEval
(
code
);
this
.
reset
(
seed
);
this
.
reset
(
seed
);
if
(
callback
)
callback
();
if
(
callback
)
callback
();
}
catch
(
error
)
{
}
catch
(
error
)
{
...
...
src/frontend/core/tracers/GraphTracer.js
浏览文件 @
2c0d5897
...
@@ -12,4 +12,12 @@ class GraphTracer extends Tracer {
...
@@ -12,4 +12,12 @@ class GraphTracer extends Tracer {
}
}
}
}
GraphTracer
.
LAYOUT
=
{
CIRCLE
:
'
circle
'
,
TREE
:
'
tree
'
,
RANDOM
:
'
random
'
,
NONE
:
'
none
'
,
// FORCE_DIRECTED: 'force_directed',
};
export
default
GraphTracer
;
export
default
GraphTracer
;
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录