@kgdata/visualgraph
Version:
visualgraph
62 lines (59 loc) • 1.36 kB
text/typescript
type EDGE = {
source: string;
target: string;
};
export const computeNodesWeight = (edges: EDGE[]) => {
const ret = {};
edges.forEach((edge: EDGE) => {
const { source, target } = edge;
for (const iterator of [source, target]) {
if (ret[iterator]) {
ret[iterator] += ret[iterator];
} else {
ret[iterator] = 1;
}
}
});
return ret;
};
export const getNodeWeight = (
id: string,
idWeightMap: Record<string, number | undefined> = {},
) => {
return idWeightMap[id] || 0;
};
export const computeNodeSize = (
maxSize: number,
baseSize: number,
weight: number,
ratio: number = 0.2,
) => {
return Math.min(baseSize + ratio * weight, maxSize);
};
export function countByEntityType(
list: { ooId: string | number; ooName: any }[] = [],
) {
let ret = {};
list.forEach(
(item: { ooId: string | number; ooName: any; name?: string }) => {
if (!ret[item.ooId]) {
ret = {
...ret,
[item.ooId]: {
name: item.ooName,
value: 1,
},
};
} else {
ret = {
...ret,
[item.ooId]: {
name: item.ooName || item?.name,
value: ret[item.ooId].value + 1,
},
};
}
},
);
return ret;
}