using System; using System.Collections.Generic; namespace DatabaseExport { /// /// this is a test object that belongs to a test, it's different in that it can have test specific settings ... /// public class TestTestObject : TestObject { public TestTestObject(TestObject obj) : base(obj) { } private string _position = ChannelDefaultsKey; public MMEPositions Position { get => GetGroupPosition(_position); set { SetProperty(ref _position, value.Position, "Position"); if (_position == UserSetKey) { GroupPositionComboBoxVisible = System.Windows.Visibility.Hidden; GroupPositionButtonVisible = System.Windows.Visibility.Visible; } else { GroupPositionComboBoxVisible = System.Windows.Visibility.Visible; GroupPositionButtonVisible = System.Windows.Visibility.Hidden; //set the position for every sensor in the test object using this position var isoTO = GetISOTestObject(); foreach (var ch in isoTO.AllChannels) { if (!ch.Required) { continue; } if (string.IsNullOrWhiteSpace(ch.SensorSerialNumber)) { continue; } var sd = GetSensor(ch.Name, ch.SensorSerialNumber); // now using ch.Name instead of ch.GetID(); FB 7391 - Group sensor settings not in test when you set the test obj. and position. if (null == sd) { continue; } sd.Position = value.Position; SetSensor(ch.GetID(), sd); } } } } public const string ChannelDefaultsKey = "#"; public const string UserSetKey = "@"; private MMEPositions GetGroupPosition(string groupPositionKey) { foreach (var position in AvailableGroupPositions) { if (position.Position == groupPositionKey) { return position; } } return _userSetGUID; } private System.Windows.Visibility _groupPositionComboBoxVisible = System.Windows.Visibility.Visible; public System.Windows.Visibility GroupPositionComboBoxVisible { get { if (_groupPositionComboBoxVisible == System.Windows.Visibility.Visible) { if (SerializedSettings.ISOSupportLevel == SerializedSettings.ISOSupportLevels.NO_ISO) { return System.Windows.Visibility.Collapsed; } return _groupPositionComboBoxVisible; } return _groupPositionComboBoxVisible; } set => _groupPositionComboBoxVisible = value; } private System.Windows.Visibility _groupPositionButtonVisible = System.Windows.Visibility.Hidden; public System.Windows.Visibility GroupPositionButtonVisible { get { if (_groupPositionButtonVisible == System.Windows.Visibility.Visible) { if (SerializedSettings.ISOSupportLevel == SerializedSettings.ISOSupportLevels.NO_ISO) { return System.Windows.Visibility.Collapsed; } return _groupPositionButtonVisible; } return _groupPositionButtonVisible; } set => _groupPositionButtonVisible = value; } private string _testObject = "?"; public MMETestObjects TestObject { get => ISO13499FileDb.IsoDb.GetTestObjectByIso(_testObject); set { if (value == null) return; SetProperty(ref _testObject, value.Test_Object, "TestObject"); //also set the test object for all sensors! var isoTO = GetISOTestObject(); foreach (var ch in isoTO.AllChannels) { if (!ch.Required) { continue; } if (string.IsNullOrWhiteSpace(ch.SensorSerialNumber)) { continue; } var sd = GetSensor(ch.GetID(), ch.SensorSerialNumber); if (null == sd) { continue; } sd.TestObject = value.Test_Object; SetSensor(ch.GetID(), sd); } } } public void SetTestObject(string s) { _testObject = s; OnPropertyChanged("TestObject"); } public void SetPosition(string s) { _position = s; OnPropertyChanged("Position"); if (s == UserSetKey) { GroupPositionComboBoxVisible = System.Windows.Visibility.Hidden; GroupPositionButtonVisible = System.Windows.Visibility.Visible; } else { GroupPositionComboBoxVisible = System.Windows.Visibility.Visible; GroupPositionButtonVisible = System.Windows.Visibility.Hidden; } } public MMEPositions[] AvailablePositions => ISO13499FileDb.IsoDb.GetPositions(); private const string DATAPRO_DEFINED = "DataPRO-defined"; public static MMEPositions _channelDefaultsGUID = new MMEPositions(Guid.NewGuid().ToString(), ChannelDefaultsKey, "(channel defaults)", "(channel defaults)", 1, DateTime.Now, DATAPRO_DEFINED, false, "", DateTime.Now, DATAPRO_DEFINED, "", MMEPossibleChannels.MMEChannelTypes.ISO13499_106); private MMEPositions _userSetGUID = new MMEPositions(Guid.NewGuid().ToString(), UserSetKey, "(multiple)", "(multiple)", 1, DateTime.Now, DATAPRO_DEFINED, false, "", DateTime.Now, DATAPRO_DEFINED, "", MMEPossibleChannels.MMEChannelTypes.ISO13499_106); public MMEPositions[] AvailableGroupPositions { get { var availableGroupPositions = new List(); availableGroupPositions.Add(_channelDefaultsGUID); foreach (var position in AvailablePositions) { availableGroupPositions.Add(position); } return availableGroupPositions.ToArray(); } } private int _excitationWarmupTime = Properties.Settings.Default.DefaultTestExcitationWarmupMS; public int ExcitationWarmupTimeMS { get => _excitationWarmupTime; set => SetProperty(ref _excitationWarmupTime, value, "ExcitationWarmupTimeMS"); } private double _targetSampleRate; public double TargetSampleRate { get => _targetSampleRate; set => SetProperty(ref _targetSampleRate, value, "TargetSampleRate"); } } }