Started removing scope from creature doc

This commit is contained in:
Stefan Zermatten
2022-06-24 10:50:35 +02:00
parent b2f89eceee
commit 9dd84a83d2
2 changed files with 1 additions and 73 deletions

View File

@@ -1,73 +0,0 @@
import { union } from "lodash";
export function assignDependencyGroups(graph) {
console.log('assigning dep group ids');
graph.forEachLink(function (link) {
console.dir(link);
});
// Iterate through all the nodes
graph.forEachNode(node => {
if (node._depGroupVisited) {
return;
}
// DFS all the connected nodes to this node, mark visited, put in a group,
// store the lowest ordered id
const group = [];
const stack = [node];
let top, lowestOrderId, lowestOrder;
while (stack.length) {
top = stack.pop();
if (top._depGroupVisited) continue;
if (top.data?._id && (
lowestOrderId === undefined ||
top.data?.order < lowestOrder
)) {
lowestOrderId = top.data._id;
lowestOrder = top.data.order;
}
group.push(top)
top._depGroupVisited = true;
graph.forEachLinkedNode(top.id, linkedNode => stack.push(linkedNode));
}
// Assign group id
group.forEach(node => {
if (!node.data?._id) return;
if (group.length > 1) {
node.data.depGroupId = lowestOrderId;
} else {
delete node.data.depGroupId;
}
});
});
}
export default function assignDependencyGroups2(graph) {
const groups = new Set();
graph.forEachLink(function (link) {
const from = graph.getNode(link.fromId);
const to = graph.getNode(link.toId);
let depGroup;
if (from._depGroup) {
depGroup = from._depGroup;
groups.delete(to._depGroup);
} else if (to._depGroup) {
depGroup = to._depGroup;
} else {
depGroup = {};
groups.add(depGroup);
}
depGroup.nodes = union(from._depGroup?.nodes, to._depGroup?.nodes, [from, to])
from._depGroup = depGroup;
to._depGroup = depGroup;
});
groups.forEach(g => {
if (!g.nodes.length) return;
const rootId = g.nodes[0].id;
g.nodes.forEach(n => {
if (!n.data?._id) return;
n.data.depGroupId = rootId;
});
});
}

View File

@@ -107,6 +107,7 @@ class LoadedCreature {
}
changeMap(id, fields, map) {
const doc = map.get(id);
if (!doc) return;
for (let key in fields) {
if (key === undefined) {
delete doc[key];