Prevent jump in hte beginning, and format code

This commit is contained in:
Ruben van de Ven 2021-03-13 13:29:40 +01:00
parent d471ab197a
commit f348decd02

View file

@ -84,7 +84,7 @@ function splitText(text) {
}; };
function getTitle(obj) { function getTitle(obj) {
if(obj.parent) { if (obj.parent) {
return "sub of " + obj.parent.split('#', 1)[0].replace(/_/g, " ") return "sub of " + obj.parent.split('#', 1)[0].replace(/_/g, " ")
} }
return obj['@id'].split('#', 1)[0].replace(/_/g, " ") return obj['@id'].split('#', 1)[0].replace(/_/g, " ")
@ -129,7 +129,7 @@ function buildGraph(data) {
.iterations(2) // increase to make more rigid .iterations(2) // increase to make more rigid
) )
.force("charge", d3.forceManyBody() .force("charge", d3.forceManyBody()
.strength(-50) .strength(-40)
) )
.force("center", d3.forceCenter(width / 2, height / 2)) .force("center", d3.forceCenter(width / 2, height / 2))
.force("collision", d3.forceCollide(function (d) { .force("collision", d3.forceCollide(function (d) {
@ -300,6 +300,13 @@ function buildGraph(data) {
}); });
// simulate the first bit without drawing, so we don't have the 'jumping' graph in the beginning
for (var i = 0, n = Math.ceil(Math.log(simulation.alphaMin()) / Math.log(1 - simulation.alphaDecay())); i < n; ++i) {
simulation.tick();
}
return svg.node(); return svg.node();
} }
@ -333,7 +340,7 @@ const drag = simulation => {
.on("end", dragended); .on("end", dragended);
}; };
function selectNode(evt, node, d3Node){ function selectNode(evt, node, d3Node) {
console.log(evt, node, d3Node); console.log(evt, node, d3Node);
document.querySelectorAll('svg .node').forEach(n => n.classList.remove('selected')); document.querySelectorAll('svg .node').forEach(n => n.classList.remove('selected'));
d3Node._groups[0][node.index].classList.add('selected'); d3Node._groups[0][node.index].classList.add('selected');
@ -344,7 +351,7 @@ function selectNode(evt, node, d3Node){
const url = getUrl(node); const url = getUrl(node);
const hrefEl = infoEl.querySelector('.nodeHref'); const hrefEl = infoEl.querySelector('.nodeHref');
hrefEl.textContent = getTitle(node); hrefEl.textContent = getTitle(node);
hrefEl.setAttribute('href',url); hrefEl.setAttribute('href', url);
infoEl.querySelector('.nodeContents').src = url; infoEl.querySelector('.nodeContents').src = url;
} }