Improved dependencies-only recalculations and fixed many calculation bugs

This commit is contained in:
Stefan Zermatten
2021-02-04 16:16:51 +02:00
parent 6d1e3f078c
commit 280f30dab5
16 changed files with 175 additions and 67 deletions

View File

@@ -1,4 +1,4 @@
import { forOwn, has } from 'lodash';
import { forOwn, has, union } from 'lodash';
export default function computeLevels(memo){
computeClassLevels(memo);
@@ -8,7 +8,10 @@ export default function computeLevels(memo){
function computeClassLevels(memo){
forOwn(memo.classLevelsById, classLevel => {
// class levels are mutually dependent
classLevel.dependencies.push(Object.keys(memo.classLevelsById));
classLevel.dependencies = union(
classLevel.dependencies,
Object.keys(memo.classLevelsById)
);
let name = classLevel.variableName;
let stat = memo.statsByVariableName[name];
if (!stat){
@@ -43,8 +46,18 @@ function computeTotalLevel(memo){
for (let name in memo.classes){
let cls = memo.classes[name];
level += cls.level || 0;
if (cls._id) currentLevel.dependencies.push(cls._id);
if (cls.dependencies) currentLevel.dependencies.push(...cls.dependencies);
if (cls._id){
currentLevel.dependencies = union(
currentLevel.dependencies,
[cls._id]
)
}
if (cls.dependencies){
currentLevel.dependencies = union(
currentLevel.dependencies,
cls.dependencies,
)
}
}
currentLevel.value = level;
}