-
-
Save olgabot/6823067beb0fffa82008 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* demo.css */ | |
.axis { | |
stroke: #000; | |
stroke-width: 1.5px; | |
} | |
#demo_1 svg, #demo_2 svg { border: solid 1px #ccc; } | |
.node ellipse { stroke: #000; } | |
.node ellipse[class^="active_"] { stroke-width: 6px; } | |
.node ellipse.active_ib { stroke: blue; } | |
.node ellipse.active_im { stroke: green; } | |
.node ellipse.active_mo { stroke: red; } | |
.link { | |
fill: none; | |
stroke: #ccc; | |
stroke-opacity: 0.3; | |
stroke-width: 2px; | |
} | |
.link.active_ib, .link.active_im, .link.active_mo { | |
stroke-opacity: 1; | |
stroke-width: 3px; | |
} | |
.link.active_ib { stroke: blue; } | |
.link.active_im { stroke: green; } | |
.link.active_mo { stroke: red; } | |
.notes .ib { color: blue; } | |
.notes .im { color: green; } | |
.notes .mo { color: red; } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Hive Plot Demo Rework</title> | |
<link rel="stylesheet" type="text/css" href="demo.css" /> | |
<script src='http://mbostock.github.com/d3/d3.v2.js?2.8.1'></script> | |
<script src='http://code.jquery.com/jquery-1.7.1.min.js'></script> | |
</head> | |
<body> | |
<ul> | |
<h2><span id='account-name'></span></h2> | |
<h1>Hive Plot Demo Rework</h1> | |
<p> | |
The <a href='http://egweb.bcgsc.ca'>Hive Plot</a>, | |
invented by Martin Krzywinski | |
(Genome Sciences Center, Vancouver, BC),<br> | |
is a perceptually uniform and scalable layout visualization | |
for network visual analytics. | |
</p><p> | |
This demo is based on Mike's demo code in | |
<a href='http://bost.ocks.org/mike/hive/' | |
>Visualizing Networks with Hive Plots</a> | |
</p> | |
<div id='demo_1'> | |
<p class='precis'>Loading demo_1.</p> | |
<p> | |
<table><tr> | |
<td valign=top><span class='chart'> </span></td> | |
<td valign=top> </td> | |
<td valign=top><span class='notes'> </span></td> | |
</tr></table> | |
</p> | |
</div> | |
<div id='demo_2'> | |
<p class='precis'>Loading demo_2.</p> | |
<p> | |
<table><tr> | |
<td valign=top><span class='chart'> </span></td> | |
<td valign=top> </td> | |
<td valign=top><span class='notes'> </span></td> | |
</tr></table> | |
</p> | |
</div> | |
</ul> | |
<script src='lib_data.js'></script> | |
<script src='lib_link.js'></script> | |
<script src='lib_mouse.js'></script> | |
<script src='lib_plot.js'></script> | |
<script src='main.js'></script> | |
</body> | |
</html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// lib_data.js | |
var prep_data = function(plot_info, nodes) { | |
var g = plot_info.global | |
g.nodes = nodes; | |
/* | |
The input data file, flare-imports.json, is firmly rooted in the | |
problem domain. It uses a list of hashes (aka objects) to define | |
a directed graph. Each hash defines a software module, giving its | |
name, size, and a list of names for modules it imports. | |
g.nodes = [ | |
{ "name": "flare.analytics.cluster.AgglomerativeCluster", | |
"size": 3938, | |
"imports": [ "flare.animate.Transitioner", ... ] | |
}, ... | |
]; | |
*/ | |
var check_nodes = function(nodes) { | |
var defined = {}; | |
for (var i=0; i<nodes.length; i++) { | |
var node_name = nodes[i].name; | |
if (!defined[node_name]) defined[node_name] = true; | |
} | |
for (var i=0; i<nodes.length; i++) { | |
var node_name = nodes[i].name; | |
var imports = nodes[i].imports; | |
for (var j=0; j<imports.length; j++) { | |
var imp_name = imports[j]; | |
if (!defined[imp_name]) { | |
var msg = 'Error: Target node (' + imp_name + | |
') not found for source node (' + node_name + ').'; | |
console.log (msg); | |
} } } }; | |
check_nodes(nodes); | |
/* Construct nodesByName, an index by node name: | |
g.nodesByName = { | |
"flare.animate.Pause": { | |
"connectors": [ <links object>, ... ], | |
"imports": [ "flare.animate.Transition", ... ], | |
"index": 17, | |
"name": "flare.animate.Pause", | |
"packageName": "animate", | |
"size": 449, | |
"source": <links object>, | |
"target": <links object>, | |
"type": "target-source" | |
}, ... }; | |
*/ | |
var index_by_node_name = function(d) { | |
d.connectors = []; | |
d.packageName = d.name.split('.')[1]; | |
g.nodesByName[d.name] = d; | |
}; | |
g.nodesByName = {}; | |
g.nodes.forEach(index_by_node_name); | |
/* Convert the import lists into links with sources and targets. | |
Save index hashes for looking up sources and targets. | |
g.links = [ | |
{ | |
"source": { | |
"degree": 0, | |
"node": <nodesByName object>, | |
"type": "source" | |
}, | |
"target": { | |
"degree": 0, | |
"node": <nodesByName object>, | |
"type": "source-target" | |
}, ... ]; | |
g.sources = { | |
<target name>: <source name>, ... | |
} | |
g.targets = { | |
<source name>: <target name>, ... | |
} | |
*/ | |
var do_source = function(source) { | |
var do_target = function(targetName) { | |
var target = g.nodesByName[targetName]; | |
if (!source.source) { | |
source.source = { node: source, degree: 0 }; | |
source.connectors.push(source.source); | |
} | |
if (!target.target) { | |
target.target = { node: target, degree: 0 }; | |
target.connectors.push(target.target); | |
} | |
g.links.push( { source: source.source, target: target.target } ); | |
if ( !g.sources[targetName] ) g.sources[targetName] = {}; | |
g.sources[targetName][source.name] = true; | |
if ( !g.targets[source.name] ) g.targets[source.name] = {}; | |
g.targets[source.name][targetName] = true; | |
} | |
source.imports.forEach(do_target); | |
}; | |
g.links = []; | |
g.sources = {}; | |
g.targets = {}; | |
nodes.forEach(do_source); | |
// Determine the type of each node, based on incoming and outgoing links. | |
var node_type = function(node) { | |
if (node.source && node.target) { | |
node.type = node.source.type = 'target-source'; | |
node.target.type = 'source-target'; | |
} else if (node.source) { | |
node.type = node.source.type = 'source'; | |
} else if (node.target) { | |
node.type = node.target.type = 'target'; | |
} else { | |
node.connectors = [{ node: node }]; | |
node.type = 'source'; | |
} | |
}; | |
nodes.forEach(node_type); | |
/* Nest nodes by type, for computing the rank. | |
Normally, Hive Plots sort nodes by degree along each axis. | |
However, since this example visualizes a package hierarchy, | |
we get more interesting results if we group nodes by package. | |
We don't need to sort explicitly because the data file is | |
already sorted by class name. | |
g.nodesByType = [ | |
{ | |
"count": 80, | |
"key": "source", | |
"values": [ <nodesByName object>, ... ] | |
}, ... ] | |
*/ | |
g.nodesByType = d3.nest() | |
.key(function(d) { return d.type; }) | |
.sortKeys(d3.ascending) | |
.entries(nodes); | |
// Duplicate the target-source axis as source-target. | |
g.nodesByType.push({ key: 'source-target', | |
values: g.nodesByType[2].values }); | |
// Compute the rank for each type, with padding between packages. | |
var type_rank = function(type) { | |
var count = 0, | |
lastName = type.values[0].packageName; | |
var node_rank = function(d, i) { | |
if (d.packageName != lastName) { | |
lastName = d.packageName; | |
count += 2; | |
} | |
d.index = count++; | |
}; | |
type.values.forEach(node_rank); | |
type.count = count - 1; | |
}; | |
g.nodesByType.forEach(type_rank); | |
// Console logging calls. | |
if (false) { | |
console.log('g.links', g.links); //T | |
console.log('g.nodes', g.nodes); //T | |
console.log('g.nodesByType', g.nodesByType); //T | |
console.log('g.nodesByName', g.nodesByName); //T | |
console.log('g.sources', g.sources); //T | |
} | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// lib_link.js | |
// | |
// A shape generator for Hive links, based on a source and a target. | |
// The source and target are defined in polar coordinates (angle and radius). | |
// Ratio links can also be drawn by using a startRadius and endRadius. | |
// This class is modeled after d3.svg.chord. | |
function make_link() { | |
var source = function(d) { return d.source; }, | |
target = function(d) { return d.target; }, | |
angle = function(d) { return d.angle; }, | |
startRadius = function(d) { return d.radius; }, | |
endRadius = startRadius, | |
arcOffset = -Math.PI / 2; | |
function link(d, i) { | |
var s = node(source, this, d, i), | |
t = node(target, this, d, i), | |
x; | |
d.ib_edge = t.a < s.a; | |
if (d.ib_edge) x = t, t = s, s = x; | |
if (t.a - s.a > Math.PI) s.a += 2 * Math.PI; | |
var a1 = s.a + (t.a - s.a) / 3, | |
a2 = t.a - (t.a - s.a) / 3, | |
cos_a1 = Math.cos(a1), sin_a1 = Math.sin(a1), | |
cos_a2 = Math.cos(a2), sin_a2 = Math.sin(a2), | |
cos_sa = Math.cos(s.a), sin_sa = Math.sin(s.a), | |
cos_ta = Math.cos(t.a), sin_ta = Math.sin(t.a); | |
if (s.r0 - s.r1 || t.r0 - t.r1) { | |
return 'M' + cos_sa * s.r0 + ',' + sin_sa * s.r0 + | |
'L' + cos_sa * s.r1 + ',' + sin_sa * s.r1 + | |
'C' + cos_a1 * s.r1 + ',' + sin_a1 * s.r1 + | |
' ' + cos_a2 * t.r1 + ',' + sin_a2 * t.r1 + | |
' ' + cos_ta * t.r1 + ',' + sin_ta * t.r1 + | |
'L' + cos_ta * t.r0 + ',' + sin_ta * t.r0 + | |
'C' + cos_a2 * t.r0 + ',' + sin_a2 * t.r0 + | |
' ' + cos_a1 * s.r0 + ',' + sin_a1 * s.r0 + | |
' ' + cos_sa * s.r0 + ',' + sin_sa * s.r0; | |
} else { | |
return 'M' + cos_sa * s.r0 + ',' + sin_sa * s.r0 + | |
'C' + cos_a1 * s.r1 + ',' + sin_a1 * s.r1 + | |
' ' + cos_a2 * t.r1 + ',' + sin_a2 * t.r1 + | |
' ' + cos_ta * t.r1 + ',' + sin_ta * t.r1; | |
} | |
} | |
function node(method, thiz, d, i) { | |
var node = method.call(thiz, d, i), | |
a = +(typeof angle === 'function' | |
? angle.call(thiz, node, i) | |
: angle) + arcOffset, | |
r0 = +(typeof startRadius === 'function' | |
? startRadius.call(thiz, node, i) | |
: startRadius), | |
r1t = +(typeof endRadius === 'function' | |
? endRadius.call(thiz, node, i) | |
: endRadius), | |
r1 = startRadius === endRadius ? r0 : r1t; | |
return { r0: r0, r1: r1, a: a }; | |
} | |
function make_func(object, method) { | |
eval(object + '.' + method + "= function(_) {\n" + | |
' if (!arguments.length) return ' + method + ";\n" + | |
' ' + method + "= _;\n" + | |
' return ' + object + ";\n};\n" ); | |
} | |
make_func('link', 'source'); | |
make_func('link', 'target'); | |
make_func('link', 'angle'); | |
make_func('link', 'startRadius'); | |
make_func('link', 'endRadius'); | |
link.radius = function(_) { | |
if (!arguments.length) return startRadius; | |
startRadius = endRadius = _; | |
return link; | |
}; | |
return link; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// lib_mouse.js | |
var setup_mouse = function(plot_info) { | |
var g = plot_info.global; | |
// Initialize the info display. | |
var default_precis, | |
formatNumber = d3.format(',d'), | |
indent = ' '; | |
var notes = d3.select(g.selector + ' .notes') | |
var precis = d3.select(g.selector + ' .precis') | |
.text(default_precis = 'Showing ' + formatNumber(g.links.length) | |
+ ' dependencies among ' + formatNumber(g.nodes.length) | |
+ ' classes.'); | |
on_mouseout = function() { | |
// | |
// Clear any highlighted nodes or links. | |
g.svg.selectAll('.active_ib').classed('active_ib', false); | |
g.svg.selectAll('.active_im').classed('active_im', false); | |
g.svg.selectAll('.active_mo').classed('active_mo', false); | |
notes.html(''); | |
precis.text(default_precis); | |
} | |
on_mouseover_h = function(css_class, html_inp) { | |
// | |
// Helper for on_mouseover_{link,node}. | |
if (!html_inp) return ''; | |
if (css_class == 'ib') | |
hdr = '<h4 class="ib">Imported by:</h4>'; | |
else | |
hdr = '<h4 class="im">Imports:</h4>'; | |
return '<span class="' + css_class+ '">' | |
+ hdr + html_inp + '</span>'; | |
}; | |
on_mouseover_link = function(orig_link) { | |
// | |
// Highlight the link and connected nodes on mouseover. | |
// | |
// Mousing over a link should cause: | |
// | |
// the link to turn red | |
// the nodes that it imports to turn green | |
// the nodes that import it to turn blue | |
// the sidebar to show consistent colors and text | |
var trace = false; | |
var link_mo = function(curr_link) { | |
var result = curr_link === orig_link; | |
// if (result) console.log('link_mo', curr_link, orig_link); //T | |
return result; | |
}; | |
var node_ib = function(curr_node) { | |
var curr_name = curr_node.node.name; | |
var orig_name = orig_link.source.node.name; | |
var result = curr_name === orig_name; | |
if (trace && result) console.log('node_ib', | |
curr_name, curr_node, orig_name, orig_link); //T | |
return result; | |
}; | |
var node_im = function(curr_node) { | |
var curr_name = curr_node.node.name; | |
var orig_name = orig_link.target.node.name; | |
var result = curr_name === orig_name; | |
if (trace && result) console.log('node_im', | |
curr_name, curr_node, orig_name, orig_link); //T | |
return result; | |
}; | |
g.svg.selectAll('.link' ).classed('active_mo', link_mo); | |
g.svg.selectAll('.node ellipse').classed('active_ib', node_ib); | |
g.svg.selectAll('.node ellipse').classed('active_im', node_im); | |
var src_name = orig_link.source.node.name; | |
var tgt_name = orig_link.target.node.name; | |
var html_ib = on_mouseover_h('ib', src_name); | |
var html_im = on_mouseover_h('im', tgt_name); | |
var html = '<h3 class="mo">Link</h3>' | |
+ html_ib + html_im; | |
notes.html(html); | |
precis.text(src_name + ' -> ' + tgt_name); | |
} | |
on_mouseover_node = function(orig_node) { | |
// | |
// Highlight the node and connected links on mouseover. | |
// | |
// Mousing over a node should cause: | |
// | |
// the node (and its clone, if any) to turn red | |
// the links and nodes that it imports to turn green | |
// the links and nodes that import it to turn blue | |
// the sidebar to show consistent colors and text | |
var trace = false; | |
var link_ib = function(curr_link) { | |
var curr_name = curr_link.target.node.name; | |
var orig_name = orig_node.node.name; | |
var result = curr_name === orig_name; | |
if (trace && result) console.log('link_ib', | |
curr_name, curr_link, orig_name, orig_node); //T | |
return result; | |
}; | |
var link_im = function(curr_link) { | |
var curr_name = curr_link.source.node.name; | |
var orig_name = orig_node.node.name; | |
var result = curr_name === orig_name; | |
if (trace && result) console.log('link_im', | |
curr_link, orig_node); //T | |
return result; | |
}; | |
var node_ib = function(curr_node) { | |
var curr_name = curr_node.node.name; | |
var orig_name = orig_node.node.name; | |
var curr_tgts = g.targets[curr_name]; | |
var result = false; | |
if (curr_tgts) { | |
for (curr_tgt in curr_tgts) | |
if (curr_tgt === orig_name) result = 'target'; | |
} | |
if (trace && result) console.log('node_ib', | |
curr_name, curr_node, orig_name, orig_node, curr_tgts, result); //T | |
return result; | |
}; | |
var node_im = function(curr_node) { | |
var curr_name = curr_node.node.name; | |
var orig_name = orig_node.node.name; | |
var curr_srcs = g.sources[curr_name]; | |
var result = false; | |
if (curr_srcs) { | |
for (curr_src in curr_srcs) | |
if (curr_src === orig_name) result = 'source'; | |
} | |
if (trace && result) console.log('node_im', | |
curr_name, curr_node, orig_name, orig_node, curr_srcs, result); //T | |
return result; | |
}; | |
var node_mo = function(curr_node) { | |
var curr_name = curr_node.node.name; | |
var orig_name = orig_node.node.name; | |
var result = false; | |
if (curr_name === orig_name) result = 'same or clone'; | |
if (trace && result) console.log('node_mo', | |
curr_name, curr_node, orig_name, orig_node, result); //T | |
return result; | |
}; | |
g.svg.selectAll('.link' ).classed('active_ib', link_ib); | |
g.svg.selectAll('.link' ).classed('active_im', link_im); | |
g.svg.selectAll('.node ellipse' ).classed('active_ib', node_ib); | |
g.svg.selectAll('.node ellipse' ).classed('active_im', node_im); | |
g.svg.selectAll('.node ellipse' ).classed('active_mo', node_mo); | |
var src_tmp = g.sources[orig_node.node.name]; | |
var sources = src_tmp ? Object.keys(src_tmp).sort().join('<br>') : ''; | |
var targets = orig_node.node.imports.sort().join('<br>'); | |
var html_ib = on_mouseover_h('ib', sources); | |
var html_im = on_mouseover_h('im', targets); | |
var html = '<h3 class="mo">Node</h3>' | |
+ '<span class="mo">' + orig_node.node.name + '</span>' | |
+ html_ib + html_im; | |
notes.html(html); | |
precis.text(orig_node.node.name); | |
} | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// lib_plot.js | |
var setup_plot = function(plot_info) { | |
var g = plot_info.global; | |
g.angle_dom = [], g.angle_rng = []; | |
axes_info = plot_info.axes; | |
for (var axis_name in axes_info) { | |
axis_info = axes_info[axis_name]; | |
g.angle_dom.push(axis_name); | |
g.angle_rng.push(axis_info.angle); | |
} | |
g.angle_f = d3.scale.ordinal().domain(g.angle_dom).range(g.angle_rng); | |
var radii = [ g.inner_radius, g.outer_radius ] | |
g.radius_f = d3.scale.linear().range(radii); | |
g.color_f = d3.scale.category10(); | |
g.transform = 'translate(' + g.x_off + ',' + g.y_off + ')'; | |
g.svg = d3.select(g.selector + ' .chart') | |
.append('svg') | |
.attr('width', g.x_max) | |
.attr('height', g.y_max) | |
.append('g') | |
.attr('transform', g.transform); | |
// console.log('plot_info', plot_info); //T | |
}; | |
var degrees = function(radians) { return radians / Math.PI * 180 - 90; } | |
var display_plot = function(plot_info) { | |
var g = plot_info.global; | |
// Set the radius domain. | |
var index = function(d) { return d.index; }; | |
var extent = d3.extent(g.nodes, index); | |
g.radius_f.domain(extent); | |
// Draw the axes. | |
var transform = function(d) { | |
return 'rotate(' + degrees( g.angle_f(d.key) ) + ')'; | |
}; | |
var x1 = g.radius_f(0) - 10; | |
var x2 = function(d) { return g.radius_f(d.count) + 10; }; | |
g.svg.selectAll('.axis') | |
.data(g.nodesByType) | |
.enter().append('line') | |
.attr('class', 'axis') | |
.attr('transform', transform) | |
.attr('x1', x1) | |
.attr('x2', x2); | |
// Draw the links. | |
var path_angle = function(d) { return g.angle_f(d.type); }; | |
var path_radius = function(d) { return g.radius_f(d.node.index); }; | |
g.svg.append('g') | |
.attr('class', 'links') | |
.selectAll('.link') | |
.data(g.links) | |
.enter().append('path') | |
.attr('d', make_link().angle(path_angle).radius(path_radius) ) | |
.attr('class', 'link') | |
.on('mouseover', on_mouseover_link) | |
.on('mouseout', on_mouseout); | |
// Draw the nodes. Note that each node can have up to two connectors, | |
// representing the source (outgoing) and target (incoming) links. | |
var connectors = function(d) { return d.connectors; }; | |
var cx = function(d) { return g.radius_f(d.node.index); }; | |
var fill = function(d) { return g.color_f(d.packageName); }; | |
var transform = function(d) { | |
return 'rotate(' + degrees( g.angle_f(d.type) ) + ')'; | |
}; | |
g.svg.append('g') | |
.attr('class', 'nodes') | |
.selectAll('.node') | |
.data(g.nodes) | |
.enter().append('g') | |
.attr('class', 'node') | |
.style('fill', fill) | |
.selectAll('ellipse') | |
.data(connectors) | |
.enter().append('ellipse') | |
.attr('transform', transform) | |
.attr('cx', cx) | |
.attr('rx', 4) | |
.attr('ry', 6) | |
.on('mouseover', on_mouseover_node) | |
.on('mouseout', on_mouseout); | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// main.js | |
var snap = function(i) { return function() { return i; }; } | |
var get_info = function(data_set, format) { | |
var degree = Math.PI / 180, | |
x_max = 700, x_off = x_max * 0.5, | |
y_max = 700, y_off = y_max * 0.5; | |
if (format === 'conv') { // "conventional" | |
var a_off = 20, | |
a_so = 0, a_st = (120 - a_off), | |
a_to = -120, a_ts = (120 + a_off), | |
i_rad = 25, o_rad = 300; | |
} else { // "rectangular" | |
var a_so = -45, a_st = 45, | |
a_to = -135, a_ts = 135, | |
i_rad = 25, o_rad = 350; | |
} | |
var info = { | |
'global': { | |
'selector': ( snap(data_set) )(), | |
'x_max': x_max, 'x_off': x_off, | |
'y_max': y_max, 'y_off': y_off, | |
'inner_radius': i_rad, 'outer_radius': o_rad | |
}, | |
'axes': { | |
'source': { 'angle': degree * a_so }, | |
'source-target': { 'angle': degree * a_st }, | |
'target-source': { 'angle': degree * a_ts }, | |
'target': { 'angle': degree * a_to } | |
} | |
}; | |
return info; | |
}; | |
var data_sets = { '#demo_1': 'ze_data.json', | |
'#demo_2': 'ze_test.json' }; | |
var info_sets = {}; | |
for (var data_set in data_sets) { | |
info_sets[data_set] = get_info(data_set, 'conv'); | |
var func_f = function() { | |
var info_set = info_sets[data_set]; | |
var func = function(nodes) { | |
prep_data(info_set, nodes); | |
setup_mouse(info_set); | |
display_plot(info_set); | |
}; | |
return func; | |
}; | |
setup_plot(info_sets[data_set]); | |
d3.json(data_sets[data_set], func_f() ); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"name": "flare.analytics.cluster.AgglomerativeCluster", | |
"size": 3938, | |
"imports": [ | |
"flare.animate.Transitioner", | |
"flare.vis.data.DataList", | |
"flare.util.math.IMatrix", | |
"flare.analytics.cluster.MergeEdge", | |
"flare.analytics.cluster.HierarchicalCluster", | |
"flare.vis.data.Data" | |
] | |
}, | |
{"name":"flare.analytics.cluster.CommunityStructure","size":3812,"imports":["flare.analytics.cluster.HierarchicalCluster","flare.animate.Transitioner","flare.vis.data.DataList","flare.analytics.cluster.MergeEdge","flare.util.math.IMatrix"]}, | |
{"name":"flare.analytics.cluster.HierarchicalCluster","size":6714,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.Tree","flare.util.Arrays","flare.analytics.cluster.MergeEdge","flare.util.Sort","flare.vis.operator.Operator","flare.util.Property","flare.vis.data.Data"]}, | |
{"name":"flare.analytics.cluster.MergeEdge","size":743,"imports":[]}, | |
{"name":"flare.analytics.graph.BetweennessCentrality","size":3534,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.util.Arrays","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]}, | |
{"name":"flare.analytics.graph.LinkDistance","size":5731,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.EdgeSprite","flare.analytics.graph.ShortestPaths","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]}, | |
{"name":"flare.analytics.graph.MaxFlowMinCut","size":7840,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.EdgeSprite","flare.vis.data.Data","flare.util.Property","flare.vis.operator.Operator"]}, | |
{"name":"flare.analytics.graph.ShortestPaths","size":5914,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.animate.Transitioner","flare.vis.operator.Operator","flare.util.heap.HeapNode","flare.util.heap.FibonacciHeap","flare.util.Property","flare.vis.data.Data"]}, | |
{"name":"flare.analytics.graph.SpanningTree","size":3416,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.operator.IOperator","flare.vis.Visualization","flare.vis.data.TreeBuilder","flare.vis.operator.Operator"]}, | |
{"name":"flare.analytics.optimization.AspectRatioBanker","size":7074,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.DataSprite","flare.scale.Scale","flare.vis.axis.CartesianAxes","flare.vis.Visualization","flare.util.Property","flare.vis.operator.Operator"]}, | |
{"name":"flare.animate.Easing","size":17010,"imports":["flare.animate.Transition"]}, | |
{"name":"flare.animate.FunctionSequence","size":5842,"imports":["flare.util.Maths","flare.animate.Transition","flare.util.Arrays","flare.animate.Sequence","flare.animate.Transitioner"]}, | |
{"name":"flare.animate.interpolate.ArrayInterpolator","size":1983,"imports":["flare.util.Arrays","flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.ColorInterpolator","size":2047,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.DateInterpolator","size":1375,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.Interpolator","size":8746,"imports":["flare.animate.interpolate.NumberInterpolator","flare.animate.interpolate.ColorInterpolator","flare.animate.interpolate.PointInterpolator","flare.animate.interpolate.ObjectInterpolator","flare.animate.interpolate.MatrixInterpolator","flare.animate.interpolate.RectangleInterpolator","flare.animate.interpolate.DateInterpolator","flare.util.Property","flare.animate.interpolate.ArrayInterpolator"]}, | |
{"name":"flare.animate.interpolate.MatrixInterpolator","size":2202,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.NumberInterpolator","size":1382,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.ObjectInterpolator","size":1629,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.PointInterpolator","size":1675,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.interpolate.RectangleInterpolator","size":2042,"imports":["flare.animate.interpolate.Interpolator"]}, | |
{"name":"flare.animate.ISchedulable","size":1041,"imports":["flare.animate.Scheduler"]}, | |
{"name":"flare.animate.Parallel","size":5176,"imports":["flare.animate.Easing","flare.animate.Transition","flare.util.Arrays"]}, | |
{"name":"flare.animate.Pause","size":449,"imports":["flare.animate.Transition"]}, | |
{"name":"flare.animate.Scheduler","size":5593,"imports":["flare.animate.ISchedulable","flare.animate.Pause","flare.animate.Transition"]}, | |
{"name":"flare.animate.Sequence","size":5534,"imports":["flare.animate.Easing","flare.util.Maths","flare.animate.Transition","flare.util.Arrays"]}, | |
{"name":"flare.animate.Transition","size":9201,"imports":["flare.animate.Transitioner","flare.animate.TransitionEvent","flare.animate.Scheduler","flare.animate.Pause","flare.animate.Parallel","flare.animate.Easing","flare.animate.Sequence","flare.animate.ISchedulable","flare.util.Maths","flare.animate.Tween"]}, | |
{"name":"flare.animate.Transitioner","size":19975,"imports":["flare.util.IValueProxy","flare.animate.Parallel","flare.animate.Easing","flare.animate.Sequence","flare.animate.Transition","flare.animate.Tween","flare.util.Property"]}, | |
{"name":"flare.animate.TransitionEvent","size":1116,"imports":["flare.animate.Transition"]}, | |
{"name":"flare.animate.Tween","size":6006,"imports":["flare.animate.Transitioner","flare.animate.Transition","flare.animate.interpolate.Interpolator","flare.util.Property"]}, | |
{"name":"flare.data.converters.Converters","size":721,"imports":["flare.data.converters.IDataConverter","flare.data.converters.GraphMLConverter","flare.data.converters.JSONConverter","flare.data.converters.DelimitedTextConverter"]}, | |
{"name":"flare.data.converters.DelimitedTextConverter","size":4294,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField"]}, | |
{"name":"flare.data.converters.GraphMLConverter","size":9800,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField"]}, | |
{"name":"flare.data.converters.IDataConverter","size":1314,"imports":["flare.data.DataSet","flare.data.DataSchema"]}, | |
{"name":"flare.data.converters.JSONConverter","size":2220,"imports":["flare.data.DataSet","flare.data.DataUtil","flare.data.DataTable","flare.data.converters.IDataConverter","flare.data.DataSchema","flare.data.DataField","flare.util.Property"]}, | |
{"name":"flare.data.DataField","size":1759,"imports":["flare.data.DataUtil"]}, | |
{"name":"flare.data.DataSchema","size":2165,"imports":["flare.data.DataField","flare.util.Arrays"]}, | |
{"name":"flare.data.DataSet","size":586,"imports":["flare.data.DataTable"]}, | |
{"name":"flare.data.DataSource","size":3331,"imports":["flare.data.converters.IDataConverter","flare.data.converters.Converters","flare.data.DataSchema"]}, | |
{"name":"flare.data.DataTable","size":772,"imports":["flare.data.DataSchema"]}, | |
{"name":"flare.data.DataUtil","size":3322,"imports":["flare.data.DataField","flare.data.DataSchema"]}, | |
{"name":"flare.display.DirtySprite","size":8833,"imports":[]}, | |
{"name":"flare.display.LineSprite","size":1732,"imports":["flare.display.DirtySprite"]}, | |
{"name":"flare.display.RectSprite","size":3623,"imports":["flare.util.Colors","flare.display.DirtySprite"]}, | |
{"name":"flare.display.TextSprite","size":10066,"imports":["flare.display.DirtySprite"]}, | |
{"name":"flare.flex.FlareVis","size":4116,"imports":["flare.display.DirtySprite","flare.data.DataSet","flare.vis.Visualization","flare.vis.axis.CartesianAxes","flare.vis.axis.Axes","flare.vis.data.Data"]}, | |
{"name":"flare.physics.DragForce","size":1082,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]}, | |
{"name":"flare.physics.GravityForce","size":1336,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]}, | |
{"name":"flare.physics.IForce","size":319,"imports":["flare.physics.Simulation"]}, | |
{"name":"flare.physics.NBodyForce","size":10498,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.IForce"]}, | |
{"name":"flare.physics.Particle","size":2822,"imports":[]}, | |
{"name":"flare.physics.Simulation","size":9983,"imports":["flare.physics.Particle","flare.physics.NBodyForce","flare.physics.DragForce","flare.physics.GravityForce","flare.physics.Spring","flare.physics.SpringForce","flare.physics.IForce"]}, | |
{"name":"flare.physics.Spring","size":2213,"imports":["flare.physics.Particle"]}, | |
{"name":"flare.physics.SpringForce","size":1681,"imports":["flare.physics.Simulation","flare.physics.Particle","flare.physics.Spring","flare.physics.IForce"]}, | |
{"name":"flare.query.AggregateExpression","size":1616,"imports":["flare.query.Expression"]}, | |
{"name":"flare.query.And","size":1027,"imports":["flare.query.CompositeExpression","flare.query.Expression"]}, | |
{"name":"flare.query.Arithmetic","size":3891,"imports":["flare.query.BinaryExpression","flare.query.Expression"]}, | |
{"name":"flare.query.Average","size":891,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.BinaryExpression","size":2893,"imports":["flare.query.Expression"]}, | |
{"name":"flare.query.Comparison","size":5103,"imports":["flare.query.Not","flare.query.BinaryExpression","flare.query.Expression","flare.query.Or"]}, | |
{"name":"flare.query.CompositeExpression","size":3677,"imports":["flare.query.Expression","flare.query.If"]}, | |
{"name":"flare.query.Count","size":781,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.DateUtil","size":4141,"imports":["flare.query.Fn"]}, | |
{"name":"flare.query.Distinct","size":933,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.Expression","size":5130,"imports":["flare.query.Variable","flare.query.IsA","flare.query.ExpressionIterator","flare.util.IPredicate","flare.query.Literal","flare.util.IEvaluable","flare.query.If"]}, | |
{"name":"flare.query.ExpressionIterator","size":3617,"imports":["flare.query.Expression"]}, | |
{"name":"flare.query.Fn","size":3240,"imports":["flare.query.DateUtil","flare.query.CompositeExpression","flare.query.Expression","flare.query.StringUtil"]}, | |
{"name":"flare.query.If","size":2732,"imports":["flare.query.Expression"]}, | |
{"name":"flare.query.IsA","size":2039,"imports":["flare.query.Expression","flare.query.If"]}, | |
{"name":"flare.query.Literal","size":1214,"imports":["flare.query.Expression"]}, | |
{"name":"flare.query.Match","size":3748,"imports":["flare.query.BinaryExpression","flare.query.Expression","flare.query.StringUtil"]}, | |
{"name":"flare.query.Maximum","size":843,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.methods.add","size":593,"imports":["flare.query.methods.or","flare.query.Arithmetic"]}, | |
{"name":"flare.query.methods.and","size":330,"imports":["flare.query.And","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.average","size":287,"imports":["flare.query.Average","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.count","size":277,"imports":["flare.query.Count","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.distinct","size":292,"imports":["flare.query.Distinct","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.div","size":595,"imports":["flare.query.methods.or","flare.query.Arithmetic"]}, | |
{"name":"flare.query.methods.eq","size":594,"imports":["flare.query.Comparison","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.fn","size":460,"imports":["flare.query.methods.or","flare.query.Fn"]}, | |
{"name":"flare.query.methods.gt","size":603,"imports":["flare.query.Comparison","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.gte","size":625,"imports":["flare.query.Comparison","flare.query.methods.gt","flare.query.methods.eq","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.iff","size":748,"imports":["flare.query.methods.or","flare.query.If"]}, | |
{"name":"flare.query.methods.isa","size":461,"imports":["flare.query.IsA","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.lt","size":597,"imports":["flare.query.Comparison","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.lte","size":619,"imports":["flare.query.Comparison","flare.query.methods.lt","flare.query.methods.eq","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.max","size":283,"imports":["flare.query.Maximum","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.min","size":283,"imports":["flare.query.Minimum","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.mod","size":591,"imports":["flare.query.methods.or","flare.query.Arithmetic"]}, | |
{"name":"flare.query.methods.mul","size":603,"imports":["flare.query.methods.lt","flare.query.methods.or","flare.query.Arithmetic"]}, | |
{"name":"flare.query.methods.neq","size":599,"imports":["flare.query.Comparison","flare.query.methods.eq","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.not","size":386,"imports":["flare.query.Not","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.or","size":323,"imports":["flare.query.Or"]}, | |
{"name":"flare.query.methods.orderby","size":307,"imports":["flare.query.Query","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.range","size":772,"imports":["flare.query.methods.max","flare.query.Range","flare.query.methods.or","flare.query.methods.min"]}, | |
{"name":"flare.query.methods.select","size":296,"imports":["flare.query.Query"]}, | |
{"name":"flare.query.methods.stddev","size":363,"imports":["flare.query.methods.and","flare.query.Variance","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.sub","size":600,"imports":["flare.query.methods.or","flare.query.Arithmetic"]}, | |
{"name":"flare.query.methods.sum","size":280,"imports":["flare.query.Sum","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.update","size":307,"imports":["flare.query.Query"]}, | |
{"name":"flare.query.methods.variance","size":335,"imports":["flare.query.Variance","flare.query.methods.or"]}, | |
{"name":"flare.query.methods.where","size":299,"imports":["flare.query.Query","flare.query.methods.lt","flare.query.methods.lte"]}, | |
{"name":"flare.query.methods.xor","size":354,"imports":["flare.query.Xor","flare.query.methods.or"]}, | |
{"name":"flare.query.methods._","size":264,"imports":["flare.query.Literal","flare.query.methods.or"]}, | |
{"name":"flare.query.Minimum","size":843,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.Not","size":1554,"imports":["flare.query.Expression"]}, | |
{"name":"flare.query.Or","size":970,"imports":["flare.query.CompositeExpression","flare.query.Expression"]}, | |
{"name":"flare.query.Query","size":13896,"imports":["flare.query.Variable","flare.query.Sum","flare.query.Expression","flare.util.Sort","flare.query.Not","flare.query.AggregateExpression","flare.query.Literal","flare.util.Filter","flare.util.Property","flare.query.If"]}, | |
{"name":"flare.query.Range","size":1594,"imports":["flare.query.And","flare.query.Comparison","flare.query.Expression"]}, | |
{"name":"flare.query.StringUtil","size":4130,"imports":["flare.query.Fn"]}, | |
{"name":"flare.query.Sum","size":791,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.Variable","size":1124,"imports":["flare.query.Expression","flare.util.Property"]}, | |
{"name":"flare.query.Variance","size":1876,"imports":["flare.query.Expression","flare.query.AggregateExpression"]}, | |
{"name":"flare.query.Xor","size":1101,"imports":["flare.query.CompositeExpression","flare.query.Expression"]}, | |
{"name":"flare.scale.IScaleMap","size":2105,"imports":["flare.scale.Scale"]}, | |
{"name":"flare.scale.LinearScale","size":1316,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]}, | |
{"name":"flare.scale.LogScale","size":3151,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]}, | |
{"name":"flare.scale.OrdinalScale","size":3770,"imports":["flare.scale.ScaleType","flare.util.Arrays","flare.scale.Scale"]}, | |
{"name":"flare.scale.QuantileScale","size":2435,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.ScaleType"]}, | |
{"name":"flare.scale.QuantitativeScale","size":4839,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale"]}, | |
{"name":"flare.scale.RootScale","size":1756,"imports":["flare.util.Maths","flare.util.Strings","flare.scale.Scale","flare.scale.QuantitativeScale","flare.scale.ScaleType"]}, | |
{"name":"flare.scale.Scale","size":4268,"imports":["flare.scale.ScaleType","flare.util.Strings"]}, | |
{"name":"flare.scale.ScaleType","size":1821,"imports":["flare.scale.Scale"]}, | |
{"name":"flare.scale.TimeScale","size":5833,"imports":["flare.util.Maths","flare.util.Dates","flare.scale.Scale","flare.scale.ScaleType"]}, | |
{"name":"flare.util.Arrays","size":8258,"imports":["flare.util.IValueProxy","flare.util.Property","flare.util.IEvaluable"]}, | |
{"name":"flare.util.Colors","size":10001,"imports":["flare.util.Filter"]}, | |
{"name":"flare.util.Dates","size":8217,"imports":["flare.util.Maths"]}, | |
{"name":"flare.util.Displays","size":12555,"imports":["flare.util.IValueProxy","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.util.Sort"]}, | |
{"name":"flare.util.Filter","size":2324,"imports":["flare.util.IPredicate","flare.util.Property"]}, | |
{"name":"flare.util.Geometry","size":10993,"imports":[]}, | |
{"name":"flare.util.heap.FibonacciHeap","size":9354,"imports":["flare.util.heap.HeapNode"]}, | |
{"name":"flare.util.heap.HeapNode","size":1233,"imports":["flare.util.heap.FibonacciHeap"]}, | |
{"name":"flare.util.IEvaluable","size":335,"imports":[]}, | |
{"name":"flare.util.IPredicate","size":383,"imports":[]}, | |
{"name":"flare.util.IValueProxy","size":874,"imports":[]}, | |
{"name":"flare.util.math.DenseMatrix","size":3165,"imports":["flare.util.math.IMatrix"]}, | |
{"name":"flare.util.math.IMatrix","size":2815,"imports":[]}, | |
{"name":"flare.util.math.SparseMatrix","size":3366,"imports":["flare.util.math.IMatrix"]}, | |
{"name":"flare.util.Maths","size":17705,"imports":["flare.util.Arrays"]}, | |
{"name":"flare.util.Orientation","size":1486,"imports":[]}, | |
{"name":"flare.util.palette.ColorPalette","size":6367,"imports":["flare.util.palette.Palette","flare.util.Colors"]}, | |
{"name":"flare.util.palette.Palette","size":1229,"imports":[]}, | |
{"name":"flare.util.palette.ShapePalette","size":2059,"imports":["flare.util.palette.Palette","flare.util.Shapes"]}, | |
{"name":"flare.util.palette.SizePalette","size":2291,"imports":["flare.util.palette.Palette"]}, | |
{"name":"flare.util.Property","size":5559,"imports":["flare.util.IPredicate","flare.util.IValueProxy","flare.util.IEvaluable"]}, | |
{"name":"flare.util.Shapes","size":19118,"imports":["flare.util.Arrays"]}, | |
{"name":"flare.util.Sort","size":6887,"imports":["flare.util.Arrays","flare.util.Property"]}, | |
{"name":"flare.util.Stats","size":6557,"imports":["flare.util.Arrays","flare.util.Property"]}, | |
{"name":"flare.util.Strings","size":22026,"imports":["flare.util.Dates","flare.util.Property"]}, | |
{"name":"flare.vis.axis.Axes","size":1302,"imports":["flare.animate.Transitioner","flare.vis.Visualization"]}, | |
{"name":"flare.vis.axis.Axis","size":24593,"imports":["flare.animate.Transitioner","flare.scale.LinearScale","flare.util.Arrays","flare.scale.ScaleType","flare.util.Strings","flare.display.TextSprite","flare.scale.Scale","flare.util.Stats","flare.scale.IScaleMap","flare.vis.axis.AxisLabel","flare.vis.axis.AxisGridLine"]}, | |
{"name":"flare.vis.axis.AxisGridLine","size":652,"imports":["flare.vis.axis.Axis","flare.display.LineSprite"]}, | |
{"name":"flare.vis.axis.AxisLabel","size":636,"imports":["flare.vis.axis.Axis","flare.display.TextSprite"]}, | |
{"name":"flare.vis.axis.CartesianAxes","size":6703,"imports":["flare.animate.Transitioner","flare.display.RectSprite","flare.vis.axis.Axis","flare.display.TextSprite","flare.vis.axis.Axes","flare.vis.Visualization","flare.vis.axis.AxisGridLine"]}, | |
{"name":"flare.vis.controls.AnchorControl","size":2138,"imports":["flare.vis.controls.Control","flare.vis.Visualization","flare.vis.operator.layout.Layout"]}, | |
{"name":"flare.vis.controls.ClickControl","size":3824,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]}, | |
{"name":"flare.vis.controls.Control","size":1353,"imports":["flare.vis.controls.IControl","flare.util.Filter"]}, | |
{"name":"flare.vis.controls.ControlList","size":4665,"imports":["flare.vis.controls.IControl","flare.util.Arrays","flare.vis.Visualization","flare.vis.controls.Control"]}, | |
{"name":"flare.vis.controls.DragControl","size":2649,"imports":["flare.vis.controls.Control","flare.vis.data.DataSprite"]}, | |
{"name":"flare.vis.controls.ExpandControl","size":2832,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.controls.Control","flare.vis.Visualization"]}, | |
{"name":"flare.vis.controls.HoverControl","size":4896,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]}, | |
{"name":"flare.vis.controls.IControl","size":763,"imports":["flare.vis.controls.Control"]}, | |
{"name":"flare.vis.controls.PanZoomControl","size":5222,"imports":["flare.util.Displays","flare.vis.controls.Control"]}, | |
{"name":"flare.vis.controls.SelectionControl","size":7862,"imports":["flare.vis.events.SelectionEvent","flare.vis.controls.Control"]}, | |
{"name":"flare.vis.controls.TooltipControl","size":8435,"imports":["flare.animate.Tween","flare.display.TextSprite","flare.vis.controls.Control","flare.vis.events.TooltipEvent"]}, | |
{"name":"flare.vis.data.Data","size":20544,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.Tree","flare.vis.events.DataEvent","flare.data.DataSet","flare.vis.data.TreeBuilder","flare.vis.data.DataList","flare.data.DataSchema","flare.util.Sort","flare.data.DataField","flare.util.Property"]}, | |
{"name":"flare.vis.data.DataList","size":19788,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.util.math.DenseMatrix","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.events.DataEvent","flare.util.Stats","flare.util.math.IMatrix","flare.util.Sort","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]}, | |
{"name":"flare.vis.data.DataSprite","size":10349,"imports":["flare.util.Colors","flare.vis.data.Data","flare.display.DirtySprite","flare.vis.data.render.IRenderer","flare.vis.data.render.ShapeRenderer"]}, | |
{"name":"flare.vis.data.EdgeSprite","size":3301,"imports":["flare.vis.data.render.EdgeRenderer","flare.vis.data.DataSprite","flare.vis.data.NodeSprite","flare.vis.data.render.ArrowType","flare.vis.data.Data"]}, | |
{"name":"flare.vis.data.NodeSprite","size":19382,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.data.Tree","flare.util.Sort","flare.util.Filter","flare.util.IEvaluable","flare.vis.data.Data"]}, | |
{"name":"flare.vis.data.render.ArrowType","size":698,"imports":[]}, | |
{"name":"flare.vis.data.render.EdgeRenderer","size":5569,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.vis.data.render.IRenderer","flare.util.Shapes","flare.util.Geometry","flare.vis.data.render.ArrowType"]}, | |
{"name":"flare.vis.data.render.IRenderer","size":353,"imports":["flare.vis.data.DataSprite"]}, | |
{"name":"flare.vis.data.render.ShapeRenderer","size":2247,"imports":["flare.util.Shapes","flare.vis.data.render.IRenderer","flare.vis.data.DataSprite"]}, | |
{"name":"flare.vis.data.ScaleBinding","size":11275,"imports":["flare.scale.TimeScale","flare.scale.ScaleType","flare.scale.LinearScale","flare.scale.LogScale","flare.scale.OrdinalScale","flare.scale.RootScale","flare.scale.Scale","flare.scale.QuantileScale","flare.util.Stats","flare.scale.QuantitativeScale","flare.vis.events.DataEvent","flare.vis.data.Data"]}, | |
{"name":"flare.vis.data.Tree","size":7147,"imports":["flare.vis.data.EdgeSprite","flare.vis.events.DataEvent","flare.vis.data.NodeSprite","flare.vis.data.Data"]}, | |
{"name":"flare.vis.data.TreeBuilder","size":9930,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.Tree","flare.util.heap.HeapNode","flare.util.heap.FibonacciHeap","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]}, | |
{"name":"flare.vis.events.DataEvent","size":2313,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.DataSprite"]}, | |
{"name":"flare.vis.events.SelectionEvent","size":1880,"imports":["flare.vis.events.DataEvent"]}, | |
{"name":"flare.vis.events.TooltipEvent","size":1701,"imports":["flare.vis.data.EdgeSprite","flare.vis.data.NodeSprite"]}, | |
{"name":"flare.vis.events.VisualizationEvent","size":1117,"imports":["flare.animate.Transitioner"]}, | |
{"name":"flare.vis.legend.Legend","size":20859,"imports":["flare.animate.Transitioner","flare.vis.data.ScaleBinding","flare.util.palette.SizePalette","flare.scale.ScaleType","flare.vis.legend.LegendItem","flare.display.RectSprite","flare.display.TextSprite","flare.scale.Scale","flare.vis.legend.LegendRange","flare.util.Displays","flare.util.Orientation","flare.util.palette.ShapePalette","flare.util.palette.Palette","flare.util.palette.ColorPalette"]}, | |
{"name":"flare.vis.legend.LegendItem","size":4614,"imports":["flare.util.Shapes","flare.display.TextSprite","flare.vis.legend.Legend","flare.display.RectSprite"]}, | |
{"name":"flare.vis.legend.LegendRange","size":10530,"imports":["flare.util.Colors","flare.vis.legend.Legend","flare.display.RectSprite","flare.display.TextSprite","flare.scale.Scale","flare.util.Stats","flare.scale.IScaleMap","flare.util.Orientation","flare.util.palette.ColorPalette"]}, | |
{"name":"flare.vis.operator.distortion.BifocalDistortion","size":4461,"imports":["flare.vis.operator.distortion.Distortion"]}, | |
{"name":"flare.vis.operator.distortion.Distortion","size":6314,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.vis.events.VisualizationEvent","flare.vis.axis.Axis","flare.vis.axis.CartesianAxes","flare.vis.operator.layout.Layout","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.distortion.FisheyeDistortion","size":3444,"imports":["flare.vis.operator.distortion.Distortion"]}, | |
{"name":"flare.vis.operator.encoder.ColorEncoder","size":3179,"imports":["flare.animate.Transitioner","flare.scale.ScaleType","flare.vis.operator.encoder.Encoder","flare.util.palette.Palette","flare.util.palette.ColorPalette","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.encoder.Encoder","size":4060,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.vis.operator.Operator","flare.vis.data.ScaleBinding","flare.util.palette.Palette","flare.util.Filter","flare.util.Property","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.encoder.PropertyEncoder","size":4138,"imports":["flare.animate.Transitioner","flare.vis.data.DataList","flare.vis.data.Data","flare.vis.operator.encoder.Encoder","flare.util.Filter","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.encoder.ShapeEncoder","size":1690,"imports":["flare.util.palette.Palette","flare.scale.ScaleType","flare.util.palette.ShapePalette","flare.vis.operator.encoder.Encoder","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.encoder.SizeEncoder","size":1830,"imports":["flare.util.palette.Palette","flare.scale.ScaleType","flare.vis.operator.encoder.Encoder","flare.util.palette.SizePalette","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.filter.FisheyeTreeFilter","size":5219,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.data.Tree","flare.vis.operator.Operator","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.filter.GraphDistanceFilter","size":3165,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.operator.Operator","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite"]}, | |
{"name":"flare.vis.operator.filter.VisibilityFilter","size":3509,"imports":["flare.vis.operator.Operator","flare.animate.Transitioner","flare.util.Filter","flare.vis.data.DataSprite","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.IOperator","size":1286,"imports":["flare.animate.Transitioner","flare.vis.Visualization","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.label.Labeler","size":9956,"imports":["flare.animate.Transitioner","flare.vis.data.DataSprite","flare.display.TextSprite","flare.vis.operator.Operator","flare.util.Shapes","flare.util.Filter","flare.util.Property","flare.util.IEvaluable","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.label.RadialLabeler","size":3899,"imports":["flare.vis.operator.label.Labeler","flare.util.Shapes","flare.display.TextSprite","flare.vis.data.DataSprite","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.label.StackedAreaLabeler","size":3202,"imports":["flare.vis.operator.label.Labeler","flare.display.TextSprite","flare.vis.data.DataSprite","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.AxisLayout","size":6725,"imports":["flare.scale.ScaleType","flare.vis.data.DataSprite","flare.vis.axis.CartesianAxes","flare.vis.data.ScaleBinding","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.BundledEdgeRouter","size":3727,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.util.Shapes","flare.vis.operator.layout.Layout","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.layout.CircleLayout","size":9317,"imports":["flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.ScaleBinding","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.CirclePackingLayout","size":12003,"imports":["flare.vis.data.NodeSprite","flare.vis.data.render.ShapeRenderer","flare.util.Shapes","flare.util.Sort","flare.vis.operator.layout.Layout","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.DendrogramLayout","size":4853,"imports":["flare.util.Property","flare.vis.data.NodeSprite","flare.util.Orientation","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite"]}, | |
{"name":"flare.vis.operator.layout.ForceDirectedLayout","size":8411,"imports":["flare.physics.Simulation","flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataSprite","flare.physics.Particle","flare.physics.Spring","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.IcicleTreeLayout","size":4864,"imports":["flare.vis.data.NodeSprite","flare.util.Orientation","flare.vis.operator.layout.Layout"]}, | |
{"name":"flare.vis.operator.layout.IndentedTreeLayout","size":3174,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.operator.layout.Layout","flare.vis.data.EdgeSprite"]}, | |
{"name":"flare.vis.operator.layout.Layout","size":7881,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.vis.data.DataList","flare.vis.data.DataSprite","flare.vis.data.EdgeSprite","flare.vis.Visualization","flare.vis.axis.CartesianAxes","flare.vis.axis.Axes","flare.animate.TransitionEvent","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.layout.NodeLinkTreeLayout","size":12870,"imports":["flare.vis.data.NodeSprite","flare.util.Arrays","flare.util.Orientation","flare.vis.operator.layout.Layout"]}, | |
{"name":"flare.vis.operator.layout.PieLayout","size":2728,"imports":["flare.vis.data.DataList","flare.vis.data.DataSprite","flare.util.Shapes","flare.util.Property","flare.vis.operator.layout.Layout","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.RadialTreeLayout","size":12348,"imports":["flare.vis.data.NodeSprite","flare.util.Arrays","flare.vis.operator.layout.Layout"]}, | |
{"name":"flare.vis.operator.layout.RandomLayout","size":870,"imports":["flare.vis.operator.layout.Layout","flare.vis.data.DataSprite","flare.vis.data.Data"]}, | |
{"name":"flare.vis.operator.layout.StackedAreaLayout","size":9121,"imports":["flare.scale.TimeScale","flare.scale.LinearScale","flare.util.Arrays","flare.scale.OrdinalScale","flare.vis.data.NodeSprite","flare.scale.Scale","flare.vis.axis.CartesianAxes","flare.util.Stats","flare.util.Orientation","flare.scale.QuantitativeScale","flare.util.Maths","flare.vis.operator.layout.Layout"]}, | |
{"name":"flare.vis.operator.layout.TreeMapLayout","size":9191,"imports":["flare.animate.Transitioner","flare.vis.data.NodeSprite","flare.util.Property","flare.vis.operator.layout.Layout"]}, | |
{"name":"flare.vis.operator.Operator","size":2490,"imports":["flare.animate.Transitioner","flare.vis.operator.IOperator","flare.util.Property","flare.util.IEvaluable","flare.vis.Visualization"]}, | |
{"name":"flare.vis.operator.OperatorList","size":5248,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.operator.IOperator","flare.vis.Visualization","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.OperatorSequence","size":4190,"imports":["flare.animate.Transitioner","flare.util.Arrays","flare.vis.operator.IOperator","flare.vis.operator.OperatorList","flare.animate.FunctionSequence","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.OperatorSwitch","size":2581,"imports":["flare.animate.Transitioner","flare.vis.operator.OperatorList","flare.vis.operator.IOperator","flare.vis.operator.Operator"]}, | |
{"name":"flare.vis.operator.SortOperator","size":2023,"imports":["flare.vis.operator.Operator","flare.animate.Transitioner","flare.util.Arrays","flare.vis.data.Data"]}, | |
{"name":"flare.vis.Visualization","size":16540,"imports":["flare.animate.Transitioner","flare.vis.operator.IOperator","flare.animate.Scheduler","flare.vis.events.VisualizationEvent","flare.vis.data.Tree","flare.vis.events.DataEvent","flare.vis.axis.Axes","flare.vis.axis.CartesianAxes","flare.util.Displays","flare.vis.operator.OperatorList","flare.vis.controls.ControlList","flare.animate.ISchedulable","flare.vis.data.Data"]} | |
] |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[ | |
{ | |
"name": "test.so.a", | |
"imports": [ "test.st.a", "test.st.b", "test.st.c", | |
"test.to.a", "test.to.b" ] | |
}, { | |
"name": "test.so.b", | |
"imports": [ "test.st.a", "test.st.b", "test.st.c", | |
"test.to.a", "test.to.b" ] | |
}, | |
{ | |
"name": "test.st.a", | |
"imports": [ "test.st.b", "test.st.c", | |
"test.to.a", "test.to.b" ] | |
}, { | |
"name": "test.st.b", | |
"imports": [ "test.st.a", "test.st.c", | |
"test.to.a", "test.to.b" ] | |
}, { | |
"name": "test.st.c", | |
"imports": [ "test.st.a", "test.st.b", | |
"test.to.a", "test.to.b" ] | |
}, | |
{ | |
"name": "test.to.a", | |
"imports": [ ] | |
}, { | |
"name": "test.to.b", | |
"imports": [ ] | |
} | |
] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment