Skip to content

Instantly share code, notes, and snippets.

@micahstubbs
Last active August 9, 2017 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save micahstubbs/8a3779fc211b45ef9744100d1307f0fa to your computer and use it in GitHub Desktop.
Save micahstubbs/8a3779fc211b45ef9744100d1307f0fa to your computer and use it in GitHub Desktop.
d3 example graph search - user query
height: 960
license: BSD-3-Clause
border: no

This iteration add an interaction that opens the block represented by a node when you click on that node

In this iteration, we load json data from a static file. This json data is produced by the REST API of a neo4j graph database that contains the d3 example README citation graph, in response to a query that we post to it.

This query finds all of the blocks from user enjalot that mention blocks or are mentioned themselves. Then, we show those blocks as well as all 1st degree connections

MATCH(n)-[:LINKS_TO]-(m)
 WHERE n.user =~ '.*enjalot.*'
 RETURN n, m

see also

the parent project for blockbuilder graph search ui prototypes
https://github.com/micahstubbs/bbgs-ui-prototypes

the blockbuilder graph search neo4j graph database source data & config backend project https://github.com/micahstubbs/blockbuilder-graph-search-index

/* global d3 */
function forceInABox(alpha) {
function index(d) {
return d.index;
}
var id = index,
nodes,
links, //needed for the force version
tree,
size = [100, 100],
nodeSize = 1, // The expected node size used for computing the cluster node
forceCharge = -2,
foci = {},
// oldStart = force.start,
linkStrengthIntraCluster = 0.1,
linkStrengthInterCluster = 0.01,
// oldGravity = force.gravity(),
templateNodes = [],
offset = [0, 0],
templateForce,
templateNodesSel,
groupBy = function(d) {
return d.cluster;
},
template = 'treemap',
enableGrouping = true,
strength = 0.1;
// showingTemplate = false;
function force(alpha) {
if (!enableGrouping) {
return force;
}
if (template === 'force') {
//Do the tick of the template force and get the new focis
templateForce.tick();
getFocisFromTemplate();
}
for (var i = 0, n = nodes.length, node, k = alpha * strength; i < n; ++i) {
node = nodes[i];
node.vx += (foci[groupBy(node)].x - node.x) * k;
node.vy += (foci[groupBy(node)].y - node.y) * k;
}
}
function initialize() {
if (!nodes) return;
// var i,
// n = nodes.length,
// m = links.length,
// nodeById = map(nodes, id),
// link;
if (template === 'treemap') {
initializeWithTreemap();
} else {
initializeWithForce();
}
}
force.initialize = function(_) {
nodes = _;
initialize();
};
function getLinkKey(l) {
var sourceID = groupBy(l.source), targetID = groupBy(l.target);
return sourceID <= targetID
? sourceID + '~' + targetID
: targetID + '~' + sourceID;
}
function computeClustersNodeCounts(nodes) {
var clustersCounts = d3.map();
nodes.forEach(function(d) {
if (!clustersCounts.has(groupBy(d))) {
clustersCounts.set(groupBy(d), 0);
}
});
nodes.forEach(function(d) {
// if (!d.show) { return; }
clustersCounts.set(groupBy(d), clustersCounts.get(groupBy(d)) + 1);
});
return clustersCounts;
}
//Returns
function computeClustersLinkCounts(links) {
var dClusterLinks = d3.map(), clusterLinks = [];
links.forEach(function(l) {
var key = getLinkKey(l), count;
if (dClusterLinks.has(key)) {
count = dClusterLinks.get(key);
} else {
count = 0;
}
count += 1;
dClusterLinks.set(key, count);
});
dClusterLinks.entries().forEach(function(d) {
var source, target;
source = d.key.split('~')[0];
target = d.key.split('~')[1];
clusterLinks.push({
source: source,
target: target,
count: d.value
});
});
return clusterLinks;
}
//Returns the metagraph of the clusters
function getGroupsGraph() {
var gnodes = [],
glinks = [],
// edges = [],
dNodes = d3.map(),
// totalSize = 0,
clustersList,
c,
i,
size,
clustersCounts,
clustersLinks;
clustersCounts = computeClustersNodeCounts(nodes);
clustersLinks = computeClustersLinkCounts(links);
//map.keys() is really slow, it's crucial to have it outside the loop
clustersList = clustersCounts.keys();
for (i = 0; i < clustersList.length; i += 1) {
c = clustersList[i];
size = clustersCounts.get(c);
gnodes.push({ id: c, size: size });
dNodes.set(c, i);
// totalSize += size;
}
clustersLinks.forEach(function(l) {
glinks.push({
source: dNodes.get(l.source),
target: dNodes.get(l.target),
count: l.count
});
});
return { nodes: gnodes, links: glinks };
}
function getGroupsTree() {
var children = [], totalSize = 0, clustersList, c, i, size, clustersCounts;
clustersCounts = computeClustersNodeCounts(force.nodes());
//map.keys() is really slow, it's crucial to have it outside the loop
clustersList = clustersCounts.keys();
for (i = 0; i < clustersList.length; i += 1) {
c = clustersList[i];
size = clustersCounts.get(c);
children.push({ id: c, size: size });
totalSize += size;
}
// return {id: "clustersTree", size: totalSize, children : children};
return { id: 'clustersTree', children: children };
}
function getFocisFromTemplate() {
//compute foci
foci.none = { x: 0, y: 0 };
templateNodes.forEach(function(d) {
if (template === 'treemap') {
foci[d.data.id] = {
x: d.x0 + (d.x1 - d.x0) / 2 - offset[0],
y: d.y0 + (d.y1 - d.y0) / 2 - offset[1]
};
} else {
foci[d.id] = { x: d.x - offset[0], y: d.y - offset[1] };
}
});
}
function initializeWithTreemap() {
var treemap = d3.treemap().size(force.size());
tree = d3
.hierarchy(getGroupsTree())
// .sort(function (p, q) { return d3.ascending(p.size, q.size); })
// .count()
.sum(function(d) {
return d.size;
})
.sort(function(a, b) {
return b.height - a.height || b.value - a.value;
});
templateNodes = treemap(tree).leaves();
getFocisFromTemplate();
}
function checkLinksAsObjects() {
// Check if links come in the format of indexes instead of objects
var linkCount = 0;
if (nodes.length === 0) return;
// console.log('nodes from forceInABox', nodes);
links.forEach(function(link) {
var source, target;
if (!nodes) return;
source = link.source;
target = link.target;
if (typeof link.source !== 'object') source = nodes[link.source];
if (typeof link.target !== 'object') target = nodes[link.target];
if (source === undefined || target === undefined) {
console.log('link from forceInABox', link);
throw Error(
"Error setting links, couldn't find nodes for a link (see it on the console)"
);
}
link.source = source;
link.target = target;
link.index = linkCount++;
});
}
function initializeWithForce() {
var net;
if (nodes && nodes.length > 0) {
if (groupBy(nodes[0]) === undefined) {
throw Error(
"Couldn't find the grouping attribute for the nodes. Make sure to set it up with forceInABox.groupBy('attr') before calling .links()"
);
}
}
checkLinksAsObjects();
net = getGroupsGraph();
templateForce = d3
.forceSimulation(net.nodes)
.force('x', d3.forceX(size[0] / 2).strength(0.5))
.force('y', d3.forceY(size[1] / 2).strength(0.5))
.force(
'collide',
d3.forceCollide(function(d) {
return d.size * nodeSize;
})
)
.force(
'charge',
d3.forceManyBody().strength(function(d) {
return forceCharge * d.size;
})
)
.force('links', d3.forceLink(!net.nodes ? net.links : []));
templateNodes = templateForce.nodes();
getFocisFromTemplate();
}
function drawTreemap(container) {
container.selectAll('.cell').remove();
container
.selectAll('cell')
.data(templateNodes)
.enter()
.append('svg:rect')
.attr('class', 'cell')
.attr('x', function(d) {
return d.x0;
})
.attr('y', function(d) {
return d.y0;
})
.attr('width', function(d) {
return d.x1 - d.x0;
})
.attr('height', function(d) {
return d.y1 - d.y0;
});
}
function drawGraph(container) {
container.selectAll('.cell').remove();
templateNodesSel = container.selectAll('cell').data(templateNodes);
templateNodesSel
.enter()
.append('svg:circle')
.attr('class', 'cell')
.attr('cx', function(d) {
return d.x;
})
.attr('cy', function(d) {
return d.y;
})
.attr('r', function(d) {
return d.size * nodeSize;
});
}
force.drawTemplate = function(container) {
// showingTemplate = true;
if (template === 'treemap') {
drawTreemap(container);
} else {
drawGraph(container);
}
return force;
};
//Backwards compatibility
force.drawTreemap = force.drawTemplate;
force.deleteTemplate = function(container) {
// showingTemplate = false;
container.selectAll('.cell').remove();
return force;
};
force.template = function(x) {
if (!arguments.length) return template;
template = x;
initialize();
return force;
};
force.groupBy = function(x) {
if (!arguments.length) return groupBy;
if (typeof x === 'string') {
groupBy = function(d) {
return d[x];
};
return force;
}
groupBy = x;
return force;
};
force.enableGrouping = function(x) {
if (!arguments.length) return enableGrouping;
enableGrouping = x;
// update();
return force;
};
force.strength = function(x) {
if (!arguments.length) return strength;
strength = x;
return force;
};
force.getLinkStrength = function(e) {
if (enableGrouping) {
if (groupBy(e.source) === groupBy(e.target)) {
if (typeof linkStrengthIntraCluster === 'function') {
return linkStrengthIntraCluster(e);
} else {
return linkStrengthIntraCluster;
}
} else {
if (typeof linkStrengthInterCluster === 'function') {
return linkStrengthInterCluster(e);
} else {
return linkStrengthInterCluster;
}
}
} else {
// Not grouping return the intracluster
if (typeof linkStrengthIntraCluster === 'function') {
return linkStrengthIntraCluster(e);
} else {
return linkStrengthIntraCluster;
}
}
};
force.id = function(_) {
return arguments.length ? ((id = _), force) : id;
};
force.size = function(_) {
return arguments.length ? ((size = _), force) : size;
};
force.linkStrengthInterCluster = function(_) {
return arguments.length
? ((linkStrengthInterCluster = _), force)
: linkStrengthInterCluster;
};
force.linkStrengthIntraCluster = function(_) {
return arguments.length
? ((linkStrengthIntraCluster = _), force)
: linkStrengthIntraCluster;
};
force.nodes = function(_) {
return arguments.length ? ((nodes = _), force) : nodes;
};
force.links = function(_) {
if (!arguments.length) return links;
if (_ === null) links = [];
else links = _;
return force;
};
force.nodeSize = function(_) {
return arguments.length ? ((nodeSize = _), force) : nodeSize;
};
force.forceCharge = function(_) {
return arguments.length ? ((forceCharge = _), force) : forceCharge;
};
force.offset = function(_) {
return arguments.length ? ((offset = _), force) : offset;
};
return force;
}
<!DOCTYPE html>
<meta charset='utf-8'>
<style>
img {
max-width: 230px;
max-height: 120px;
}
#canvas-container {
width: 100%;
text-align: center;
}
canvas {
display: inline;
}
</style>
<a target='_blank' style='outline:none;'>
<div id='canvas-container'>
<canvas width='960' height='960'>Your browser does not support canvas</canvas>
</div>
</a>
<script src='https://cdnjs.cloudflare.com/ajax/libs/d3/4.10.0/d3.js'></script>
<script src="forceInABox.js"></script>
<script src='jsLouvain.js'></script>
<script src='vis.js'></script>
/*
Author: Corneliu S. (github.com/upphiminn)
This is a javascript implementation of the Louvain
community detection algorithm (http://arxiv.org/abs/0803.0476)
Based on https://bitbucket.org/taynaud/python-louvain/overview
*/
(function() {
jLouvain = function() {
//Constants
var __PASS_MAX = -1;
var __MIN = 0.0000001;
//Local vars
var original_graph_nodes;
var original_graph_edges;
var original_graph = {};
var partition_init;
//Helpers
function make_set(array) {
var set = {};
array.forEach(function(d, i) {
set[d] = true;
});
return Object.keys(set);
}
function obj_values(obj) {
var vals = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
vals.push(obj[key]);
}
}
return vals;
}
function get_degree_for_node(graph, node) {
var neighbours = graph._assoc_mat[node]
? Object.keys(graph._assoc_mat[node])
: [];
var weight = 0;
neighbours.forEach(function(neighbour, i) {
var value = graph._assoc_mat[node][neighbour] || 1;
if (node == neighbour) value *= 2;
weight += value;
});
return weight;
}
function get_neighbours_of_node(graph, node) {
if (typeof graph._assoc_mat[node] == 'undefined') return [];
var neighbours = Object.keys(graph._assoc_mat[node]);
return neighbours;
}
function get_edge_weight(graph, node1, node2) {
return graph._assoc_mat[node1]
? graph._assoc_mat[node1][node2]
: undefined;
}
function get_graph_size(graph) {
var size = 0;
graph.edges.forEach(function(edge) {
size += edge.weight;
});
return size;
}
function add_edge_to_graph(graph, edge) {
update_assoc_mat(graph, edge);
var edge_index = graph.edges
.map(function(d) {
return d.source + '_' + d.target;
})
.indexOf(edge.source + '_' + edge.target);
if (edge_index != -1) graph.edges[edge_index].weight = edge.weight;
else graph.edges.push(edge);
}
function make_assoc_mat(edge_list) {
var mat = {};
edge_list.forEach(function(edge, i) {
mat[edge.source] = mat[edge.source] || {};
mat[edge.source][edge.target] = edge.weight;
mat[edge.target] = mat[edge.target] || {};
mat[edge.target][edge.source] = edge.weight;
});
return mat;
}
function update_assoc_mat(graph, edge) {
graph._assoc_mat[edge.source] = graph._assoc_mat[edge.source] || {};
graph._assoc_mat[edge.source][edge.target] = edge.weight;
graph._assoc_mat[edge.target] = graph._assoc_mat[edge.target] || {};
graph._assoc_mat[edge.target][edge.source] = edge.weight;
}
function clone(obj) {
if (obj == null || typeof obj != 'object') return obj;
var temp = obj.constructor();
for (var key in obj)
temp[key] = clone(obj[key]);
return temp;
}
//Core-Algorithm Related
function init_status(graph, status, part) {
status['nodes_to_com'] = {};
status['total_weight'] = 0;
status['internals'] = {};
status['degrees'] = {};
status['gdegrees'] = {};
status['loops'] = {};
status['total_weight'] = get_graph_size(graph);
if (typeof part == 'undefined') {
graph.nodes.forEach(function(node, i) {
status.nodes_to_com[node] = i;
var deg = get_degree_for_node(graph, node);
if (deg < 0) throw 'Bad graph type, use positive weights!';
status.degrees[i] = deg;
status.gdegrees[node] = deg;
status.loops[node] = get_edge_weight(graph, node, node) || 0;
status.internals[i] = status.loops[node];
});
} else {
graph.nodes.forEach(function(node, i) {
var com = part[node];
status.nodes_to_com[node] = com;
var deg = get_degree_for_node(graph, node);
status.degrees[com] = (status.degrees[com] || 0) + deg;
status.gdegrees[node] = deg;
var inc = 0.0;
var neighbours = get_neighbours_of_node(graph, node);
neighbours.forEach(function(neighbour, i) {
var weight = graph._assoc_mat[node][neighbour];
if (weight <= 0) {
throw 'Bad graph type, use positive weights';
}
if (part[neighbour] == com) {
if (neighbour == node) {
inc += weight;
} else {
inc += weight / 2.0;
}
}
});
status.internals[com] = (status.internals[com] || 0) + inc;
});
}
}
function __modularity(status) {
var links = status.total_weight;
var result = 0.0;
var communities = make_set(obj_values(status.nodes_to_com));
communities.forEach(function(com, i) {
var in_degree = status.internals[com] || 0;
var degree = status.degrees[com] || 0;
if (links > 0) {
result =
result + in_degree / links - Math.pow(degree / (2.0 * links), 2);
}
});
return result;
}
function __neighcom(node, graph, status) {
// compute the communities in the neighb. of the node, with the graph given by
// node_to_com
var weights = {};
var neighboorhood = get_neighbours_of_node(graph, node); //make iterable;
neighboorhood.forEach(function(neighbour, i) {
if (neighbour != node) {
var weight = graph._assoc_mat[node][neighbour] || 1;
var neighbourcom = status.nodes_to_com[neighbour];
weights[neighbourcom] = (weights[neighbourcom] || 0) + weight;
}
});
return weights;
}
function __insert(node, com, weight, status) {
//insert node into com and modify status
status.nodes_to_com[node] = +com;
status.degrees[com] =
(status.degrees[com] || 0) + (status.gdegrees[node] || 0);
status.internals[com] =
(status.internals[com] || 0) + weight + (status.loops[node] || 0);
}
function __remove(node, com, weight, status) {
//remove node from com and modify status
status.degrees[com] =
(status.degrees[com] || 0) - (status.gdegrees[node] || 0);
status.internals[com] =
(status.internals[com] || 0) - weight - (status.loops[node] || 0);
status.nodes_to_com[node] = -1;
}
function __renumber(dict) {
var count = 0;
var ret = clone(dict); //deep copy :)
var new_values = {};
var dict_keys = Object.keys(dict);
dict_keys.forEach(function(key) {
var value = dict[key];
var new_value = typeof new_values[value] == 'undefined'
? -1
: new_values[value];
if (new_value == -1) {
new_values[value] = count;
new_value = count;
count = count + 1;
}
ret[key] = new_value;
});
return ret;
}
function __one_level(graph, status) {
//Compute one level of the Communities Dendogram.
var modif = true,
nb_pass_done = 0,
cur_mod = __modularity(status),
new_mod = cur_mod;
while (modif && nb_pass_done != __PASS_MAX) {
cur_mod = new_mod;
modif = false;
nb_pass_done += 1;
graph.nodes.forEach(function(node, i) {
var com_node = status.nodes_to_com[node];
var degc_totw =
(status.gdegrees[node] || 0) / (status.total_weight * 2.0);
var neigh_communities = __neighcom(node, graph, status);
__remove(node, com_node, neigh_communities[com_node] || 0.0, status);
var best_com = com_node;
var best_increase = 0;
var neigh_communities_entries = Object.keys(neigh_communities); //make iterable;
neigh_communities_entries.forEach(function(com, i) {
var incr =
neigh_communities[com] - (status.degrees[com] || 0.0) * degc_totw;
if (incr > best_increase) {
best_increase = incr;
best_com = com;
}
});
__insert(node, best_com, neigh_communities[best_com] || 0, status);
if (best_com != com_node) modif = true;
});
new_mod = __modularity(status);
if (new_mod - cur_mod < __MIN) break;
}
}
function induced_graph(partition, graph) {
var ret = { nodes: [], edges: [], _assoc_mat: {} };
var w_prec, weight;
//add nodes from partition values
var partition_values = obj_values(partition);
ret.nodes = ret.nodes.concat(make_set(partition_values)); //make set
graph.edges.forEach(function(edge, i) {
weight = edge.weight || 1;
var com1 = partition[edge.source];
var com2 = partition[edge.target];
w_prec = get_edge_weight(ret, com1, com2) || 0;
var new_weight = w_prec + weight;
add_edge_to_graph(ret, {
source: com1,
target: com2,
weight: new_weight
});
});
return ret;
}
function partition_at_level(dendogram, level) {
var partition = clone(dendogram[0]);
for (var i = 1; i < level + 1; i++)
Object.keys(partition).forEach(function(key, j) {
var node = key;
var com = partition[key];
partition[node] = dendogram[i][com];
});
return partition;
}
function generate_dendogram(graph, part_init) {
if (graph.edges.length == 0) {
var part = {};
graph.nodes.forEach(function(node, i) {
part[node] = node;
});
return part;
}
var status = {};
init_status(original_graph, status, part_init);
var mod = __modularity(status);
var status_list = [];
__one_level(original_graph, status);
var new_mod = __modularity(status);
var partition = __renumber(status.nodes_to_com);
status_list.push(partition);
mod = new_mod;
var current_graph = induced_graph(partition, original_graph);
init_status(current_graph, status);
while (true) {
__one_level(current_graph, status);
new_mod = __modularity(status);
if (new_mod - mod < __MIN) break;
partition = __renumber(status.nodes_to_com);
status_list.push(partition);
mod = new_mod;
current_graph = induced_graph(partition, current_graph);
init_status(current_graph, status);
}
return status_list;
}
var core = function() {
var status = {};
var dendogram = generate_dendogram(original_graph, partition_init);
return partition_at_level(dendogram, dendogram.length - 1);
};
core.nodes = function(nds) {
if (arguments.length > 0) {
original_graph_nodes = nds;
}
return core;
};
core.edges = function(edgs) {
if (typeof original_graph_nodes == 'undefined')
throw 'Please provide the graph nodes first!';
if (arguments.length > 0) {
original_graph_edges = edgs;
var assoc_mat = make_assoc_mat(edgs);
original_graph = {
nodes: original_graph_nodes,
edges: original_graph_edges,
_assoc_mat: assoc_mat
};
}
return core;
};
core.partition_init = function(prttn) {
if (arguments.length > 0) {
partition_init = prttn;
}
return core;
};
return core;
};
})();
{
"results": [
{
"columns": ["n", "m"],
"data": [
{
"row": [
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
},
{
"createdAt": "2014-07-07T03:35:48Z",
"description": "Map Pan & Zoom II",
"user": "mbostock",
"gistId": "eec4a6cda2f573574a11",
"updatedAt": "2016-02-09T01:53:20Z"
}
],
"meta": [
{
"id": 467,
"type": "node",
"deleted": false
},
{
"id": 615,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
},
{
"createdAt": "2015-08-16T03:37:26Z",
"description": "Comparing Map Projections",
"user": "syntagmatic",
"gistId": "ba569633d51ebec6ec6e",
"updatedAt": "2015-08-29T14:27:28Z"
}
],
"meta": [
{
"id": 467,
"type": "node",
"deleted": false
},
{
"id": 437,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "e2744ee563f7cab80350",
"updatedAt": "null"
}
],
"meta": [
{
"id": 467,
"type": "node",
"deleted": false
},
{
"id": 466,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
},
{
"createdAt": "2015-09-04T03:00:28Z",
"description": "Map & Globe",
"user": "curran",
"gistId": "01aa2685f083b6c1b9fb",
"updatedAt": "2015-09-23T21:36:19Z"
}
],
"meta": [
{
"id": 467,
"type": "node",
"deleted": false
},
{
"id": 614,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
},
{
"createdAt": "2015-09-30T17:02:24Z",
"description": "d3.geo.weichel",
"user": "enjalot",
"gistId": "27969219a945e2bd20dc",
"updatedAt": "2015-09-30T18:14:36Z"
}
],
"meta": [
{
"id": 467,
"type": "node",
"deleted": false
},
{
"id": 611,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
},
{
"createdAt": "2015-09-04T03:00:28Z",
"description": "Map & Globe",
"user": "curran",
"gistId": "01aa2685f083b6c1b9fb",
"updatedAt": "2015-09-23T21:36:19Z"
}
],
"meta": [
{
"id": 467,
"type": "node",
"deleted": false
},
{
"id": 614,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-08-29T20:48:46Z",
"description": "datasana #1",
"user": "enjalot",
"gistId": "a5df8dc94786a27d6420",
"updatedAt": "2015-09-17T07:38:50Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "782b91b09326541a0fc8",
"updatedAt": "null"
}
],
"meta": [
{
"id": 533,
"type": "node",
"deleted": false
},
{
"id": 532,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-08-29T20:48:46Z",
"description": "datasana #1",
"user": "enjalot",
"gistId": "a5df8dc94786a27d6420",
"updatedAt": "2015-09-17T07:38:50Z"
},
{
"createdAt": "2015-09-18T01:31:18Z",
"description": "datasana #1",
"user": "rcrocker13",
"gistId": "859c7b7150c81cc512b3",
"updatedAt": "2015-09-18T01:31:18Z"
}
],
"meta": [
{
"id": 533,
"type": "node",
"deleted": false
},
{
"id": 534,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-17T00:21:47Z",
"description": "Stacked-to-Grouped Police Killings",
"user": "enjalot",
"gistId": "2b1446f496c3968f6ecd",
"updatedAt": "2015-09-17T00:35:50Z"
},
{
"createdAt": "2012-10-24T04:51:42Z",
"description": "Stacked-to-Grouped Bars",
"user": "mbostock",
"gistId": "3943967",
"updatedAt": "2016-04-19T08:51:36Z"
}
],
"meta": [
{
"id": 581,
"type": "node",
"deleted": false
},
{
"id": 453,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
},
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
}
],
"meta": [
{
"id": 586,
"type": "node",
"deleted": false
},
{
"id": 587,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
},
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
}
],
"meta": [
{
"id": 586,
"type": "node",
"deleted": false
},
{
"id": 590,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
},
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
}
],
"meta": [
{
"id": 586,
"type": "node",
"deleted": false
},
{
"id": 591,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
},
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
}
],
"meta": [
{
"id": 586,
"type": "node",
"deleted": false
},
{
"id": 592,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
},
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
}
],
"meta": [
{
"id": 586,
"type": "node",
"deleted": false
},
{
"id": 593,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
},
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
}
],
"meta": [
{
"id": 586,
"type": "node",
"deleted": false
},
{
"id": 594,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
},
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
}
],
"meta": [
{
"id": 587,
"type": "node",
"deleted": false
},
{
"id": 586,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
},
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
}
],
"meta": [
{
"id": 587,
"type": "node",
"deleted": false
},
{
"id": 590,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
},
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
}
],
"meta": [
{
"id": 587,
"type": "node",
"deleted": false
},
{
"id": 591,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
},
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
}
],
"meta": [
{
"id": 587,
"type": "node",
"deleted": false
},
{
"id": 592,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
},
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
}
],
"meta": [
{
"id": 587,
"type": "node",
"deleted": false
},
{
"id": 593,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
},
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
}
],
"meta": [
{
"id": 587,
"type": "node",
"deleted": false
},
{
"id": 594,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "e7f4634cd71473c9658c",
"updatedAt": "null"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 589,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "98cf105e8531ff12013b",
"updatedAt": "null"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 588,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 587,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 586,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 591,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 592,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 593,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
},
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
}
],
"meta": [
{
"id": 590,
"type": "node",
"deleted": false
},
{
"id": 594,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 590,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "e7f4634cd71473c9658c",
"updatedAt": "null"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 589,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "98cf105e8531ff12013b",
"updatedAt": "null"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 588,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 587,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 586,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 592,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 593,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
},
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
}
],
"meta": [
{
"id": 591,
"type": "node",
"deleted": false
},
{
"id": 594,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 591,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 590,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "e7f4634cd71473c9658c",
"updatedAt": "null"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 589,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "98cf105e8531ff12013b",
"updatedAt": "null"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 588,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 587,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 586,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 593,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
},
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
}
],
"meta": [
{
"id": 592,
"type": "node",
"deleted": false
},
{
"id": 594,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 592,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 591,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 590,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "e7f4634cd71473c9658c",
"updatedAt": "null"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 589,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "98cf105e8531ff12013b",
"updatedAt": "null"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 588,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 587,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 586,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
},
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
}
],
"meta": [
{
"id": 593,
"type": "node",
"deleted": false
},
{
"id": 594,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "2015-09-12T22:22:45Z",
"description": "morph experiment #3",
"user": "enjalot",
"gistId": "ebda1656976d90e2a636",
"updatedAt": "2015-10-13T19:25:05Z"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 593,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "2015-09-12T21:09:54Z",
"description": "morph experiment #2",
"user": "enjalot",
"gistId": "02ac156db28e61ff20bb",
"updatedAt": "2015-09-12T23:12:50Z"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 592,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "2015-09-11T23:49:17Z",
"description": "morph experiment #1",
"user": "enjalot",
"gistId": "7492cc85b1311f69ba3f",
"updatedAt": "2015-09-12T21:09:46Z"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 591,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "2015-09-02T21:14:52Z",
"description": "visfest experiment #3",
"user": "enjalot",
"gistId": "f8c41743ca81d7828c3a",
"updatedAt": "2015-09-11T23:49:07Z"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 590,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "e7f4634cd71473c9658c",
"updatedAt": "null"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 589,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "null",
"description": "null",
"user": "null",
"gistId": "98cf105e8531ff12013b",
"updatedAt": "null"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 588,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "2015-09-02T19:54:55Z",
"description": "visfest experiment #2",
"user": "enjalot",
"gistId": "a74519c5a055b2903b41",
"updatedAt": "2015-09-03T01:14:46Z"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 587,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T17:36:09Z",
"description": "viSFest logo: small multiples",
"user": "enjalot",
"gistId": "20d4098ce7ed88dde5c4",
"updatedAt": "2015-10-13T19:31:51Z"
},
{
"createdAt": "2015-09-02T19:41:15Z",
"description": "visfest experiment #1",
"user": "enjalot",
"gistId": "f3225fa363fbaccb8c9e",
"updatedAt": "2015-09-03T01:14:19Z"
}
],
"meta": [
{
"id": 594,
"type": "node",
"deleted": false
},
{
"id": 586,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:20:51Z",
"description": "The Migrant Files: Deaths",
"user": "enjalot",
"gistId": "7ea44d0bc364b6bddbd8",
"updatedAt": "2015-11-02T21:36:29Z"
},
{
"createdAt": "2015-11-11T04:51:46Z",
"description": "The Migrant Files: Money by Route",
"user": "enjalot",
"gistId": "cc818fff7a1049cc0efe",
"updatedAt": "2015-11-11T04:52:06Z"
}
],
"meta": [
{
"id": 595,
"type": "node",
"deleted": false
},
{
"id": 850,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:20:51Z",
"description": "The Migrant Files: Deaths",
"user": "enjalot",
"gistId": "7ea44d0bc364b6bddbd8",
"updatedAt": "2015-11-02T21:36:29Z"
},
{
"createdAt": "2015-11-02T21:34:43Z",
"description": "The Migrant Files: Deportations",
"user": "enjalot",
"gistId": "d6696d28fb47fcf8a537",
"updatedAt": "2015-11-02T21:36:46Z"
}
],
"meta": [
{
"id": 595,
"type": "node",
"deleted": false
},
{
"id": 596,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:20:51Z",
"description": "The Migrant Files: Deaths",
"user": "enjalot",
"gistId": "7ea44d0bc364b6bddbd8",
"updatedAt": "2015-11-02T21:36:29Z"
},
{
"createdAt": "2015-11-02T21:54:14Z",
"description": "The Migrant Files: Money",
"user": "enjalot",
"gistId": "d6a92a077e78fd33316a",
"updatedAt": "2015-11-11T03:53:51Z"
}
],
"meta": [
{
"id": 595,
"type": "node",
"deleted": false
},
{
"id": 597,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:34:43Z",
"description": "The Migrant Files: Deportations",
"user": "enjalot",
"gistId": "d6696d28fb47fcf8a537",
"updatedAt": "2015-11-02T21:36:46Z"
},
{
"createdAt": "2015-11-11T04:51:46Z",
"description": "The Migrant Files: Money by Route",
"user": "enjalot",
"gistId": "cc818fff7a1049cc0efe",
"updatedAt": "2015-11-11T04:52:06Z"
}
],
"meta": [
{
"id": 596,
"type": "node",
"deleted": false
},
{
"id": 850,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:34:43Z",
"description": "The Migrant Files: Deportations",
"user": "enjalot",
"gistId": "d6696d28fb47fcf8a537",
"updatedAt": "2015-11-02T21:36:46Z"
},
{
"createdAt": "2015-11-02T21:20:51Z",
"description": "The Migrant Files: Deaths",
"user": "enjalot",
"gistId": "7ea44d0bc364b6bddbd8",
"updatedAt": "2015-11-02T21:36:29Z"
}
],
"meta": [
{
"id": 596,
"type": "node",
"deleted": false
},
{
"id": 595,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:34:43Z",
"description": "The Migrant Files: Deportations",
"user": "enjalot",
"gistId": "d6696d28fb47fcf8a537",
"updatedAt": "2015-11-02T21:36:46Z"
},
{
"createdAt": "2015-11-02T21:54:14Z",
"description": "The Migrant Files: Money",
"user": "enjalot",
"gistId": "d6a92a077e78fd33316a",
"updatedAt": "2015-11-11T03:53:51Z"
}
],
"meta": [
{
"id": 596,
"type": "node",
"deleted": false
},
{
"id": 597,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:54:14Z",
"description": "The Migrant Files: Money",
"user": "enjalot",
"gistId": "d6a92a077e78fd33316a",
"updatedAt": "2015-11-11T03:53:51Z"
},
{
"createdAt": "2015-11-11T04:51:46Z",
"description": "The Migrant Files: Money by Route",
"user": "enjalot",
"gistId": "cc818fff7a1049cc0efe",
"updatedAt": "2015-11-11T04:52:06Z"
}
],
"meta": [
{
"id": 597,
"type": "node",
"deleted": false
},
{
"id": 850,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:54:14Z",
"description": "The Migrant Files: Money",
"user": "enjalot",
"gistId": "d6a92a077e78fd33316a",
"updatedAt": "2015-11-11T03:53:51Z"
},
{
"createdAt": "2015-11-02T21:34:43Z",
"description": "The Migrant Files: Deportations",
"user": "enjalot",
"gistId": "d6696d28fb47fcf8a537",
"updatedAt": "2015-11-02T21:36:46Z"
}
],
"meta": [
{
"id": 597,
"type": "node",
"deleted": false
},
{
"id": 596,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-02T21:54:14Z",
"description": "The Migrant Files: Money",
"user": "enjalot",
"gistId": "d6a92a077e78fd33316a",
"updatedAt": "2015-11-11T03:53:51Z"
},
{
"createdAt": "2015-11-02T21:20:51Z",
"description": "The Migrant Files: Deaths",
"user": "enjalot",
"gistId": "7ea44d0bc364b6bddbd8",
"updatedAt": "2015-11-02T21:36:29Z"
}
],
"meta": [
{
"id": 597,
"type": "node",
"deleted": false
},
{
"id": 595,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-25T23:12:17Z",
"description": "sparse matrix zoo",
"user": "enjalot",
"gistId": "4bd6d92fd553bb9bac11",
"updatedAt": "2015-10-27T04:37:57Z"
},
{
"createdAt": "2015-02-11T17:45:45Z",
"description": "WebGL + d3.layout.force",
"user": "vicapow",
"gistId": "7f14a531dec565ca0884",
"updatedAt": "2015-08-29T14:15:15Z"
}
],
"meta": [
{
"id": 601,
"type": "node",
"deleted": false
},
{
"id": 600,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-25T23:12:17Z",
"description": "sparse matrix zoo",
"user": "enjalot",
"gistId": "4bd6d92fd553bb9bac11",
"updatedAt": "2015-10-27T04:37:57Z"
},
{
"createdAt": "2012-11-12T21:31:44Z",
"description": "Force-Directed Graph",
"user": "mbostock",
"gistId": "4062045",
"updatedAt": "2016-04-30T00:53:20Z"
}
],
"meta": [
{
"id": 601,
"type": "node",
"deleted": false
},
{
"id": 1,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-25T23:12:17Z",
"description": "sparse matrix zoo",
"user": "enjalot",
"gistId": "4bd6d92fd553bb9bac11",
"updatedAt": "2015-10-27T04:37:57Z"
},
{
"createdAt": "2015-10-28T03:27:43Z",
"description": "sparse matrix zoo: canvas",
"user": "enjalot",
"gistId": "42a531c5d87bfc91036e",
"updatedAt": "2015-10-28T03:30:03Z"
}
],
"meta": [
{
"id": 601,
"type": "node",
"deleted": false
},
{
"id": 602,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-28T03:27:43Z",
"description": "sparse matrix zoo: canvas",
"user": "enjalot",
"gistId": "42a531c5d87bfc91036e",
"updatedAt": "2015-10-28T03:30:03Z"
},
{
"createdAt": "2015-10-25T23:12:17Z",
"description": "sparse matrix zoo",
"user": "enjalot",
"gistId": "4bd6d92fd553bb9bac11",
"updatedAt": "2015-10-27T04:37:57Z"
}
],
"meta": [
{
"id": 602,
"type": "node",
"deleted": false
},
{
"id": 601,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-28T03:27:43Z",
"description": "sparse matrix zoo: canvas",
"user": "enjalot",
"gistId": "42a531c5d87bfc91036e",
"updatedAt": "2015-10-28T03:30:03Z"
},
{
"createdAt": "2015-02-11T17:45:45Z",
"description": "WebGL + d3.layout.force",
"user": "vicapow",
"gistId": "7f14a531dec565ca0884",
"updatedAt": "2015-08-29T14:15:15Z"
}
],
"meta": [
{
"id": 602,
"type": "node",
"deleted": false
},
{
"id": 600,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-28T03:27:43Z",
"description": "sparse matrix zoo: canvas",
"user": "enjalot",
"gistId": "42a531c5d87bfc91036e",
"updatedAt": "2015-10-28T03:30:03Z"
},
{
"createdAt": "2012-11-12T21:31:44Z",
"description": "Force-Directed Graph",
"user": "mbostock",
"gistId": "4062045",
"updatedAt": "2016-04-30T00:53:20Z"
}
],
"meta": [
{
"id": 602,
"type": "node",
"deleted": false
},
{
"id": 1,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-17T23:22:36Z",
"description": "hilbert grid",
"user": "enjalot",
"gistId": "5109a9fbd5f9a7230f17",
"updatedAt": "2015-10-21T02:48:37Z"
},
{
"createdAt": "2014-02-12T01:02:09Z",
"description": "Stable Hilbert curve",
"user": "nitaku",
"gistId": "8947871",
"updatedAt": "2015-08-29T13:56:17Z"
}
],
"meta": [
{
"id": 603,
"type": "node",
"deleted": false
},
{
"id": 238,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-17T23:22:36Z",
"description": "hilbert grid",
"user": "enjalot",
"gistId": "5109a9fbd5f9a7230f17",
"updatedAt": "2015-10-21T02:48:37Z"
},
{
"createdAt": "2015-10-26T23:57:38Z",
"description": "hilbert grid marching",
"user": "enjalot",
"gistId": "77cfa8eb62e34833ae7c",
"updatedAt": "2015-10-27T00:13:48Z"
}
],
"meta": [
{
"id": 603,
"type": "node",
"deleted": false
},
{
"id": 604,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-17T23:22:36Z",
"description": "hilbert grid",
"user": "enjalot",
"gistId": "5109a9fbd5f9a7230f17",
"updatedAt": "2015-10-21T02:48:37Z"
},
{
"createdAt": "2015-10-27T00:06:41Z",
"description": "hilbert grid creeping",
"user": "enjalot",
"gistId": "e662bb2e2c0783ee82f9",
"updatedAt": "2015-10-27T11:58:52Z"
}
],
"meta": [
{
"id": 603,
"type": "node",
"deleted": false
},
{
"id": 605,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-26T23:57:38Z",
"description": "hilbert grid marching",
"user": "enjalot",
"gistId": "77cfa8eb62e34833ae7c",
"updatedAt": "2015-10-27T00:13:48Z"
},
{
"createdAt": "2015-10-17T23:22:36Z",
"description": "hilbert grid",
"user": "enjalot",
"gistId": "5109a9fbd5f9a7230f17",
"updatedAt": "2015-10-21T02:48:37Z"
}
],
"meta": [
{
"id": 604,
"type": "node",
"deleted": false
},
{
"id": 603,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-26T23:57:38Z",
"description": "hilbert grid marching",
"user": "enjalot",
"gistId": "77cfa8eb62e34833ae7c",
"updatedAt": "2015-10-27T00:13:48Z"
},
{
"createdAt": "2014-02-12T01:02:09Z",
"description": "Stable Hilbert curve",
"user": "nitaku",
"gistId": "8947871",
"updatedAt": "2015-08-29T13:56:17Z"
}
],
"meta": [
{
"id": 604,
"type": "node",
"deleted": false
},
{
"id": 238,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-26T23:57:38Z",
"description": "hilbert grid marching",
"user": "enjalot",
"gistId": "77cfa8eb62e34833ae7c",
"updatedAt": "2015-10-27T00:13:48Z"
},
{
"createdAt": "2015-10-27T00:06:41Z",
"description": "hilbert grid creeping",
"user": "enjalot",
"gistId": "e662bb2e2c0783ee82f9",
"updatedAt": "2015-10-27T11:58:52Z"
}
],
"meta": [
{
"id": 604,
"type": "node",
"deleted": false
},
{
"id": 605,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-27T00:06:41Z",
"description": "hilbert grid creeping",
"user": "enjalot",
"gistId": "e662bb2e2c0783ee82f9",
"updatedAt": "2015-10-27T11:58:52Z"
},
{
"createdAt": "2015-10-26T23:57:38Z",
"description": "hilbert grid marching",
"user": "enjalot",
"gistId": "77cfa8eb62e34833ae7c",
"updatedAt": "2015-10-27T00:13:48Z"
}
],
"meta": [
{
"id": 605,
"type": "node",
"deleted": false
},
{
"id": 604,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-27T00:06:41Z",
"description": "hilbert grid creeping",
"user": "enjalot",
"gistId": "e662bb2e2c0783ee82f9",
"updatedAt": "2015-10-27T11:58:52Z"
},
{
"createdAt": "2015-10-17T23:22:36Z",
"description": "hilbert grid",
"user": "enjalot",
"gistId": "5109a9fbd5f9a7230f17",
"updatedAt": "2015-10-21T02:48:37Z"
}
],
"meta": [
{
"id": 605,
"type": "node",
"deleted": false
},
{
"id": 603,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-27T00:06:41Z",
"description": "hilbert grid creeping",
"user": "enjalot",
"gistId": "e662bb2e2c0783ee82f9",
"updatedAt": "2015-10-27T11:58:52Z"
},
{
"createdAt": "2014-02-12T01:02:09Z",
"description": "Stable Hilbert curve",
"user": "nitaku",
"gistId": "8947871",
"updatedAt": "2015-08-29T13:56:17Z"
}
],
"meta": [
{
"id": 605,
"type": "node",
"deleted": false
},
{
"id": 238,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
},
{
"createdAt": "2015-11-23T06:33:22Z",
"description": "Blocks Graph I Readme Mentions",
"user": "micahstubbs",
"gistId": "8a173cfcb9171627c7f1",
"updatedAt": "2015-11-29T07:02:13Z"
}
],
"meta": [
{
"id": 606,
"type": "node",
"deleted": false
},
{
"id": 1107,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
},
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
}
],
"meta": [
{
"id": 606,
"type": "node",
"deleted": false
},
{
"id": 819,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
},
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
}
],
"meta": [
{
"id": 606,
"type": "node",
"deleted": false
},
{
"id": 607,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
},
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
}
],
"meta": [
{
"id": 606,
"type": "node",
"deleted": false
},
{
"id": 608,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
},
{
"createdAt": "2015-10-21T02:39:24Z",
"description": "block wall: thumbnails hilbert",
"user": "enjalot",
"gistId": "7b63fef8ccfbad1f851e",
"updatedAt": "2015-10-24T00:00:51Z"
}
],
"meta": [
{
"id": 606,
"type": "node",
"deleted": false
},
{
"id": 609,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
},
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
}
],
"meta": [
{
"id": 607,
"type": "node",
"deleted": false
},
{
"id": 819,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
},
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
}
],
"meta": [
{
"id": 607,
"type": "node",
"deleted": false
},
{
"id": 606,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
},
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
}
],
"meta": [
{
"id": 607,
"type": "node",
"deleted": false
},
{
"id": 608,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
},
{
"createdAt": "2015-10-21T02:39:24Z",
"description": "block wall: thumbnails hilbert",
"user": "enjalot",
"gistId": "7b63fef8ccfbad1f851e",
"updatedAt": "2015-10-24T00:00:51Z"
}
],
"meta": [
{
"id": 607,
"type": "node",
"deleted": false
},
{
"id": 609,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
},
{
"createdAt": "2015-11-23T05:55:38Z",
"description": "An Experiment in Sketching: Visualizing SF AirBnB Listings",
"user": "Jay-Oh-eN",
"gistId": "f372f1555d1ab41dadd1",
"updatedAt": "2015-12-20T18:27:09Z"
}
],
"meta": [
{
"id": 608,
"type": "node",
"deleted": false
},
{
"id": 1758,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
},
{
"createdAt": "2015-11-23T05:55:38Z",
"description": "An Experiment in Sketching: Visualizing SF AirBnB Listings",
"user": "Jay-Oh-eN",
"gistId": "f372f1555d1ab41dadd1",
"updatedAt": "2015-12-20T18:27:09Z"
}
],
"meta": [
{
"id": 608,
"type": "node",
"deleted": false
},
{
"id": 1758,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
},
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
}
],
"meta": [
{
"id": 608,
"type": "node",
"deleted": false
},
{
"id": 607,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
},
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
}
],
"meta": [
{
"id": 608,
"type": "node",
"deleted": false
},
{
"id": 606,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
},
{
"createdAt": "2015-10-21T02:39:24Z",
"description": "block wall: thumbnails hilbert",
"user": "enjalot",
"gistId": "7b63fef8ccfbad1f851e",
"updatedAt": "2015-10-24T00:00:51Z"
}
],
"meta": [
{
"id": 608,
"type": "node",
"deleted": false
},
{
"id": 609,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T02:39:24Z",
"description": "block wall: thumbnails hilbert",
"user": "enjalot",
"gistId": "7b63fef8ccfbad1f851e",
"updatedAt": "2015-10-24T00:00:51Z"
},
{
"createdAt": "2015-10-21T01:21:28Z",
"description": "block wall: thumbnails only",
"user": "enjalot",
"gistId": "211bd42857358a60a936",
"updatedAt": "2015-11-19T22:45:51Z"
}
],
"meta": [
{
"id": 609,
"type": "node",
"deleted": false
},
{
"id": 608,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T02:39:24Z",
"description": "block wall: thumbnails hilbert",
"user": "enjalot",
"gistId": "7b63fef8ccfbad1f851e",
"updatedAt": "2015-10-24T00:00:51Z"
},
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
}
],
"meta": [
{
"id": 609,
"type": "node",
"deleted": false
},
{
"id": 607,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-21T02:39:24Z",
"description": "block wall: thumbnails hilbert",
"user": "enjalot",
"gistId": "7b63fef8ccfbad1f851e",
"updatedAt": "2015-10-24T00:00:51Z"
},
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
}
],
"meta": [
{
"id": 609,
"type": "node",
"deleted": false
},
{
"id": 606,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-30T17:02:24Z",
"description": "d3.geo.weichel",
"user": "enjalot",
"gistId": "27969219a945e2bd20dc",
"updatedAt": "2015-09-30T18:14:36Z"
},
{
"createdAt": "2015-09-10T17:38:03Z",
"description": "visualizing map distortion",
"user": "enjalot",
"gistId": "bd552e711b8325c64729",
"updatedAt": "2015-09-30T17:02:12Z"
}
],
"meta": [
{
"id": 611,
"type": "node",
"deleted": false
},
{
"id": 467,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-14T20:52:46Z",
"description": "cosine similarity",
"user": "enjalot",
"gistId": "c1f459768d09e0c334c1",
"updatedAt": "2015-10-14T22:53:42Z"
},
{
"createdAt": "2015-09-28T12:35:43Z",
"description": "copy paste aesthetic",
"user": "enjalot",
"gistId": "c741995e777c0e089418",
"updatedAt": "2015-10-02T14:08:20Z"
}
],
"meta": [
{
"id": 612,
"type": "node",
"deleted": false
},
{
"id": 613,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-28T12:35:43Z",
"description": "copy paste aesthetic",
"user": "enjalot",
"gistId": "c741995e777c0e089418",
"updatedAt": "2015-10-02T14:08:20Z"
},
{
"createdAt": "2015-09-14T20:52:46Z",
"description": "cosine similarity",
"user": "enjalot",
"gistId": "c1f459768d09e0c334c1",
"updatedAt": "2015-10-14T22:53:42Z"
}
],
"meta": [
{
"id": 613,
"type": "node",
"deleted": false
},
{
"id": 612,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
},
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
}
],
"meta": [
{
"id": 617,
"type": "node",
"deleted": false
},
{
"id": 618,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
},
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
}
],
"meta": [
{
"id": 617,
"type": "node",
"deleted": false
},
{
"id": 618,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
},
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
}
],
"meta": [
{
"id": 617,
"type": "node",
"deleted": false
},
{
"id": 618,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
},
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
}
],
"meta": [
{
"id": 617,
"type": "node",
"deleted": false
},
{
"id": 618,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
},
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
}
],
"meta": [
{
"id": 618,
"type": "node",
"deleted": false
},
{
"id": 617,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
},
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
}
],
"meta": [
{
"id": 618,
"type": "node",
"deleted": false
},
{
"id": 617,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
},
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
}
],
"meta": [
{
"id": 618,
"type": "node",
"deleted": false
},
{
"id": 617,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-11T23:10:59Z",
"description": "中文: traditional characters",
"user": "enjalot",
"gistId": "a9a3b146cfe63ab68a6b",
"updatedAt": "2015-09-12T11:06:34Z"
},
{
"createdAt": "2015-09-11T06:07:11Z",
"description": "中文: simplified characters",
"user": "enjalot",
"gistId": "618daab0fc5a3ff494d9",
"updatedAt": "2015-09-12T02:46:35Z"
}
],
"meta": [
{
"id": 618,
"type": "node",
"deleted": false
},
{
"id": 617,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-08-19T21:34:30Z",
"description": "matrix: reboot",
"user": "enjalot",
"gistId": "65ae9c0fc95337107448",
"updatedAt": "2016-04-29T10:11:52Z"
},
{
"createdAt": "2015-09-08T21:19:56Z",
"description": "matrix: rotations",
"user": "enjalot",
"gistId": "7b226e90c7338c69606b",
"updatedAt": "2016-04-29T10:15:54Z"
}
],
"meta": [
{
"id": 619,
"type": "node",
"deleted": false
},
{
"id": 906,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-08-19T21:34:30Z",
"description": "matrix: reboot",
"user": "enjalot",
"gistId": "65ae9c0fc95337107448",
"updatedAt": "2016-04-29T10:11:52Z"
},
{
"createdAt": "2015-09-08T21:19:56Z",
"description": "matrix: rotations",
"user": "enjalot",
"gistId": "7b226e90c7338c69606b",
"updatedAt": "2016-04-29T10:15:54Z"
}
],
"meta": [
{
"id": 619,
"type": "node",
"deleted": false
},
{
"id": 906,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-01T06:34:26Z",
"description": "hull padding",
"user": "enjalot",
"gistId": "1fa21f4ccf084f6369d3",
"updatedAt": "2015-10-01T06:48:06Z"
},
{
"createdAt": "2012-01-03T12:46:36Z",
"description": "alpha-shapes aka concave hulls in d3",
"user": "jasondavies",
"gistId": "1554783",
"updatedAt": "2015-09-29T05:47:51Z"
}
],
"meta": [
{
"id": 645,
"type": "node",
"deleted": false
},
{
"id": 610,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
},
{
"createdAt": "2015-11-09T12:05:06Z",
"description": "A SOM Clustering of block Colors - Including HSL & RGB",
"user": "nbremer",
"gistId": "0d2e658691a4f93cad92",
"updatedAt": "2015-11-09T13:14:18Z"
}
],
"meta": [
{
"id": 819,
"type": "node",
"deleted": false
},
{
"id": 820,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
},
{
"createdAt": "2015-11-09T12:05:06Z",
"description": "A SOM Clustering of block Colors - Including HSL & RGB",
"user": "nbremer",
"gistId": "0d2e658691a4f93cad92",
"updatedAt": "2015-11-09T13:14:18Z"
}
],
"meta": [
{
"id": 819,
"type": "node",
"deleted": false
},
{
"id": 820,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
},
{
"createdAt": "2015-11-08T11:47:40Z",
"description": "A SOM Clustering of block Colors - Including RGB",
"user": "nbremer",
"gistId": "4b42493b70dbc9e1ce02",
"updatedAt": "2015-11-09T12:19:10Z"
}
],
"meta": [
{
"id": 819,
"type": "node",
"deleted": false
},
{
"id": 844,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
},
{
"createdAt": "2015-11-08T11:47:40Z",
"description": "A SOM Clustering of block Colors - Including RGB",
"user": "nbremer",
"gistId": "4b42493b70dbc9e1ce02",
"updatedAt": "2015-11-09T12:19:10Z"
}
],
"meta": [
{
"id": 819,
"type": "node",
"deleted": false
},
{
"id": 844,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
},
{
"createdAt": "2015-10-13T23:25:04Z",
"description": "block wall",
"user": "enjalot",
"gistId": "1d679f0322174b65d032",
"updatedAt": "2015-11-24T19:33:54Z"
}
],
"meta": [
{
"id": 819,
"type": "node",
"deleted": false
},
{
"id": 607,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-06T22:21:09Z",
"description": "block colors",
"user": "enjalot",
"gistId": "de262983e3ba0c0f89c1",
"updatedAt": "2015-11-19T20:00:54Z"
},
{
"createdAt": "2015-10-06T22:41:59Z",
"description": "all the blocks",
"user": "enjalot",
"gistId": "6ac67b0d8ed673c9aa61",
"updatedAt": "2015-10-24T16:45:41Z"
}
],
"meta": [
{
"id": 819,
"type": "node",
"deleted": false
},
{
"id": 606,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-11T04:51:46Z",
"description": "The Migrant Files: Money by Route",
"user": "enjalot",
"gistId": "cc818fff7a1049cc0efe",
"updatedAt": "2015-11-11T04:52:06Z"
},
{
"createdAt": "2015-11-02T21:54:14Z",
"description": "The Migrant Files: Money",
"user": "enjalot",
"gistId": "d6a92a077e78fd33316a",
"updatedAt": "2015-11-11T03:53:51Z"
}
],
"meta": [
{
"id": 850,
"type": "node",
"deleted": false
},
{
"id": 597,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-11T04:51:46Z",
"description": "The Migrant Files: Money by Route",
"user": "enjalot",
"gistId": "cc818fff7a1049cc0efe",
"updatedAt": "2015-11-11T04:52:06Z"
},
{
"createdAt": "2015-11-02T21:34:43Z",
"description": "The Migrant Files: Deportations",
"user": "enjalot",
"gistId": "d6696d28fb47fcf8a537",
"updatedAt": "2015-11-02T21:36:46Z"
}
],
"meta": [
{
"id": 850,
"type": "node",
"deleted": false
},
{
"id": 596,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-11T04:51:46Z",
"description": "The Migrant Files: Money by Route",
"user": "enjalot",
"gistId": "cc818fff7a1049cc0efe",
"updatedAt": "2015-11-11T04:52:06Z"
},
{
"createdAt": "2015-11-02T21:20:51Z",
"description": "The Migrant Files: Deaths",
"user": "enjalot",
"gistId": "7ea44d0bc364b6bddbd8",
"updatedAt": "2015-11-02T21:36:29Z"
}
],
"meta": [
{
"id": 850,
"type": "node",
"deleted": false
},
{
"id": 595,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-10-29T20:30:37Z",
"description": "Connected Particles: Lasers",
"user": "enjalot",
"gistId": "c21840890a4790632124",
"updatedAt": "2015-11-13T02:51:30Z"
},
{
"createdAt": "2015-06-09T15:08:02Z",
"description": "Connected Particles",
"user": "mbostock",
"gistId": "157333662ef11c151080",
"updatedAt": "2016-02-09T01:50:18Z"
}
],
"meta": [
{
"id": 900,
"type": "node",
"deleted": false
},
{
"id": 599,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-08T21:19:56Z",
"description": "matrix: rotations",
"user": "enjalot",
"gistId": "7b226e90c7338c69606b",
"updatedAt": "2016-04-29T10:15:54Z"
},
{
"createdAt": "2015-08-19T21:34:30Z",
"description": "matrix: reboot",
"user": "enjalot",
"gistId": "65ae9c0fc95337107448",
"updatedAt": "2016-04-29T10:11:52Z"
}
],
"meta": [
{
"id": 906,
"type": "node",
"deleted": false
},
{
"id": 619,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-09-08T21:19:56Z",
"description": "matrix: rotations",
"user": "enjalot",
"gistId": "7b226e90c7338c69606b",
"updatedAt": "2016-04-29T10:15:54Z"
},
{
"createdAt": "2015-08-19T21:34:30Z",
"description": "matrix: reboot",
"user": "enjalot",
"gistId": "65ae9c0fc95337107448",
"updatedAt": "2016-04-29T10:11:52Z"
}
],
"meta": [
{
"id": 906,
"type": "node",
"deleted": false
},
{
"id": 619,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-18T18:15:55Z",
"description": "aframe + d3 test",
"user": "enjalot",
"gistId": "8be32e6f1f32920ba841",
"updatedAt": "2015-12-19T06:57:36Z"
},
{
"createdAt": "2015-12-21T19:29:07Z",
"description": "aframe + d3 test: text labels",
"user": "enjalot",
"gistId": "1fd196cd99f8d58a56d3",
"updatedAt": "2016-01-23T18:41:57Z"
}
],
"meta": [
{
"id": 964,
"type": "node",
"deleted": false
},
{
"id": 1299,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-18T18:15:55Z",
"description": "aframe + d3 test",
"user": "enjalot",
"gistId": "8be32e6f1f32920ba841",
"updatedAt": "2015-12-19T06:57:36Z"
},
{
"createdAt": "2015-12-21T19:29:07Z",
"description": "aframe + d3 test: text labels",
"user": "enjalot",
"gistId": "1fd196cd99f8d58a56d3",
"updatedAt": "2016-01-23T18:41:57Z"
}
],
"meta": [
{
"id": 964,
"type": "node",
"deleted": false
},
{
"id": 1299,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-01T04:40:58Z",
"description": "dots on a map: setup",
"user": "enjalot",
"gistId": "18cb7a77b2d9de597b86",
"updatedAt": "2016-04-29T10:08:29Z"
},
{
"createdAt": "2016-03-24T22:49:54Z",
"description": "topojson on a map: setup-gl",
"user": "enjalot",
"gistId": "676bfe2b6e67e61e0656",
"updatedAt": "2016-04-11T20:32:40Z"
}
],
"meta": [
{
"id": 1006,
"type": "node",
"deleted": false
},
{
"id": 1868,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-01T04:40:58Z",
"description": "dots on a map: setup",
"user": "enjalot",
"gistId": "18cb7a77b2d9de597b86",
"updatedAt": "2016-04-29T10:08:29Z"
},
{
"createdAt": "2015-12-01T06:10:27Z",
"description": "dots on a map: lasso",
"user": "enjalot",
"gistId": "b95748220bd4752fb33a",
"updatedAt": "2015-12-02T00:45:26Z"
}
],
"meta": [
{
"id": 1006,
"type": "node",
"deleted": false
},
{
"id": 1301,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-01T04:40:58Z",
"description": "dots on a map: setup",
"user": "enjalot",
"gistId": "18cb7a77b2d9de597b86",
"updatedAt": "2016-04-29T10:08:29Z"
},
{
"createdAt": "2015-12-03T18:17:59Z",
"description": "dots on a map: setup-gl",
"user": "enjalot",
"gistId": "dc1ce756527c072885dc",
"updatedAt": "2015-12-06T01:55:32Z"
}
],
"meta": [
{
"id": 1006,
"type": "node",
"deleted": false
},
{
"id": 1300,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-21T19:29:07Z",
"description": "aframe + d3 test: text labels",
"user": "enjalot",
"gistId": "1fd196cd99f8d58a56d3",
"updatedAt": "2016-01-23T18:41:57Z"
},
{
"createdAt": "2015-12-18T18:15:55Z",
"description": "aframe + d3 test",
"user": "enjalot",
"gistId": "8be32e6f1f32920ba841",
"updatedAt": "2015-12-19T06:57:36Z"
}
],
"meta": [
{
"id": 1299,
"type": "node",
"deleted": false
},
{
"id": 964,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-21T19:29:07Z",
"description": "aframe + d3 test: text labels",
"user": "enjalot",
"gistId": "1fd196cd99f8d58a56d3",
"updatedAt": "2016-01-23T18:41:57Z"
},
{
"createdAt": "2015-12-18T18:15:55Z",
"description": "aframe + d3 test",
"user": "enjalot",
"gistId": "8be32e6f1f32920ba841",
"updatedAt": "2015-12-19T06:57:36Z"
}
],
"meta": [
{
"id": 1299,
"type": "node",
"deleted": false
},
{
"id": 964,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-03T18:17:59Z",
"description": "dots on a map: setup-gl",
"user": "enjalot",
"gistId": "dc1ce756527c072885dc",
"updatedAt": "2015-12-06T01:55:32Z"
},
{
"createdAt": "2016-03-24T22:49:54Z",
"description": "topojson on a map: setup-gl",
"user": "enjalot",
"gistId": "676bfe2b6e67e61e0656",
"updatedAt": "2016-04-11T20:32:40Z"
}
],
"meta": [
{
"id": 1300,
"type": "node",
"deleted": false
},
{
"id": 1868,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-03T18:17:59Z",
"description": "dots on a map: setup-gl",
"user": "enjalot",
"gistId": "dc1ce756527c072885dc",
"updatedAt": "2015-12-06T01:55:32Z"
},
{
"createdAt": "2015-12-01T04:40:58Z",
"description": "dots on a map: setup",
"user": "enjalot",
"gistId": "18cb7a77b2d9de597b86",
"updatedAt": "2016-04-29T10:08:29Z"
}
],
"meta": [
{
"id": 1300,
"type": "node",
"deleted": false
},
{
"id": 1006,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-12-01T06:10:27Z",
"description": "dots on a map: lasso",
"user": "enjalot",
"gistId": "b95748220bd4752fb33a",
"updatedAt": "2015-12-02T00:45:26Z"
},
{
"createdAt": "2015-12-01T04:40:58Z",
"description": "dots on a map: setup",
"user": "enjalot",
"gistId": "18cb7a77b2d9de597b86",
"updatedAt": "2016-04-29T10:08:29Z"
}
],
"meta": [
{
"id": 1301,
"type": "node",
"deleted": false
},
{
"id": 1006,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-01-24T02:10:31Z",
"description": "interviewing.io: mean lines",
"user": "enjalot",
"gistId": "4562ac558aa8fb77269c",
"updatedAt": "2016-02-17T18:38:48Z"
},
{
"createdAt": "2016-01-27T23:14:38Z",
"description": "interviewing.io: mean vs stddev",
"user": "enjalot",
"gistId": "78e3a730e77c677e168c",
"updatedAt": "2016-02-17T18:38:24Z"
}
],
"meta": [
{
"id": 1500,
"type": "node",
"deleted": false
},
{
"id": 1501,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-01-24T02:10:31Z",
"description": "interviewing.io: mean lines",
"user": "enjalot",
"gistId": "4562ac558aa8fb77269c",
"updatedAt": "2016-02-17T18:38:48Z"
},
{
"createdAt": "2016-01-27T23:14:38Z",
"description": "interviewing.io: mean vs stddev",
"user": "enjalot",
"gistId": "78e3a730e77c677e168c",
"updatedAt": "2016-02-17T18:38:24Z"
}
],
"meta": [
{
"id": 1500,
"type": "node",
"deleted": false
},
{
"id": 1501,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-01-27T23:14:38Z",
"description": "interviewing.io: mean vs stddev",
"user": "enjalot",
"gistId": "78e3a730e77c677e168c",
"updatedAt": "2016-02-17T18:38:24Z"
},
{
"createdAt": "2016-01-24T02:10:31Z",
"description": "interviewing.io: mean lines",
"user": "enjalot",
"gistId": "4562ac558aa8fb77269c",
"updatedAt": "2016-02-17T18:38:48Z"
}
],
"meta": [
{
"id": 1501,
"type": "node",
"deleted": false
},
{
"id": 1500,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-01-27T23:14:38Z",
"description": "interviewing.io: mean vs stddev",
"user": "enjalot",
"gistId": "78e3a730e77c677e168c",
"updatedAt": "2016-02-17T18:38:24Z"
},
{
"createdAt": "2016-01-24T02:10:31Z",
"description": "interviewing.io: mean lines",
"user": "enjalot",
"gistId": "4562ac558aa8fb77269c",
"updatedAt": "2016-02-17T18:38:48Z"
}
],
"meta": [
{
"id": 1501,
"type": "node",
"deleted": false
},
{
"id": 1500,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-13T21:18:26Z",
"description": "The Counted: simple example",
"user": "enjalot",
"gistId": "fbb43f7cf188fa8f2d15",
"updatedAt": "2016-03-13T21:35:41Z"
},
{
"createdAt": "2016-03-13T21:51:22Z",
"description": "The Counted: simple example",
"user": "TheLady",
"gistId": "9f3884a9f9474e9beedd",
"updatedAt": "2016-03-13T21:51:23Z"
}
],
"meta": [
{
"id": 1650,
"type": "node",
"deleted": false
},
{
"id": 1651,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-13T21:18:26Z",
"description": "The Counted: simple example",
"user": "enjalot",
"gistId": "fbb43f7cf188fa8f2d15",
"updatedAt": "2016-03-13T21:35:41Z"
},
{
"createdAt": "2016-03-13T21:51:22Z",
"description": "The Counted: simple example",
"user": "TheLady",
"gistId": "9f3884a9f9474e9beedd",
"updatedAt": "2016-03-13T21:51:23Z"
}
],
"meta": [
{
"id": 1650,
"type": "node",
"deleted": false
},
{
"id": 1651,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1683,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1685,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1691,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1683,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1685,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
},
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
}
],
"meta": [
{
"id": 1682,
"type": "node",
"deleted": false
},
{
"id": 1691,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1682,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1685,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1691,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1682,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1685,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
},
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
}
],
"meta": [
{
"id": 1683,
"type": "node",
"deleted": false
},
{
"id": 1691,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1683,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1682,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1691,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1683,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1682,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
},
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
}
],
"meta": [
{
"id": 1685,
"type": "node",
"deleted": false
},
{
"id": 1691,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1685,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1683,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1682,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-12T18:56:32Z",
"description": "polygroups visualization",
"user": "enjalot",
"gistId": "fd78a64d3ff9f03907c4",
"updatedAt": "2016-03-15T20:57:39Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1685,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-12T18:31:16Z",
"description": "rigid links",
"user": "mathnathan",
"gistId": "0568c594c55b8951b94c",
"updatedAt": "2016-03-12T18:31:16Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1684,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-12T17:18:07Z",
"description": "rigid links",
"user": "enjalot",
"gistId": "36014350348825ded276",
"updatedAt": "2016-03-12T18:06:30Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1683,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2016-03-04T03:23:05Z",
"description": "Node splitting",
"user": "enjalot",
"gistId": "7402f55e19e1e609f014",
"updatedAt": "2016-03-05T07:11:24Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1682,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-15T19:00:28Z",
"description": "polygroups visualization: activate",
"user": "enjalot",
"gistId": "eb69ef5fbcd2330a7d61",
"updatedAt": "2016-03-23T16:58:46Z"
},
{
"createdAt": "2012-08-01T22:33:52Z",
"description": "Collision Detection",
"user": "mbostock",
"gistId": "3231298",
"updatedAt": "2016-02-09T01:29:43Z"
}
],
"meta": [
{
"id": 1691,
"type": "node",
"deleted": false
},
{
"id": 1019,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-20T00:54:18Z",
"description": "State Grid Minimap",
"user": "enjalot",
"gistId": "1919bd8c2f574caa17ba",
"updatedAt": "2015-11-24T00:22:39Z"
},
{
"createdAt": "2015-04-21T21:55:55Z",
"description": "State Grid",
"user": "mbostock",
"gistId": "29cc3cc4078091fd2115",
"updatedAt": "2016-02-09T01:51:31Z"
}
],
"meta": [
{
"id": 1864,
"type": "node",
"deleted": false
},
{
"id": 831,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-20T00:54:18Z",
"description": "State Grid Minimap",
"user": "enjalot",
"gistId": "1919bd8c2f574caa17ba",
"updatedAt": "2015-11-24T00:22:39Z"
},
{
"createdAt": "2012-03-26T17:16:19Z",
"description": "click-to-zoom via transform",
"user": "mbostock",
"gistId": "2206590",
"updatedAt": "2016-02-09T01:17:03Z"
}
],
"meta": [
{
"id": 1864,
"type": "node",
"deleted": false
},
{
"id": 136,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2015-11-20T00:54:18Z",
"description": "State Grid Minimap",
"user": "enjalot",
"gistId": "1919bd8c2f574caa17ba",
"updatedAt": "2015-11-24T00:22:39Z"
},
{
"createdAt": "2012-03-26T17:16:19Z",
"description": "click-to-zoom via transform",
"user": "mbostock",
"gistId": "2206590",
"updatedAt": "2016-02-09T01:17:03Z"
}
],
"meta": [
{
"id": 1864,
"type": "node",
"deleted": false
},
{
"id": 136,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-29T05:09:57Z",
"description": "Quadtree Tree",
"user": "enjalot",
"gistId": "5606736552160acb3351",
"updatedAt": "2016-03-29T05:50:25Z"
},
{
"createdAt": "2014-02-18T19:54:58Z",
"description": "Quadtree Search",
"user": "mbostock",
"gistId": "9078690",
"updatedAt": "2016-02-09T01:58:39Z"
}
],
"meta": [
{
"id": 1867,
"type": "node",
"deleted": false
},
{
"id": 1788,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-24T22:49:54Z",
"description": "topojson on a map: setup-gl",
"user": "enjalot",
"gistId": "676bfe2b6e67e61e0656",
"updatedAt": "2016-04-11T20:32:40Z"
},
{
"createdAt": "2015-12-03T18:17:59Z",
"description": "dots on a map: setup-gl",
"user": "enjalot",
"gistId": "dc1ce756527c072885dc",
"updatedAt": "2015-12-06T01:55:32Z"
}
],
"meta": [
{
"id": 1868,
"type": "node",
"deleted": false
},
{
"id": 1300,
"type": "node",
"deleted": false
}
]
},
{
"row": [
{
"createdAt": "2016-03-24T22:49:54Z",
"description": "topojson on a map: setup-gl",
"user": "enjalot",
"gistId": "676bfe2b6e67e61e0656",
"updatedAt": "2016-04-11T20:32:40Z"
},
{
"createdAt": "2015-12-01T04:40:58Z",
"description": "dots on a map: setup",
"user": "enjalot",
"gistId": "18cb7a77b2d9de597b86",
"updatedAt": "2016-04-29T10:08:29Z"
}
],
"meta": [
{
"id": 1868,
"type": "node",
"deleted": false
},
{
"id": 1006,
"type": "node",
"deleted": false
}
]
}
]
}
],
"errors": []
}
const canvas = document.querySelector('canvas');
const context = canvas.getContext('2d');
const width = canvas.width;
const height = canvas.height;
const searchRadius = 30;
const color = d3.scaleOrdinal().range(d3.schemeCategory20);
// Create the simulation with a small forceX and Y towards the center
var simulation = d3
.forceSimulation()
.force('charge', d3.forceManyBody())
.force('x', d3.forceX(0).strength(0.003))
.force('y', d3.forceY(0).strength(0.003));
//
// comment out for now, until we have a public neo4j instance running
// https://think-lab.github.io/d/216/#1
//
//
// make the request to neo4j for the data
//
// function fetchGraphSearchResults(queryString) {
// const url = 'http://localhost:7474/db/data/transaction/commit';
// const requestData = JSON.stringify({
// statements: [
// {
// statement: queryString
// }
// ]
// });
// const myHeaders = new Headers();
// myHeaders.append('Content-Type', 'application/json');
// myHeaders.append('Authorization', 'Basic bmVvNGo6YWRtaW4=');
// myHeaders.append('Accept', 'application/json; charset=UTF-8');
// const myInit = {
// method: 'POST',
// body: requestData,
// headers: myHeaders
// };
// const myRequest = new Request(url, myInit);
// fetch(myRequest)
// .then(response => response.json())
// .then(data => parseResponse(data))
// .catch(e => {
// console.log(e);
// });
// }
//
// run a defult query so the user has
// something nice to look at on load
//
// const mapQueryString =
// "MATCH(n)-[:LINKS_TO]-(m) WHERE n.description =~ '.*map.*'RETURN n, m";
// const enjalotQueryString =
// "MATCH(n)-[:LINKS_TO]-(m) WHERE n.user =~ '.*enjalot.*'RETURN n, m";
// fetchGraphSearchResults(enjalotQueryString);
//
// load static neo4j API response data from a file
//
d3.json('neo4j-api-response.json', (error, response) => {
if (error) {
console.error(error);
}
parseResponse(response);
});
//
// cache images
//
const imageCache = {};
//
// parse the response from neo4j
//
function parseResponse(responseData) {
const graph = {
nodes: [],
links: []
};
const nodeHash = {};
console.log('responseData from parseResponse', responseData);
const graphData = responseData.results[0].data;
graphData.forEach(inputLink => {
const source = inputLink.row[0].gistId;
const target = inputLink.row[1].gistId;
if (typeof source !== 'undefined' && typeof target !== 'undefined') {
// collect the nodes in a set
// which builds up a list of unique nodes
inputLink.row.forEach(inputNode => {
nodeHash[inputNode.gistId] = {
id: inputNode.gistId,
createdAt: inputNode.createdAt,
description: inputNode.description,
updatedAt: inputNode.updatedAt,
user: inputNode.user
};
});
// assume that the inputLink rows
// are in [source, target] format
// TODO: check the neo4j REST API docs
// to verify this
graph.links.push({
source,
target,
weight: 1 // for jsLouvain community detection
});
}
});
// add the unique nodes that we've collected
// onto our graph object
Object.keys(nodeHash).forEach(key => {
graph.nodes.push(nodeHash[key]);
});
// call the drawGraph function
// to plot the graph
drawGraph(graph);
}
//
// visualize the graph
//
function drawGraph(graph) {
console.log('graph from drawGraph', graph);
cacheImages(graph, imageCache);
// clear the canvas
context.clearRect(0, 0, canvas.width, canvas.height);
//
// detect communities with jsLouvain
//
const nodeData = graph.nodes.map(function(d) {
return d.id;
});
const linkData = graph.links.map(function(d) {
return { source: d.source, target: d.target, weight: d.weight };
});
const community = jLouvain().nodes(nodeData).edges(linkData);
const result = community();
const nodeIndexHash = {};
graph.nodes.forEach(function(node, i) {
node.group = result[node.id];
nodeIndexHash[node.id] = i;
});
//
//
//
const users = d3
.nest()
.key(d => d.user)
.entries(graph.nodes)
.sort((a, b) => b.values.length - a.values.length);
color.domain(users.map(d => d.key));
//
// process links data to use simple node array index ids
// for source and target values
// to satisfy the assumption of the forceInABox layout
//
graph.links.forEach(link => {
// record the gistId
link.sourceGistId = link.source;
link.targetGistId = link.target;
// now use the node index
link.source = nodeIndexHash[link.source];
link.target = nodeIndexHash[link.target];
});
//
// Instantiate the forceInABox force
//
const groupingForce = forceInABox()
.strength(0.001) // Strength to foci
.template('force') // Either treemap or force
.groupBy('group') // Node attribute to group
.links(graph.links) // The graph links. Must be called after setting the grouping attribute
.size([width, height]); // Size of the chart
// Add your forceInABox to the simulation
simulation
.nodes(graph.nodes)
.force('group', groupingForce)
.force(
'link',
d3
.forceLink(graph.links)
.distance(50)
.strength(groupingForce.getLinkStrength) // default link force will try to join nodes in the same group stronger than if they are in different groups
)
.on('tick', ticked);
// simulation.force('link').links(graph.links);
d3
.select(canvas)
.on('mousemove', mousemoved)
.on('click', clicked)
.call(
d3
.drag()
.container(canvas)
.subject(dragsubject)
.on('start', dragstarted)
.on('drag', dragged)
.on('end', dragended)
);
function ticked() {
context.clearRect(0, 0, width, height);
context.save();
context.translate(width / 2, height / 2);
context.beginPath();
graph.links.forEach(drawLink);
context.strokeStyle = '#aaa';
context.stroke();
users.forEach(user => {
context.beginPath();
user.values.forEach(drawNode);
context.fillStyle = color(user.key);
context.fill();
});
context.restore();
}
function dragsubject() {
return simulation.find(
d3.event.x - width / 2,
d3.event.y - height / 2,
searchRadius
);
}
function mousemoved() {
//
// disable mouse move links for now
//
const a = this.parentNode;
const m = d3.mouse(this);
const d = simulation.find(
m[0] - width / 2,
m[1] - height / 2,
searchRadius
);
if (!d) return a.removeAttribute('href');
a.removeAttribute('title');
a.setAttribute(
'href',
`http://bl.ocks.org/${d.user ? `${d.user}/` : ''}${d.id}`
);
a.setAttribute(
'title',
`${d.id}${d.user ? ` by ${d.user}` : ''}${d.description
? `\n${d.description}`
: ''}`
);
}
function clicked() {
const m = d3.mouse(this);
const d = simulation.find(
m[0] - width / 2,
m[1] - height / 2,
searchRadius
);
const blockUrl = `http://bl.ocks.org/${d.user ? `${d.user}/` : ''}${d.id}`;
window.open(blockUrl);
}
}
function dragstarted() {
if (!d3.event.active) simulation.alphaTarget(0.3).restart();
d3.event.subject.fx = d3.event.subject.x;
d3.event.subject.fy = d3.event.subject.y;
}
function dragged() {
d3.event.subject.fx = d3.event.x;
d3.event.subject.fy = d3.event.y;
}
function dragended() {
if (!d3.event.active) simulation.alphaTarget(0);
d3.event.subject.fx = null;
d3.event.subject.fy = null;
}
// a small function to ensure that
// points stay inside the canvas
function boundScalar(p) {
const halfEdge = 448;
const minP = Math.min(p, halfEdge);
return Math.max(-halfEdge, minP);
}
function drawLink(d) {
context.moveTo(boundScalar(d.source.x), boundScalar(d.source.y));
context.lineTo(boundScalar(d.target.x), boundScalar(d.target.y));
}
function drawNode(d) {
// old solid color nodes
// context.moveTo(d.x + 3, d.y);
// context.arc(d.x, d.y, 3, 0, 2 * Math.PI);
const image = imageCache[d.id];
const iconWidth = 92;
const iconHeight = 48;
const radius = 22;
// draw border to check intution
context.strokeStyle = 'darkgray';
context.strokeRect(-width / 2, -height / 2, width - 2, height - 2);
// const minX = Math.min(d.x, width - radius);
// const nX = Math.max(-width / 2 + radius, minX);
// const minY = Math.min(d.y, height - 2 * radius);
// const nY = Math.max(-height / 2 - radius, minY);
// const minX = Math.min(d.x, 448);
// const nX = Math.max(-448, minX);
// const minY = Math.min(d.y, 448);
// const nY = Math.max(-448, minY);
const nX = boundScalar(d.x);
const nY = boundScalar(d.y);
// if (d.x !== nX || d.y !== nY) {
// console.log('d.x', d.x);
// console.log('d.y', d.y);
// console.log('nX', nX);
// console.log('nY', nY);
// console.log('------------');
// }
// draw images with a circular clip mask
// so that rectangular thumbnail images become
// round node icons
if (typeof image !== 'undefined' && image.height > 0) {
context.save();
context.beginPath();
context.arc(nX, nY, radius, 0, Math.PI * 2, true);
context.closePath();
context.clip();
context.drawImage(
image,
0,
0,
230,
120,
nX - iconWidth / 2,
nY - iconHeight / 2,
iconWidth,
iconHeight
);
context.beginPath();
context.arc(0, 0, 2, 0, Math.PI * 2, true);
context.clip();
context.closePath();
context.restore();
} else {
// gray from the blockbuilder search results page
context.fillStyle = '#EEEEEE';
context.beginPath();
context.arc(nX, nY, radius, 0, Math.PI * 2, true);
context.closePath();
context.fill();
// teal from blockbuilder search results page
context.fillStyle = '#66B5B4';
context.font = '20px Georgia';
context.fillText('?', nX - 5, nY + 8);
}
}
function cacheImages(graph, imageCache) {
graph.nodes.forEach(d => {
const image = new Image();
image.src = `https://bl.ocks.org/${d.user
? `${d.user}/`
: ''}raw/${d.id}/thumbnail.png`;
// image.onload = function() {
// imageCache[d.id] = image;
// };
imageCache[d.id] = image;
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment