init
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace DTS.Common.Controls
|
||||
{
|
||||
public class DynamicGrid : Grid, INotifyPropertyChanged
|
||||
{
|
||||
#region INotifyPropertyChanged
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
protected bool SetProperty<T>(ref T storage, T value, string propertyName = null)
|
||||
{
|
||||
if (Equals(storage, value)) return false;
|
||||
|
||||
storage = value;
|
||||
OnPropertyChanged(propertyName);
|
||||
return true;
|
||||
}
|
||||
protected void OnPropertyChanged(string propertyName = null)
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
#endregion
|
||||
|
||||
public DynamicGrid()
|
||||
: base()
|
||||
{
|
||||
Refresh();
|
||||
}
|
||||
|
||||
protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved)
|
||||
{
|
||||
base.OnVisualChildrenChanged(visualAdded, visualRemoved);
|
||||
|
||||
Refresh();
|
||||
}
|
||||
|
||||
public void Refresh()
|
||||
{
|
||||
ColumnDefinitions.Clear();
|
||||
for (byte i = 0; i < GridColumns; i++)
|
||||
{
|
||||
ColumnDefinitions.Add(new ColumnDefinition());
|
||||
if (i + 1 != GridColumns)
|
||||
{
|
||||
ColumnDefinitions[i].Width = new GridLength(1, GridUnitType.Auto);
|
||||
}
|
||||
else
|
||||
{
|
||||
ColumnDefinitions[i].Width = new GridLength(1, GridUnitType.Star);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var curRow = 0;
|
||||
var curCol = 0;
|
||||
|
||||
RowDefinitions.Clear();
|
||||
|
||||
if (Children != null)
|
||||
{
|
||||
foreach (UIElement curChild in Children)
|
||||
{
|
||||
if (0 == curCol)
|
||||
{
|
||||
// We're on the first column, we need a new row for the child
|
||||
RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
|
||||
}
|
||||
|
||||
// Set the child to its row and column
|
||||
SetRow(curChild, curRow);
|
||||
SetColumn(curChild, curCol);
|
||||
|
||||
// Iderate
|
||||
if (curCol < GridColumns - 1)
|
||||
{
|
||||
// We're moving to the next column
|
||||
curCol++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// We're at the end, go back to clumn 0
|
||||
curCol = 0;
|
||||
curRow++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
|
||||
}
|
||||
|
||||
|
||||
private byte _columns = 2;
|
||||
public byte GridColumns
|
||||
{
|
||||
get => _columns;
|
||||
set { _columns = value; Refresh(); }
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,205 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Media;
|
||||
using DTS.Common.Base;
|
||||
// ReSharper disable CheckNamespace
|
||||
|
||||
namespace DTS.Common.Interface
|
||||
{
|
||||
public interface ITestChannel : INotifyPropertyChanged
|
||||
{
|
||||
string Group { get; set; }
|
||||
string SubGroup { get; set; }
|
||||
bool IsGraphChannel { get; set; }
|
||||
string GraphName { get; set; }
|
||||
string TestId { get; set; }
|
||||
|
||||
string TestSetupName { get; set; }
|
||||
string ModuleSerialNumber { get; set; }
|
||||
string SerialNumber { get; set; }
|
||||
string ChannelId { get; set; }
|
||||
string ChannelDisplayName { get; set; }
|
||||
string Description { get; set; }
|
||||
string IsoCode { get; set; }
|
||||
string IsoChannelName { get; set; }
|
||||
string UserCode { get; set; }
|
||||
string UserChannelName { get; set; }
|
||||
string ChannelGroupName { get; set; }
|
||||
string ChannelType { get; set; }
|
||||
bool IsCalculatedChannel { get; set; }
|
||||
int Number { get; set; }
|
||||
string DigitalMultiplier { get; set; }
|
||||
string DigitalMode { get; set; }
|
||||
DateTime Start { get; set; }
|
||||
string Bridge { get; set; }
|
||||
double BridgeResistanceOhms { get; set; }
|
||||
double ZeroPoint { get; set; }
|
||||
string ChannelDescriptionString { get; set; }
|
||||
void SetChannelDescriptionAndDisplayName(string channelDescriptionString);
|
||||
string ChannelName2 { get; set; }
|
||||
string HardwareChannelName { get; set; }
|
||||
double DesiredRange { get; set; }
|
||||
double ActualMaxRangeEu { get; set; }
|
||||
double ActualMinRangeEu { get; set; }
|
||||
double ActualMaxRangeAdc { get; }
|
||||
double ActualMinRangeAdc { get; }
|
||||
double ActualMaxRangeMv { get; set; }
|
||||
double ActualMinRangeMv { get; set; }
|
||||
double Sensitivity { get; set; }
|
||||
string SoftwareFilter { get; set; }
|
||||
bool ProportionalToExcitation { get; set; }
|
||||
bool IsInverted { get; set; }
|
||||
string LinearizationFormula { get; set; }
|
||||
bool IsSubsampled { get; set; }
|
||||
int AbsoluteDisplayOrder { get; set; }
|
||||
DateTime LastCalibrationDate { get; set; }
|
||||
string SensorId { get; set; }
|
||||
int OffsetToleranceLowMv { get; set; }
|
||||
int OffsetToleranceHighMv { get; set; }
|
||||
int DataFlag { get; set; }
|
||||
string ExcitationVoltage { get; set; }
|
||||
string Eu { get; set; }
|
||||
bool CalSignalEnabled { get; set; }
|
||||
bool ShuntEnabled { get; set; }
|
||||
bool VoltageInsertionCheckEnabled { get; set; }
|
||||
bool RemoveOffset { get; set; }
|
||||
string ZeroMethod { get; set; }
|
||||
double ZeroAverageWindowBegin { get; set; }
|
||||
double ZeroAverageWindowEnd { get; set; }
|
||||
int InitialEu { get; set; }
|
||||
string InitialOffset { get; set; }
|
||||
int UnsubsampledSampleRateHz { get; set; }
|
||||
double MeasuredShuntDeflectionMv { get; set; }
|
||||
double TargetShuntDeflectionMv { get; set; }
|
||||
double MeasuredExcitationVoltage { get; set; }
|
||||
double FactoryExcitationVoltage { get; set; }
|
||||
double TimeOfFirstSample { get; set; }
|
||||
double Multiplier { get; set; }
|
||||
double UserOffsetEu { get; set; }
|
||||
int UnitConversion { get; set; }
|
||||
bool AtCapacity { get; set; }
|
||||
int CapacityOutputIsBasedOn { get; set; }
|
||||
string SourceChannelNumber { get; set; }
|
||||
string SourceModuleNumber { get; set; }
|
||||
string SourceModuleSerialNumber { get; set; }
|
||||
string Calculation { get; set; }
|
||||
int SampleRateHz { get; set; }
|
||||
string SensitivityUnits { get; set; }
|
||||
int SensorCapacity { get; set; }
|
||||
string SensorPolarity { get; set; }
|
||||
int ChannelNumber { get; set; }
|
||||
string BinaryFileName { get; set; }
|
||||
string BinaryFilePath { get; set; }
|
||||
double Xmax { get; set; }
|
||||
double Xmin { get; set; }
|
||||
int SequentialNumbers { get; set; }
|
||||
ITestSetupMetadata ParentTestSetup { get; set; }
|
||||
ITestModule ParentModule { get; set; }
|
||||
IBaseViewModel Parent { get; set; }
|
||||
Color ChannelColor { get; set; }
|
||||
string ErrorMessage { get; set; }
|
||||
bool IsError { get; set; }
|
||||
Color? ErrorColor { get; set; }
|
||||
bool IsSelected { get; set; }
|
||||
bool CanSelectChannel { get; set; }
|
||||
bool IsLocked { get; set; }
|
||||
bool CanLock { get; set; }
|
||||
ITestChannel Copy();
|
||||
ulong T1Sample { get; set; }
|
||||
ulong T2Sample { get; set; }
|
||||
double HIC { get; set; }
|
||||
bool UseEUScaler { get; set; }
|
||||
double ScaleFactorEU { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Min value of ADC for entire dataset
|
||||
/// </summary>
|
||||
double MinADC { get; set; }
|
||||
/// <summary>
|
||||
/// Max value in ADC for entire dataset
|
||||
/// </summary>
|
||||
double MaxADC { get; set; }
|
||||
/// <summary>
|
||||
/// Average value in ADC for entire dataset
|
||||
/// </summary>
|
||||
double AveADC { get; set; }
|
||||
/// <summary>
|
||||
/// STD DEV in ADC for entire dataset
|
||||
/// </summary>
|
||||
double StdDevADC { get; set; }
|
||||
/// <summary>
|
||||
/// Value @ T0 in ADC
|
||||
/// </summary>
|
||||
double T0ADC { get; set; }
|
||||
/// <summary>
|
||||
/// Minimum value in mV for entire dataset
|
||||
/// </summary>
|
||||
double MinMV { get; set; }
|
||||
/// <summary>
|
||||
/// Maximum value in mV for entire dataset
|
||||
/// </summary>
|
||||
double MaxMV { get; set; }
|
||||
/// <summary>
|
||||
/// average value in mV for entire dataset
|
||||
/// </summary>
|
||||
double AveMV { get; set; }
|
||||
/// <summary>
|
||||
/// std dev in mV for entire dataset
|
||||
/// </summary>
|
||||
double StdDevMV { get; set; }
|
||||
/// <summary>
|
||||
/// value in mV at T0
|
||||
/// </summary>
|
||||
double T0MV { get; set; }
|
||||
/// <summary>
|
||||
/// minimum value in EU for entire dataset
|
||||
/// </summary>
|
||||
double MinEU { get; set; }
|
||||
/// <summary>
|
||||
/// maximum value in EU for entire dataset
|
||||
/// </summary>
|
||||
double MaxEU { get; set; }
|
||||
/// <summary>
|
||||
/// average value in EU for entire dataset
|
||||
/// </summary>
|
||||
double AveEU { get; set; }
|
||||
/// <summary>
|
||||
/// std dev in EU
|
||||
/// </summary>
|
||||
double StdDevEU { get; set; }
|
||||
/// <summary>
|
||||
/// value at T0 in EU
|
||||
/// </summary>
|
||||
double T0EU { get; set; }
|
||||
/// <summary>
|
||||
/// minimum value for whatever current units are for entire dataset
|
||||
/// </summary>
|
||||
double MinY { get; set; }
|
||||
/// <summary>
|
||||
/// maximum value for whatever current units are for entire dataset
|
||||
/// </summary>
|
||||
double MaxY { get; set; }
|
||||
/// <summary>
|
||||
/// average value for whatever current units are for entire dataset
|
||||
/// </summary>
|
||||
double AveY { get; set; }
|
||||
/// <summary>
|
||||
/// std deviation for whatever current units are
|
||||
/// </summary>
|
||||
double StdDevY { get; set; }
|
||||
/// <summary>
|
||||
/// Value at T0 in whatever current units are
|
||||
/// </summary>
|
||||
double T0Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// EID channel was originally set up with
|
||||
/// </summary>
|
||||
string SetupEID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// EID present on channel when data was collected
|
||||
/// </summary>
|
||||
string DataCollectionEID { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
|
||||
namespace DTS.Common.Enums
|
||||
{
|
||||
public static class HeaderLineExtension
|
||||
{
|
||||
public static string GetDescription(this Enum genericEnum)
|
||||
{
|
||||
Type genericEnumType = genericEnum.GetType();
|
||||
MemberInfo[] memberInfo = genericEnumType.GetMember(genericEnum.ToString());
|
||||
if ((memberInfo != null && memberInfo.Length > 0))
|
||||
{
|
||||
var attribs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||
if (attribs != null && attribs.Any())
|
||||
{
|
||||
return ((DescriptionAttribute)attribs.ElementAt(0)).Description;
|
||||
}
|
||||
}
|
||||
return genericEnum.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The various header lines (and associated text) that appear in CSV file format.
|
||||
/// </summary>
|
||||
public enum FtssHeaderLine
|
||||
{
|
||||
[Description("Headers")] Headers = 0,
|
||||
|
||||
[Description("Test Date")] TestDate,
|
||||
|
||||
[Description("Test Time")] TestTime,
|
||||
|
||||
[Description("Test ID")] TestId,
|
||||
|
||||
[Description("Test Description")] TestDescription,
|
||||
|
||||
[Description("Sample Rate (Hz)")] SampleRate,
|
||||
|
||||
[Description("Hardware AA Filter (-3dB)")]
|
||||
HardwareAntiAliasFilter,
|
||||
|
||||
[Description("Data Channel Number")] DataChannelNumber,
|
||||
|
||||
[Description("ISO Channel Code")] IsoCode,
|
||||
|
||||
[Description("User Channel Code")] UserCode,
|
||||
|
||||
[Description("Channel Description")] ChannelDescription,
|
||||
|
||||
[Description("Channel Location")] ChannelLocation,
|
||||
|
||||
[Description("Sensor S/N")] SensorSerialNumber,
|
||||
|
||||
[Description("Sensor Calibration Date")] SensorCalDate, //17651: include sensor cal date in CSV exports
|
||||
|
||||
[Description("Software Filter (SAE Class)")]
|
||||
SoftwareFilter,
|
||||
|
||||
[Description("Software Filter (-3dB)")]
|
||||
SoftwareFilterDb,
|
||||
|
||||
[Description("Engineering Unit")] EngineeringUnits,
|
||||
|
||||
[Description("User Comment")] UserComment,
|
||||
|
||||
[Description("Number of Pre-Zero Data Pts")]
|
||||
PreZero,
|
||||
|
||||
[Description("Number of Post-Zero Data Pts")]
|
||||
PostZero,
|
||||
|
||||
[Description("Data Zero (CNTS)")] DataZero,
|
||||
|
||||
[Description("Scale Factor (EU/CNT)")] ScaleEu,
|
||||
|
||||
[Description("Scale Factor (mV/CNT)")] ScaleMv,
|
||||
|
||||
[Description("Channel Name")] ChannelName,
|
||||
|
||||
[Description("Display Name")] DisplayName,
|
||||
|
||||
[Description("DAS Serial Number")]
|
||||
HardwareLine,
|
||||
|
||||
[Description("Zero Method")] ZeroMethod,
|
||||
|
||||
[Description("Remove Offset")] RemoveOffset,
|
||||
|
||||
[Description("Group Name")] GroupName,
|
||||
|
||||
[Description("Time of T0 (UTC)")] Timestamp, // FB15333: Add PTP/RTC timestamp column for CSV exports
|
||||
|
||||
[Description("Data Starts Here")] DataStart,
|
||||
|
||||
[Description("Time")] Labels,
|
||||
}
|
||||
/// <summary>
|
||||
/// The various header lines (and associated text) that appear in XLSX file format.
|
||||
/// </summary>
|
||||
public enum XLSXExportHeaderLine
|
||||
{
|
||||
[Description("Headers")] Headers = 0,
|
||||
|
||||
[Description("Test Date")] TestDate,
|
||||
|
||||
[Description("Test Time")] TestTime,
|
||||
|
||||
[Description("Test ID")] TestId,
|
||||
|
||||
[Description("Test Description")] TestDescription,
|
||||
|
||||
[Description("Sample Rate (Hz)")] SampleRate,
|
||||
|
||||
[Description("Hardware AA Filter (-3dB)")]
|
||||
HardwareAntiAliasFilter,
|
||||
|
||||
[Description("Data Channel Number")] DataChannelNumber,
|
||||
|
||||
[Description("ISO Channel Code")] IsoCode,
|
||||
|
||||
[Description("Channel Description")] ChannelDescription,
|
||||
|
||||
[Description("Channel Location")] ChannelLocation,
|
||||
|
||||
[Description("Sensor S/N")] SensorSerialNumber,
|
||||
|
||||
[Description("Software Filter (SAE Class)")]
|
||||
SoftwareFilter,
|
||||
|
||||
[Description("Software Filter (-3dB)")]
|
||||
SoftwareFilterDb,
|
||||
|
||||
[Description("Engineering Unit")] EngineeringUnits,
|
||||
|
||||
[Description("User Comment")] UserComment,
|
||||
|
||||
[Description("Number of Pre-Zero Data Pts")]
|
||||
PreZero,
|
||||
|
||||
[Description("Number of Post-Zero Data Pts")]
|
||||
PostZero,
|
||||
|
||||
[Description("Data Zero (CNTS)")] DataZero,
|
||||
|
||||
[Description("Scale Factor (EU/CNT)")] ScaleEu,
|
||||
|
||||
[Description("Scale Factor (mV/CNT)")] ScaleMv,
|
||||
|
||||
[Description("Data Starts Here")] DataStart,
|
||||
|
||||
[Description("Time")] Labels,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using Prism.Events;
|
||||
|
||||
namespace DTS.Common.Events
|
||||
{
|
||||
public class TextPastedEvent : PubSubEvent<ITextPastedEventArgs> { }
|
||||
|
||||
public interface ITextPastedEventArgs
|
||||
{
|
||||
string Text { get; }
|
||||
object Sender { get; }
|
||||
string Id { get; }
|
||||
object Tag { get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using DTS.Common.Interface.TestSetups.Imports.TTS.ReadFile;
|
||||
using Prism.Events;
|
||||
|
||||
namespace DTS.Common.Events
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// The TTSImportArmedRunTestEvent event.
|
||||
/// </summary>
|
||||
///
|
||||
/// <remarks>This event is used by the Hardware Scan step to tell the page to jump to the Arm step in Run Test.</remarks>
|
||||
///
|
||||
public class TTSImportArmedRunTestEvent : PubSubEvent<ITTSSetup> { }
|
||||
}
|
||||
Reference in New Issue
Block a user