added todo
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import findAncestorByType from '/imports/api/engine/computation/utility/findAncestorByType.js';
|
||||
import { traverse } from '/imports/parser/resolve.js';
|
||||
|
||||
export default function linkCalculationDependencies(dependencyGraph, prop, {propsById}){
|
||||
export default function linkCalculationDependencies(dependencyGraph, prop, { propsById }) {
|
||||
prop._computationDetails.calculations.forEach(calcObj => {
|
||||
// Store resolved ancestors
|
||||
const memo = {
|
||||
@@ -16,12 +16,13 @@ export default function linkCalculationDependencies(dependencyGraph, prop, {prop
|
||||
// Skip nodes that aren't symbols or accessors
|
||||
if (node.parseType !== 'symbol' && node.parseType !== 'accessor') return;
|
||||
// Link ancestor references as direct property dependencies
|
||||
if (node.name[0] === '#'){
|
||||
if (node.name[0] === '#') {
|
||||
let ancestorProp = getAncestorProp(
|
||||
node.name.slice(1), memo, prop, propsById
|
||||
);
|
||||
if (!ancestorProp) return;
|
||||
// Link the ancestor prop as a direct dependency
|
||||
// TODO: we might be referencing a calculation sub-field, depend on that instead
|
||||
dependencyGraph.addLink(
|
||||
calcNodeId, ancestorProp._id, 'ancestorReference'
|
||||
);
|
||||
@@ -34,16 +35,16 @@ export default function linkCalculationDependencies(dependencyGraph, prop, {prop
|
||||
});
|
||||
// Store the resolved ancestors in this calculation's local scope
|
||||
if (memo.ancestors) {
|
||||
calcObj._localScope = { ...calcObj._localScope, ...memo.ancestors};
|
||||
calcObj._localScope = { ...calcObj._localScope, ...memo.ancestors };
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function getAncestorProp(type, memo, prop, propsById){
|
||||
if (memo.ancestors && memo.ancestors['#' + type]){
|
||||
function getAncestorProp(type, memo, prop, propsById) {
|
||||
if (memo.ancestors && memo.ancestors['#' + type]) {
|
||||
return memo.ancestors['#' + type];
|
||||
} else {
|
||||
var ancestorProp = findAncestorByType( prop, type, propsById );
|
||||
var ancestorProp = findAncestorByType(prop, type, propsById);
|
||||
if (!memo.ancestors) memo.ancestors = {};
|
||||
memo.ancestors['#' + type] = ancestorProp;
|
||||
return ancestorProp;
|
||||
|
||||
Reference in New Issue
Block a user