Model-Atlas / js /sigma /sigma.parseJson.js
Eliahu's picture
Added code and data for compressed layouts, new layout of large NLP cluster, and additional information
7e48311
raw
history blame
1.82 kB
// // Scott Hale (Oxford Internet Institute)
// // Requires sigma.js and jquery to be loaded
// // based on parseGexf from Mathieu Jacomy @ Sciences Po M�dialab & WebAtlas
sigma.publicPrototype.parseJson = function(gzippedJsonPath, callback) {
var sigmaInstance = this;
// Use XMLHttpRequest for binary data
var xhr = new XMLHttpRequest();
xhr.open('GET', gzippedJsonPath, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function() {
if (xhr.status === 200) {
try {
// Decompress the gzipped data using pako
var inflatedData = pako.inflate(new Uint8Array(xhr.response));
// Convert binary data to string
var jsonString = new TextDecoder('utf-8').decode(inflatedData);
// Parse the JSON
var jsonData = JSON.parse(jsonString);
// Process nodes
for (var i = 0; i < jsonData.nodes.length; i++) {
var id = jsonData.nodes[i].id;
sigmaInstance.addNode(id, jsonData.nodes[i]);
}
// Process edges
for (var j = 0; j < jsonData.edges.length; j++) {
var edgeNode = jsonData.edges[j];
var source = edgeNode.source;
var target = edgeNode.target;
var label = edgeNode.label;
var eid = edgeNode.id;
sigmaInstance.addEdge(eid, source, target, edgeNode);
}
// Call the callback function if provided
if (callback) callback.call(sigmaInstance);
} catch (error) {
console.error("Error processing gzipped JSON:", error);
}
} else {
console.error("Error fetching gzipped JSON. Status:", xhr.status);
}
};
xhr.onerror = function() {
console.error("Network error while fetching gzipped JSON");
};
xhr.send();
};