/// <summary> /// Build the list of columns for the given profile /// </summary> private void AddColumnsAndDependents(IList <LogColumn> columns, LogProfile newProfile) { List <LogColumn> dependencies = new List <LogColumn>(); foreach (LogColumn column in newProfile.Columns) { Parameter parameter = column.Parameter; Conversion conversion = column.Conversion; DependencyMap dependencyMap = null; if (parameter.IsCalculated) { dependencyMap = new DependencyMap(); foreach (Parameter dependency in parameter.Dependencies) { string depencencyKey; Conversion dependencyConversion; InternalLogProfile.GetDependencyConversion( dependency, conversion, out dependencyConversion, out depencencyKey); this.VerifyParameter(dependency); LogColumn dependencyColumn = LogColumn.GetInstance( dependency, dependencyConversion, null, true); dependencyMap[depencencyKey] = dependencyColumn; dependencies.Add(dependencyColumn); } } this.VerifyParameter(parameter); LogColumn newColumn = LogColumn.GetInstance(parameter, conversion, dependencyMap, false); columns.Add(newColumn); } if (dependencies != null) { foreach (LogColumn dependency in dependencies) { columns.Add(dependency); } } }
/// <summary> /// Log when knock sum value changes. /// </summary> protected override bool ShouldLog(LogColumn column) { if (!initialized) { this.lastValue = column.ValueAsDouble; return(false); } if (column.ValueAsDouble != this.lastValue) { this.lastValue = column.ValueAsDouble; return(true); } return(false); }
public void Add(Parameter parameter, Conversion conversion) { LogColumn column = LogColumn.GetInstance(parameter, conversion, null, false); for (int i = 0; i < this.columns.Count; i++) { /* Not sure what I had in mind for this, but it breaks the SawMill UI: * LogColumn candidate = this.columns[i]; * if (string.Compare( * parameter.Name, * candidate.Parameter.Name, * StringComparison.OrdinalIgnoreCase) < 0) * { * this.columns.Insert(i, column); * return; * } */ } this.columns.Add(column); }
/// <summary> /// Base class will always log (unless testing is underway) /// </summary> protected virtual bool ShouldLog(LogColumn column) { return(LogFilter.defaultBehavior); }
protected override bool ShouldLog(LogColumn column) { return(state); }
protected override bool ShouldLog(LogColumn column) { return(column.ValueAsString == requiredValue); }
/// <summary> /// Log when throttle is maxed out /// </summary> protected override bool ShouldLog(LogColumn column) { return(column.ValueAsDouble > 98.0d); }
/// <summary> /// Log when in closed loop /// </summary> protected override bool ShouldLog(LogColumn column) { return(string.Compare(column.ValueAsString, "8", StringComparison.OrdinalIgnoreCase) == 0); }
/// <summary> /// Convert the given value and store it on the column /// </summary> private static void ConvertAndStoreValue(Parameter parameter, double rawValue, Conversion conversion, LogColumn column) { double valueAsDouble; string valueAsString; try { conversion.Convert(rawValue, out valueAsString, out valueAsDouble); } catch (InvalidOperationException) { Trace.WriteLine("Evaluation failed for parameter " + parameter.Id + " / " + parameter.Name); valueAsString = string.Empty; valueAsDouble = 0; } column.ValueAsDouble = valueAsDouble; column.ValueAsString = valueAsString; }