diff --git a/lib/ai/formula_screen.dart b/lib/ai/formula_screen.dart index a600de0..8a7467f 100644 --- a/lib/ai/formula_screen.dart +++ b/lib/ai/formula_screen.dart @@ -458,21 +458,12 @@ class _FormulaScreenState extends State { void _solveForVariable(VariableSpec variable) { // Check if the formula is already a DerivedFormula - if (formula is DerivedFormula) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('Cannot create derived formula from another derived formula'), - duration: Duration(seconds: 2), - ), - ); - return; - } - try { // Create a DerivedFormula with this input variable as output + var rootFormula = FormulaInterface.getRootFormula(formula); final derivedFormula = DerivedFormula( outputName: variable.name, - originalFormula: formula, + originalFormula: rootFormula ); // Navigate to the new DerivedFormula screen diff --git a/lib/formula_models.dart b/lib/formula_models.dart index c82f39b..b42f037 100644 --- a/lib/formula_models.dart +++ b/lib/formula_models.dart @@ -196,11 +196,10 @@ class DerivedFormula implements FormulaInterface { return f.input.every( (vs) => vs.unit != "string") && f.output.unit != "string"; } - DerivedFormula({required this.outputName, required FormulaInterface originalFormula}) { + DerivedFormula({required this.outputName, required this.originalFormula}) { - this.originalFormula = FormulaInterface.getRootFormula(originalFormula); - if( !isDerivable(this.originalFormula) ){ + if( !isDerivable(originalFormula) ){ throw ArgumentError( "Derived formulas are not supported for formulas with string inputs, because we can't solve for them. Original formula: ${originalFormula.toString()}"); }