diff --git a/LogarithmPlotter/i18n/lp_de.ts b/LogarithmPlotter/i18n/lp_de.ts index c4e503e..6b28082 100644 --- a/LogarithmPlotter/i18n/lp_de.ts +++ b/LogarithmPlotter/i18n/lp_de.ts @@ -252,32 +252,32 @@ ExpressionEditor - + Object Properties Objekteigenschaften - + Variables Variablen - + Constants Konstanten - + Functions Funktion - + Executable Objects Funktionsobjekte - + Objects Objekte @@ -795,12 +795,12 @@ Diese Einstellungen können jederzeit über das Menü "Einstellungen" editproperty - + %1 of %2 %3 changed from "%4" to "%5". %1 von %2 %3 wurde von "%4" auf "%5" geändert. - + %1 of %2 changed from %3 to %4. %1 von %2 wurde von %3 auf %4 geändert. @@ -809,7 +809,7 @@ Diese Einstellungen können jederzeit über das Menü "Einstellungen" error - + Cannot find property %1 of object %2. Eigenschaft %1 von Objekt %2 kann nicht gefunden werden. @@ -824,129 +824,139 @@ Diese Einstellungen können jederzeit über das Menü "Einstellungen" %1 ist keine Formel. - - - + + + Invalid expression. Ungültiger Ausdruck. - + Invalid expression (parity). Ungültiger Ausdruck (Parität). - + Unknown character "%1". Unbekanntes Schriftzeichen "%1". - - + + Illegal escape sequence: %1. Unzulässige Escapesequenz: %1. - - + + Parse error [%1:%2]: %3 Analysefehler [%1:%2]: %3 - + Expected %1 Erwartet %1 - + Unexpected %1 Unerwartetes %1 - + Function definition is not permitted. Funktionsdefinition ist nicht erlaubt. - + Expected variable for assignment. Erwartete Variable für Zuweisung. - + Unexpected ".": member access is not permitted Unerwartetes ".": Mitgliederzugriff ist nicht erlaubt - + Unexpected "[]": arrays are disabled. Unerwartetes "[]": Arrays sind deaktiviert. - + Unexpected symbol: %1. Unerwartetes Symbol: %1. - + First argument to map is not a function. Der erste Parameter von map ist keine Formel. - + Second argument to map is not an array. Der zweite Parameter von map ist kein Array. - + First argument to fold is not a function. Der erste Parameter für fold ist keine Formel. - + Second argument to fold is not an array. Der zweite Parameter für fold ist kein Array. - + First argument to filter is not a function. Der erste Parameter für filter ist keine Formel. - + Second argument to filter is not an array. Der zweite Parameter von filter ist kein Array. - + Second argument to indexOf is not a string or array. Der zweite Parameter von indexOf ist kein String oder Array. - + Second argument to join is not an array. Der zweite Parameter von join ist kein Array. - + EOF Ende des Ausdrucks - + No object found with names %1. Kein Objekt mit Namen %1 gefunden. - + No object found with name %1. Kein Objekt mit dem Namen %1 gefunden. - + Object cannot be dependent on itself. Ein Objekt kann nicht von sich selbst abhängen. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -1085,114 +1095,114 @@ Bitte vergewissern Sie sich, dass Ihre LaTeX-Installation korrekt ist, und melde parameters - + above ↑ Über - + below ↓ Unter - - + + left ← Links - - + + right → Rechts - + above-left ↖ Oben links - + above-right ↗ Oben rechts - + below-left ↙ Unten links - + below-right ↘ Unten rechts - + center >|< Zentrum - + top ↑ Über - + bottom ↓ Unter - + top-left ↖ Oben links - + top-right ↗ Oben rechts - + bottom-left ↙ Unten links - + bottom-right ↘ Unten rechts - + application Anwendung - + function Funktion - + high Hoch - + low Tief - + Next to target Neben dem Ziel - + With label Mit Etikett - + Hidden Versteckt diff --git a/LogarithmPlotter/i18n/lp_en.ts b/LogarithmPlotter/i18n/lp_en.ts index 14ab20f..9471a63 100644 --- a/LogarithmPlotter/i18n/lp_en.ts +++ b/LogarithmPlotter/i18n/lp_en.ts @@ -252,32 +252,32 @@ ExpressionEditor - + Object Properties Object Properties - + Variables Variables - + Constants Constants - + Functions Functions - + Executable Objects Function Objects - + Objects Objects @@ -795,12 +795,12 @@ These settings can be changed at any time from the "Settings" menu. editproperty - + %1 of %2 %3 changed from "%4" to "%5". %1 of %2 %3 changed from "%4" to "%5". - + %1 of %2 changed from %3 to %4. %1 of %2 changed from %3 to %4. @@ -809,7 +809,7 @@ These settings can be changed at any time from the "Settings" menu.error - + Cannot find property %1 of object %2. Cannot find property %1 of object %2. @@ -824,129 +824,139 @@ These settings can be changed at any time from the "Settings" menu.%1 is not a function. - - - + + + Invalid expression. Invalid expression. - + Invalid expression (parity). Invalid expression (parity). - + Unknown character "%1". Unknown character "%1". - - + + Illegal escape sequence: %1. Illegal escape sequence: %1. - - + + Parse error [%1:%2]: %3 Parse error [%1:%2]: %3 - + Expected %1 Expected %1 - + Unexpected %1 Unexpected %1 - + Function definition is not permitted. Function definition is not permitted. - + Expected variable for assignment. Expected variable for assignment. - + Unexpected ".": member access is not permitted Unexpected ".": member access is not permitted - + Unexpected "[]": arrays are disabled. Unexpected "[]": arrays are disabled. - + Unexpected symbol: %1. Unexpected symbol: %1. - + First argument to map is not a function. First argument to map is not a function. - + Second argument to map is not an array. Second argument to map is not an array. - + First argument to fold is not a function. First argument to fold is not a function. - + Second argument to fold is not an array. Second argument to fold is not an array. - + First argument to filter is not a function. First argument to filter is not a function. - + Second argument to filter is not an array. Second argument to filter is not an array. - + Second argument to indexOf is not a string or array. Second argument to indexOf is not a string or array. - + Second argument to join is not an array. Second argument to join is not an array. - + EOF End of expression - + No object found with names %1. No object found with names %1. - + No object found with name %1. No object found with name %1. - + Object cannot be dependent on itself. Object cannot be dependent on itself. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -1085,114 +1095,114 @@ Please make sure your LaTeX installation is correct and report a bug if so. parameters - + above ↑ Above - + below ↓ Below - - + + left ← Left - - + + right → Right - + above-left ↖ Above left - + above-right ↗ Above right - + below-left ↙ Below left - + below-right ↘ Below right - + center >|< Center - + top ↑ Top - + bottom ↓ Bottom - + top-left ↖ Top left - + top-right ↗ Top right - + bottom-left ↙ Bottom left - + bottom-right ↘ Bottom right - + application Application - + function Function - + high High - + low Low - + Next to target Next to target - + With label With label - + Hidden Hidden diff --git a/LogarithmPlotter/i18n/lp_es.ts b/LogarithmPlotter/i18n/lp_es.ts index 992dd8c..b07230b 100644 --- a/LogarithmPlotter/i18n/lp_es.ts +++ b/LogarithmPlotter/i18n/lp_es.ts @@ -221,32 +221,32 @@ ExpressionEditor - + Object Properties - + Variables - + Constants - + Functions - + Executable Objects - + Objects @@ -743,12 +743,12 @@ These settings can be changed at any time from the "Settings" menu. editproperty - + %1 of %2 %3 changed from "%4" to "%5". - + %1 of %2 changed from %3 to %4. @@ -757,7 +757,7 @@ These settings can be changed at any time from the "Settings" menu.error - + Cannot find property %1 of object %2. @@ -772,129 +772,139 @@ These settings can be changed at any time from the "Settings" menu. - - - + + + Invalid expression. - + Invalid expression (parity). - + Unknown character "%1". - - + + Illegal escape sequence: %1. - - + + Parse error [%1:%2]: %3 - + Expected %1 - + Unexpected %1 - + Function definition is not permitted. - + Expected variable for assignment. - + Unexpected ".": member access is not permitted - + Unexpected "[]": arrays are disabled. - + Unexpected symbol: %1. - + First argument to map is not a function. - + Second argument to map is not an array. - + First argument to fold is not a function. - + Second argument to fold is not an array. - + First argument to filter is not a function. - + Second argument to filter is not an array. - + Second argument to indexOf is not a string or array. - + Second argument to join is not an array. - + EOF - + No object found with names %1. - + No object found with name %1. - + Object cannot be dependent on itself. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -994,114 +1004,114 @@ Please make sure your latex installation is correct and report a bug if so. parameters - + above - + below - - + + left - - + + right - + above-left - + above-right - + below-left - + below-right - + center - + top - + bottom - + top-left - + top-right - + bottom-left - + bottom-right - + application - + function - + high - + low - + Next to target - + With label - + Hidden diff --git a/LogarithmPlotter/i18n/lp_fr.ts b/LogarithmPlotter/i18n/lp_fr.ts index fdb96bd..b3fa2a5 100644 --- a/LogarithmPlotter/i18n/lp_fr.ts +++ b/LogarithmPlotter/i18n/lp_fr.ts @@ -254,32 +254,32 @@ ExpressionEditor - + Object Properties Propriétés de l'objet - + Variables Variables - + Constants Constantes - + Functions Fonctions - + Executable Objects Objets fonction - + Objects Objets @@ -804,12 +804,12 @@ These settings can always be changed at any time from the "Settings" m editproperty - + %1 of %2 %3 changed from "%4" to "%5". %1 de %2 %3 modifiée de "%4" à "%5". - + %1 of %2 changed from %3 to %4. %1 de %2 modifiée de %3 à %4. @@ -818,7 +818,7 @@ These settings can always be changed at any time from the "Settings" m error - + Cannot find property %1 of object %2. Impossible de trouver la propriété %1 de l'objet %2. @@ -833,129 +833,139 @@ These settings can always be changed at any time from the "Settings" m %1 n'est pas une fonction. - - - + + + Invalid expression. Formule invalide. - + Invalid expression (parity). Formule invalide (parité). - + Unknown character "%1". Le caractère "%1" est inconnu. - - + + Illegal escape sequence: %1. Séquence d'échappement illégale : %1. - - + + Parse error [%1:%2]: %3 Erreur de syntaxe [%1:%2] : %3 - + Expected %1 %1 attendu - + Unexpected %1 %1 inattendu - + Function definition is not permitted. La définition de fonctions n'est pas autorisée. - + Expected variable for assignment. Une variable est attendue pour l'affectation. - + Unexpected ".": member access is not permitted "." inattendu : l'accès aux propriétés n'est pas autorisé - + Unexpected "[]": arrays are disabled. "[]" inattendu : les tableaux sont désactivés. - + Unexpected symbol: %1. Symbole inconnu : %1. - + First argument to map is not a function. Le premier argument de map n'est pas une fonction. - + Second argument to map is not an array. Le deuxième argument de map n'est pas un tableau. - + First argument to fold is not a function. Le premier argument de fold n'est pas une fonction. - + Second argument to fold is not an array. Le deuxième argument de fold n'est pas un tableau. - + First argument to filter is not a function. Le premier argument de filter n'est pas une fonction. - + Second argument to filter is not an array. Le deuxième argument de filter n'est pas un tableau. - + Second argument to indexOf is not a string or array. Le deuxième argument de indexOf n'est ni chaîne de caractères ni un tableau. - + Second argument to join is not an array. Le deuxième argument de join n'est pas un tableau. - + EOF Fin de la formule - + No object found with names %1. Aucun objet trouvé ayant pour noms %1. - + No object found with name %1. Aucun objet avec le nom %1 n'a été trouvé. - + Object cannot be dependent on itself. Un objet ne peut pas dépendre de lui-même. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -1094,114 +1104,114 @@ Vérifiez que votre installation de LaTeX est correcte et signalez un bogue si c parameters - + above ↑ Au dessus - + below ↓ En dessous - - + + left ← À gauche - - + + right → À droite - + above-left ↖ Au dessus à gauche - + above-right ↗ Au dessus à droite - + below-left ↙ En dessous à gauche - + below-right ↘ En dessous à droite - + center >|< Centré - + top ↑ Au dessus - + bottom ↓ En dessous - + top-left ↖ Au dessus à gauche - + top-right ↗ Au dessus à droite - + bottom-left ↙ En dessous à gauche - + bottom-right ↘ En dessous à droite - + application Application - + function Fonction - + high Haut - + low Bas - + Next to target A côté de la cible - + With label Avec l'étiquette - + Hidden Caché diff --git a/LogarithmPlotter/i18n/lp_hu.ts b/LogarithmPlotter/i18n/lp_hu.ts index 45bcef3..e3b5b8c 100644 --- a/LogarithmPlotter/i18n/lp_hu.ts +++ b/LogarithmPlotter/i18n/lp_hu.ts @@ -252,32 +252,32 @@ ExpressionEditor - + Object Properties - + Variables - + Constants - + Functions Függvények - + Executable Objects - + Objects Tárgyak @@ -795,12 +795,12 @@ Ezek a beállítások bármikor módosíthatók a „Beállítások” menüben. editproperty - + %1 of %2 %3 changed from "%4" to "%5". %1/%2 %3 megváltozott. Régi érték: %4, új érték: %5. - + %1 of %2 changed from %3 to %4. %1/%2 megváltozott. Régi érték: %3, új érték: %4. @@ -809,7 +809,7 @@ Ezek a beállítások bármikor módosíthatók a „Beállítások” menüben. error - + Cannot find property %1 of object %2. @@ -824,129 +824,139 @@ Ezek a beállítások bármikor módosíthatók a „Beállítások” menüben. - - - + + + Invalid expression. - + Invalid expression (parity). - + Unknown character "%1". - - + + Illegal escape sequence: %1. - - + + Parse error [%1:%2]: %3 - + Expected %1 - + Unexpected %1 - + Function definition is not permitted. - + Expected variable for assignment. - + Unexpected ".": member access is not permitted - + Unexpected "[]": arrays are disabled. - + Unexpected symbol: %1. - + First argument to map is not a function. - + Second argument to map is not an array. - + First argument to fold is not a function. - + Second argument to fold is not an array. - + First argument to filter is not a function. - + Second argument to filter is not an array. - + Second argument to indexOf is not a string or array. - + Second argument to join is not an array. - + EOF - + No object found with names %1. - + No object found with name %1. - + Object cannot be dependent on itself. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -1078,114 +1088,114 @@ Kérjük, ellenőrizze, hogy a LaTeX telepítése helyes-e, és ha igen, jelents parameters - + above ↑ Felett - + below ↓ Alatt - - + + left ← Balra - - + + right → Jobbra - + above-left ↖ Felett, balra - + above-right ↗ Felett, jobbra - + below-left ↙ Alatt, balra - + below-right ↘ Alatt, jobbra - + center >|< Középre - + top ↑ Felső - + bottom ↓ Alsó - + top-left ↖ Bal felső - + top-right ↗ Jobb felső - + bottom-left ↙ Bal alsó - + bottom-right ↘ Jobb alsó - + application Alkalmazás - + function Függvény - + high Magas - + low Alul - + Next to target Cél mellé - + With label Címkével - + Hidden Rejtett diff --git a/LogarithmPlotter/i18n/lp_nb_NO.ts b/LogarithmPlotter/i18n/lp_nb_NO.ts index d1becca..7dc0b9c 100644 --- a/LogarithmPlotter/i18n/lp_nb_NO.ts +++ b/LogarithmPlotter/i18n/lp_nb_NO.ts @@ -252,32 +252,32 @@ ExpressionEditor - + Object Properties - + Variables - + Constants - + Functions Funksjoner - + Executable Objects - + Objects Objekter @@ -795,12 +795,12 @@ Disse innstillingene kan endres når som helst fra «Innstillinger»-menyen. editproperty - + %1 of %2 %3 changed from "%4" to "%5". %1 av %2 %3 endret fra «%4» til «%5». - + %1 of %2 changed from %3 to %4. @@ -809,7 +809,7 @@ Disse innstillingene kan endres når som helst fra «Innstillinger»-menyen.error - + Cannot find property %1 of object %2. @@ -824,129 +824,139 @@ Disse innstillingene kan endres når som helst fra «Innstillinger»-menyen. - - - + + + Invalid expression. - + Invalid expression (parity). - + Unknown character "%1". - - + + Illegal escape sequence: %1. - - + + Parse error [%1:%2]: %3 - + Expected %1 - + Unexpected %1 - + Function definition is not permitted. - + Expected variable for assignment. - + Unexpected ".": member access is not permitted - + Unexpected "[]": arrays are disabled. - + Unexpected symbol: %1. - + First argument to map is not a function. - + Second argument to map is not an array. - + First argument to fold is not a function. - + Second argument to fold is not an array. - + First argument to filter is not a function. - + Second argument to filter is not an array. - + Second argument to indexOf is not a string or array. - + Second argument to join is not an array. - + EOF - + No object found with names %1. - + No object found with name %1. - + Object cannot be dependent on itself. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -1069,114 +1079,114 @@ Please make sure your latex installation is correct and report a bug if so. parameters - + above - + below - - + + left - - + + right - + above-left - + above-right - + below-left - + below-right - + center - + top - + bottom - + top-left - + top-right - + bottom-left - + bottom-right - + application - + function - + high - + low - + Next to target - + With label - + Hidden diff --git a/LogarithmPlotter/i18n/lp_template.ts b/LogarithmPlotter/i18n/lp_template.ts index 377be41..40023b7 100644 --- a/LogarithmPlotter/i18n/lp_template.ts +++ b/LogarithmPlotter/i18n/lp_template.ts @@ -221,32 +221,32 @@ ExpressionEditor - + Object Properties - + Variables - + Constants - + Functions - + Executable Objects - + Objects @@ -743,12 +743,12 @@ These settings can be changed at any time from the "Settings" menu. editproperty - + %1 of %2 %3 changed from "%4" to "%5". - + %1 of %2 changed from %3 to %4. @@ -757,7 +757,7 @@ These settings can be changed at any time from the "Settings" menu.error - + Cannot find property %1 of object %2. @@ -772,129 +772,139 @@ These settings can be changed at any time from the "Settings" menu. - - - + + + Invalid expression. - + Invalid expression (parity). - + Unknown character "%1". - - + + Illegal escape sequence: %1. - - + + Parse error [%1:%2]: %3 - + Expected %1 - + Unexpected %1 - + Function definition is not permitted. - + Expected variable for assignment. - + Unexpected ".": member access is not permitted - + Unexpected "[]": arrays are disabled. - + Unexpected symbol: %1. - + First argument to map is not a function. - + Second argument to map is not an array. - + First argument to fold is not a function. - + Second argument to fold is not an array. - + First argument to filter is not a function. - + Second argument to filter is not an array. - + Second argument to indexOf is not a string or array. - + Second argument to join is not an array. - + EOF - + No object found with names %1. - + No object found with name %1. - + Object cannot be dependent on itself. + + + Circular dependency detected. Object %1 depends on %2. + + + + + Circular dependency detected. Objects %1 depend on %2. + + expression @@ -994,114 +1004,114 @@ Please make sure your latex installation is correct and report a bug if so. parameters - + above - + below - - + + left - - + + right - + above-left - + above-right - + below-left - + below-right - + center - + top - + bottom - + top-left - + top-right - + bottom-left - + bottom-right - + application - + function - + high - + low - + Next to target - + With label - + Hidden diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/ExpressionEditor.qml b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/ExpressionEditor.qml index 9ca2878..b20be37 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/ExpressionEditor.qml +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/Setting/ExpressionEditor.qml @@ -475,7 +475,16 @@ Item { } if(expr.requiredObjects().includes(control.self)) throw new Error(qsTranslate('error', 'Object cannot be dependent on itself.')) - // TODO: Check for recursive dependencies. + // Recursive dependencies + let dependentOnSelfObjects = expr.requiredObjects().filter( + (obj) => Objects.currentObjectsByName[obj].getDependenciesList() + .includes(Objects.currentObjectsByName[control.self]) + ) + if(dependentOnSelfObjects.length == 1) + throw new Error(qsTranslate('error', 'Circular dependency detected. Object %1 depends on %2.').arg(dependentOnSelfObjects[0].toString()).arg(control.self)) + else if(dependentOnSelfObjects.length > 1) + throw new Error(qsTranslate('error', 'Circular dependency detected. Objects %1 depend on %2.').arg(dependentOnSelfObjects.map(obj => obj.toString()).join(', ')).arg(control.self)) + console.log(control.self, propertyName, expr.execute()) return expr } catch(e) { // Error in expression diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/expr-eval.js b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/expr-eval.js index 6a3d828..b3d7ee5 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/expr-eval.js +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/expr-eval.js @@ -274,9 +274,12 @@ function evaluate(tokens, expr, values) { nstack.push(item); } else if (type === IMEMBER) { n1 = nstack.pop(); - //console.log("Getting property", item.value, "of", n1) + //console.log("Getting property", item.value, "of", n1,":",n1[item.value]) if(item.value in n1) - nstack.push(n1[item.value]); + if(n1[item.value].execute && n1[item.value].cached) + nstack.push(n1[item.value].execute()) + else + nstack.push(n1[item.value]); else throw new Error(qsTranslate('error', 'Cannot find property %1 of object %2.').arg(item.value).arg(n1)) } else if (type === IENDSTATEMENT) { diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/objs/common.js b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/objs/common.js index 907bf63..5046005 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/objs/common.js +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/objs/common.js @@ -187,6 +187,17 @@ class DrawableObject { } } + /** + * Returns the recursive list of objects this one depends on. + * @return {array} + */ + getDependenciesList() { + let dependencies = this.requires.map(obj => obj) + for(let obj of this.requires) + dependencies = dependencies.concat(obj.getDependenciesList()) + return dependencies + } + /** * Callback method when one of the properties of the object is updated. */ @@ -198,24 +209,24 @@ class DrawableObject { this.requires = [] let properties = this.constructor.properties() for(let property in properties) - if(properties[property] == 'Expression' && this[property] != null) { - // Expressions with dependencies - for(let objName of this[property].requiredObjects()) { - if(objName in C.currentObjectsByName && !this.requires.includes(C.currentObjectsByName[objName])) { - this.requires.push(C.currentObjectsByName[objName]) - C.currentObjectsByName[objName].requiredBy.push(this) + if(typeof properties[property] == 'object' && 'type' in properties[property]) + if(properties[property].type == 'Expression' && this[property] != null) { + // Expressions with dependencies + for(let objName of this[property].requiredObjects()) { + if(objName in C.currentObjectsByName && !this.requires.includes(C.currentObjectsByName[objName])) { + this.requires.push(C.currentObjectsByName[objName]) + C.currentObjectsByName[objName].requiredBy.push(this) + } } + if(this[property].cached && this[property].requiredObjects().length > 0) + // Recalculate + this[property].recache() + + } else if(properties[property].type == 'ObjectType' && this[property] != null) { + // Object dependency + this.requires.push(this[property]) + this[property].requiredBy.push(this) } - if(this[property].cached && this[property].requiredObjects().length > 0) - // Recalculate - this[property].recache() - - } else if(typeof properties[property] == 'object' && 'type' in properties[property] && properties[property] == 'ObjectType' && this[property] != null) { - // Object dependency - this.requires.push(this[property]) - this[property].requiredBy.push(this) - } - // Updating objects dependent on this one for(let req of this.requiredBy) req.update()