using System.Collections.Generic; using System.Linq; namespace DTS.Serialization.TSV { public class TSVTest { public enum Fields { LabName, POCName, POCPhoneAndEmail, TestDate, TestTime, TestNumber, TestType, TestObject, DataType, SensorMakeModelSerial, SensorLocation, SensorAxis, SensorMountType, EngineeringUnits, ChannelErrors, SamplingRate, AAFilterCutoffDescription, BitResolution, DigitalFilterType, Notes } private readonly Dictionary _values = new Dictionary(); public string GetValue(Fields field) { if (!_values.ContainsKey(field)) { _values.Add(field, "#NOVALUE"); } return _values[field]; } public void SetValue(Fields field, string value) { _values[field] = value; foreach (var channel in _channels) { channel.SetValue(field, value); } switch (field) { case Fields.POCName: Properties.Settings1.Default.TSVPOCNameLastUsed = value; Properties.Settings1.Default.Save(); break; case Fields.POCPhoneAndEmail: Properties.Settings1.Default.TSVPOCPhoneAndEmailLastUsed = value; Properties.Settings1.Default.Save(); break; case Fields.DataType: Properties.Settings1.Default.TSVDataTypeLastUsed = value; Properties.Settings1.Default.Save(); break; case Fields.LabName: Properties.Settings1.Default.TSVLabNameLastUsed = value; Properties.Settings1.Default.Save(); break; case Fields.TestObject: Properties.Settings1.Default.TSVTestObjectLastUsed = value; Properties.Settings1.Default.Save(); break; case Fields.TestType: Properties.Settings1.Default.TSVTestTypeLastUsed = value; Properties.Settings1.Default.Save(); break; } } private readonly List _channels = new List(); public TSVChannel[] Channels { get => _channels.ToArray(); set { _channels.Clear(); _channels.AddRange(value); } } public Test Test { get; } public FilteredData[] DataFilteredEU { get; } public FilteredData[] DataUnfilteredEU { get; } public FilteredData[] DataADC { get; } public double[] ActualRangesEUFiltered { get; } public double[] ActualRangesEUUnfiltered { get; } public double[] ActualRangesADC { get; } public TSVTest(Test test, FilteredData[] euFiltered, FilteredData[] adc, FilteredData[] euUnfiltered, string path, double[] actualRangesEUFiltered, double[] actualRangesEUUnfiltered, double[] actualRAngesADC) { Test = test; DataUnfilteredEU = euUnfiltered; DataFilteredEU = euFiltered; DataADC = adc; ActualRangesADC = actualRAngesADC; ActualRangesEUUnfiltered = actualRangesEUUnfiltered; ActualRangesEUFiltered = actualRangesEUFiltered; for (var i = 0; i < test.Channels.Count && i < euUnfiltered.Length; i++) { _channels.Add(new TSVChannel(this, i, path)); } SetValue(Fields.TestNumber, test.Id); SetValue(Fields.TestDate, test.InceptionDate.ToShortDateString()); SetValue(Fields.TestTime, test.InceptionDate.ToShortTimeString()); SetValue(Fields.POCName, Properties.Settings1.Default.TSVPOCNameLastUsed); SetValue(Fields.POCPhoneAndEmail, Properties.Settings1.Default.TSVPOCPhoneAndEmailLastUsed); SetValue(Fields.DataType, Properties.Settings1.Default.TSVDataTypeLastUsed); SetValue(Fields.LabName, Properties.Settings1.Default.TSVLabNameLastUsed); SetValue(Fields.TestObject, Properties.Settings1.Default.TSVTestObjectLastUsed); SetValue(Fields.TestType, Properties.Settings1.Default.TSVTestTypeLastUsed); SetValue(Fields.SamplingRate, test.Modules.First().SampleRateHz.ToString()); SetValue(Fields.AAFilterCutoffDescription, string.Format("{0}hz multipole low pass butterworth", test.Modules.First().AaFilterRateHz.ToString())); } } }