Complete affinity migration from Graph to Layout

Fixes #6
This commit is contained in:
Ian Gulliver
2019-07-13 03:46:54 +00:00
parent aa9035749f
commit 45bf2d689c
4 changed files with 21 additions and 53 deletions

View File

@@ -25,18 +25,9 @@ class LayoutNode {
}
}
resolveAffinity(nodesByGraphNode) {
setAffinity(nodesByGraphNode) {
const INF = 999999;
// TODO: remove
// Transitional: copy GraphNode affinity
for (let aff of this.graphNode_.affinity) {
this.affinity_.push({
node: nodesByGraphNode.get(aff.node),
distanceToWeight: aff.distanceToWeight,
});
}
for (let node of nodesByGraphNode.values()) {
// Weak affinity full mesh
// Keep unassociated subgroups together
@@ -78,6 +69,23 @@ class LayoutNode {
});
}
}
for (let link of this.links) {
// Stronger affinity for links
// Prefer to move toward the target instance
this.addAffinity(link.to, d => d <= 2 ? -INF : d * 11);
link.to.addAffinity(this, d => d <= 2 ? -INF : d * 9);
}
// Affinity for groups
for (let group of this.groups) {
if (!group.hasGraphGroup()) {
continue;
}
for (let node of group.nodes) {
this.addAffinity(node, d => d * 100);
}
}
}
addAffinity(node, distanceToWeight) {