Added dependency grouping, but commented out for now until it's needed

This commit is contained in:
Stefan Zermatten
2022-05-02 23:31:10 +02:00
parent abb8890070
commit 2e3f0320f3
7 changed files with 99 additions and 25 deletions

View File

@@ -1,4 +1,4 @@
import buildCreatureComputation from './computation/buildCreatureComputation.js';
import buildCreatureComputation, { buildDependencyGroupComputation } from './computation/buildCreatureComputation.js';
import computeCreatureComputation from './computation/computeCreatureComputation.js';
import writeAlteredProperties from './computation/writeComputation/writeAlteredProperties.js';
import writeScope from './computation/writeComputation/writeScope.js';
@@ -7,21 +7,31 @@ import writeErrors from './computation/writeComputation/writeErrors.js';
export default function computeCreature(creatureId){
if (Meteor.isClient) return;
const computation = buildCreatureComputation(creatureId);
computeComputation(computation, creatureId);
}
// Recompute only some groups of the dependency tree
export function computeCreatureDependencyGroup(depGroupIds, creatureId) {
const computation = buildDependencyGroupComputation(depGroupIds, creatureId);
computeComputation(computation, creatureId);
}
function computeComputation(computation, creatureId) {
try {
computeCreatureComputation(computation);
writeAlteredProperties(computation);
writeScope(creatureId, computation.scope);
} catch (e){
} catch (e) {
const errorText = e.reason || e.message || e.toString();
computation.errors.push({
type: 'crash',
details: {error: errorText},
details: { error: errorText },
});
const logError = {
creatureId,
computeError: errorText,
};
if (e.stack){
if (e.stack) {
logError.location = e.stack.split('\n')[1];
}
console.error(logError);
@@ -29,10 +39,3 @@ export default function computeCreature(creatureId){
writeErrors(creatureId, computation.errors);
}
}
// For now just recompute the whole creature, TODO only recompute a single
// connected section of the depdendency graph
export function computeCreatureDependencyGroup(property){
let creatureId = property.ancestors[0].id;
computeCreature(creatureId);
}