public void AddStatement(string statement) { try { var statementViewModel = new StatementViewModel <decimal>(statement, _variableGraph, this); var existing = _statements.FirstOrDefault(s => s.Id.Equals(statementViewModel.Id, StringComparison.OrdinalIgnoreCase)); if (existing != null) { _statements.Remove(existing); } _statements.Add(statementViewModel); RefreshAssociatedStatements(statementViewModel); ClearError(); StatementInput = string.Empty; } catch (ParseException) { Error = Constants.Text.InvalidStatement; HasError = true; } catch (CyclicVertexException) { Error = Constants.Text.CyclicStatement; HasError = true; } }
private void RefreshAssociatedStatements(StatementViewModel <decimal> addedStatement) { if (addedStatement?.IsEvaluated == true) { foreach (var node in _variableGraph.GetLinkedNodes(addedStatement.Id).ToList()) { var statement = _statements.FirstOrDefault(s => s.Id.Equals(node, StringComparison.OrdinalIgnoreCase)); statement?.RefreshResult(); RefreshAssociatedStatements(statement); } } }
public bool Equals(StatementViewModel <T> other) { return(this.Id?.Equals(other?.Id, StringComparison.InvariantCultureIgnoreCase) == true); }