1
0
Fork 0
mirror of https://github.com/anyproto/anytype-ts.git synced 2025-06-09 17:45:02 +09:00

fix graph filtering

This commit is contained in:
Andrew Simachev 2024-01-24 20:08:07 +01:00
parent 291ec9b5fc
commit 163ef36b19
No known key found for this signature in database
GPG key ID: 49A163D0D14E6FD8

23
dist/workers/graph.js vendored
View file

@ -196,23 +196,17 @@ updateForces = () => {
// Filter links
if (!settings.link) {
edges = edges.filter(d => d.type != EdgeType.Link);
updateOrphans();
nodes = nodes.filter(d => !d.linkCnt);
};
// Filter relations
if (!settings.relation) {
edges = edges.filter(d => d.type != EdgeType.Relation);
updateOrphans();
nodes = nodes.filter(d => !d.relationCnt);
};
// Filte local only edges
if (settings.local) {
edges = edges.filter(d => (d.source == rootId) || (d.target == rootId));
edges = getEdgesByNodeId(rootId);
const nodeIds = util.arrayUnique([ rootId ].concat(edges.map(d => d.source)).concat(edges.map(d => d.target)));
nodes = nodes.filter(d => nodeIds.includes(d.id));
@ -221,8 +215,6 @@ updateForces = () => {
let map = getNodeMap();
edges = edges.filter(d => map.get(d.source) && map.get(d.target));
//updateOrphans();
// Filter orphans
if (!settings.orphan) {
nodes = nodes.filter(d => !d.isOrphan || d.forceShow);
@ -293,11 +285,12 @@ updateTheme = ({ theme }) => {
updateOrphans = () => {
nodes = nodes.map(d => {
const edgeList = edges.filter(it => (it.source == d.id) || (it.target == d.id));
const edges = getEdgesByNodeId(d.id);
d.isOrphan = !edgeList.length;
d.linkCnt = edgeList.filter(it => it.type == EdgeType.Link).length;
d.relationCnt = edgeList.filter(it => it.type == EdgeType.Relation).length;
d.isOrphan = !edges.length;
d.linkCnt = edges.filter(it => it.type == EdgeType.Link).length;
d.relationCnt = edges.filter(it => it.type == EdgeType.Relation).length;
return d;
});
};
@ -773,6 +766,10 @@ const getNodeByCoords = (x, y) => {
return simulation.find(transform.invertX(x), transform.invertY(y), 10 / transform.k);
};
const getEdgesByNodeId = (id) => {
return edges.filter(d => (d.source == id) || (d.target == id));
};
const getRadius = (d) => {
let k = 1;
if (settings.icon && images[d.src] && (transform.k >= transformThresholdHalf)) {