init
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/Hardware/DASSettings.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/Hardware/HardwareChannel.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/Hardware/DASHardwareList.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/Hardware/DASHardware.cs
|
||||
generated_at: "2026-04-17T15:53:46.839159+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "ab5877b874f4b126"
|
||||
---
|
||||
|
||||
# Documentation: DatabaseImport Hardware Classes
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This module provides data structures for representing Data Acquisition System (DAS) hardware configuration within the DatabaseImport subsystem. It models the hierarchical relationship between DAS hardware units, their individual channels, and associated settings. These classes serve as in-memory representations of hardware state, supporting serialization to database tables (e.g., `tblTestSetupDASSettings`) and facilitating hardware comparison, caching, and lookup operations during database import processes.
|
||||
|
||||
---
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### DASSettings
|
||||
|
||||
A POCO class for storing DAS-specific test configuration settings.
|
||||
|
||||
**Properties:**
|
||||
| Property | Type | Description |
|
||||
|----------|------|-------------|
|
||||
| `DASSerialNumber` | `string` | Serial number identifier for the DAS unit |
|
||||
| `SampleRate` | `double` | Sampling rate configuration |
|
||||
| `ExcitationWarmupTimeMS` | `int` | Excitation warmup time in milliseconds |
|
||||
| `HardwareAAF` | `double` | Hardware Anti-Aliasing Filter setting |
|
||||
| `PreTriggerSeconds` | `double` | Pre-trigger duration in seconds |
|
||||
| `PostTriggerSeconds` | `double` | Post-trigger duration in seconds |
|
||||
| `StatusLineCheck` | `bool` | Whether status line checking is enabled |
|
||||
| `BatteryCheck` | `bool` | Whether battery checking is enabled |
|
||||
| `InputVoltageMin` | `double` | Minimum input voltage threshold |
|
||||
| `InputVoltageMax` | `double` | Maximum input voltage threshold |
|
||||
| `BatteryVoltageMin` | `double` | Minimum battery voltage threshold |
|
||||
| `BatteryVoltageMax` | `double` | Maximum battery voltage threshold |
|
||||
|
||||
---
|
||||
|
||||
### HardwareChannel
|
||||
|
||||
Represents a single channel on a DAS hardware unit. Implements `IComparable<HardwareChannel>` and `IHardwareChannel`.
|
||||
|
||||
**Constructors:**
|
||||
```csharp
|
||||
public HardwareChannel(HardwareChannel copy) // Copy constructor
|
||||
public HardwareChannel(ISO.HardwareChannel channel, DASHardware hardware)
|
||||
```
|
||||
|
||||
**Properties:**
|
||||
| Property | Type | Access |
|
||||
|----------|------|--------|
|
||||
| `Hardware` | `DASHardware` | Read-only |
|
||||
| `ChannelNumber` | `int` | Read-only (default: 0) |
|
||||
| `Sensor` | `SensorData` | Read/write (nullable) |
|
||||
|
||||
**Methods:**
|
||||
```csharp
|
||||
public ISO.HardwareChannel GetISOChannel() // Returns the underlying ISO channel
|
||||
public string GetId() // Returns composite ID: "{hardwareId}x{channelNumber+1}"
|
||||
public int CompareTo(HardwareChannel right) // Compares by DASDisplayOrder, then ChannelIdx
|
||||
public bool IsSupportedBridgeType(Test.Module.Channel.Sensor.BridgeType bridgeType)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### DASHardwareList
|
||||
|
||||
Singleton class providing hardware lookup and caching functionality.
|
||||
|
||||
**Static Methods:**
|
||||
```csharp
|
||||
public static DASHardwareList GetList() // Returns singleton instance
|
||||
```
|
||||
|
||||
**Instance Methods:**
|
||||
```csharp
|
||||
public void ReloadAll() // Currently a no-op (implementation commented out)
|
||||
public DASHardware GetHardware(string id, bool bUseCache = true)
|
||||
public DASHardware GetHardware(string id,
|
||||
@@ -0,0 +1,180 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/RegionsAndZones/Zone.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/RegionsAndZones/RegionAdorner.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/RegionsAndZones/Region.cs
|
||||
generated_at: "2026-04-17T15:55:45.702453+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "7030e77345a741e1"
|
||||
---
|
||||
|
||||
# Documentation: RegionsAndZones Module
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This module provides the data structures and visual components for defining geographical regions within zones for test object templates in a database import system. It enables users to draw, configure, and persist rectangular regions on zone images, associating each region with ISO-standardized metadata (directions, filter classes, locations, positions) and filtering channels based on those properties. The module bridges the gap between visual region selection (via WPF adorners) and the underlying ISO database representation.
|
||||
|
||||
---
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### Zone Class (`Zone.cs`)
|
||||
|
||||
**Constructors:**
|
||||
- `Zone(Zone copy, TestObjectTemplate template)` — Copy constructor that clones regions from an existing Zone and initializes from `ISODllZone` properties.
|
||||
- `Zone(TemplateZone z, TestObjectTemplate template)` — Primary constructor that initializes a Zone from a `TemplateZone`, loads the associated picture from disk, and creates `Region` instances from `TemplateRegion` children.
|
||||
|
||||
**Properties:**
|
||||
- `string Name { get; set; }` — Zone name, sourced from `ISODllZone.ZoneName`.
|
||||
- `string Description { get; set; }` — Zone description.
|
||||
- `string Image { get; set; }` — Image filename (not full path).
|
||||
- `TemplateZone ISODllZone { get; }` — Read-only reference to the underlying ISO template zone.
|
||||
- `string[] AllPictures { get; }` — Returns sorted list of all available picture filenames from the `ZonePictures` directory. Thread-safe via locking.
|
||||
- `int PictureIndex { get; set; }` — Index into `AllPictures`; setting this loads the corresponding image into `PictureSource`. Setting to a negative value clears `PictureSource`.
|
||||
- `System.Windows.Media.ImageSource PictureSource { get; set; }` — The loaded bitmap image for display.
|
||||
- `Region[] Regions { get; set; }` — Array of regions belonging to this zone.
|
||||
|
||||
**Methods:**
|
||||
- `void PopulateFilenamesIfNeeded()` — Thread-safe lazy initialization of the picture file list.
|
||||
- `string GetPictureName()` — Returns the filename of the currently selected picture, or empty string if `PictureIndex < 0`.
|
||||
|
||||
**Nested Types:**
|
||||
- `FileInfoComparer : IComparer<System.IO.FileInfo>` — Ordinal comparison of file paths for sorting.
|
||||
|
||||
---
|
||||
|
||||
### RegionAdorner Class (`RegionAdorner.cs`)
|
||||
|
||||
Inherits from `Adorner`, implements `INotifyPropertyChanged`.
|
||||
|
||||
**Constructors:**
|
||||
- `RegionAdorner(UIElement adornedElement, TestObjectTemplate template, Contexts context)` — Creates an adorner bound to the specified element, initializes a new `Region`, and attaches mouse event handlers.
|
||||
|
||||
**Properties:**
|
||||
- `Region MyRegion { get; set; }` — The region data model associated with this adorner.
|
||||
- `Rect SelectRect { get; set; }` — The selection rectangle in adorned element coordinates. Setting this updates `MyRegion.RegionUpperLeft` and `MyRegion.RegionBottomRight` via coordinate transformation.
|
||||
- `bool IsNew { get; set; }` — Indicates whether this is a new region being drawn. Toggles visibility of add/delete controls on `MyRegion`.
|
||||
- `Point AnchorPoint { get; set; }` — Starting point for drawing operations.
|
||||
- `Contexts Context { get; set; }` — Editing context (EditTestObject or EditTestObjectTemplate).
|
||||
|
||||
**Events:**
|
||||
- `event RegionSelectedHandler OnRegionSelected` — Raised on left mouse button down.
|
||||
- `event EndSelectionHandler OnEndSelection` — Raised when mouse capture is released.
|
||||
|
||||
**Methods:**
|
||||
- `Point GetUpperLeft()` — Transforms `SelectRect.TopLeft` from measured coordinates to actual image coordinates.
|
||||
- `Point GetLowerRight()` — Transforms `SelectRect.BottomRight` from measured coordinates to actual image coordinates.
|
||||
- `void DrawSelection(object sender, MouseEventArgs e, UIElement adornedElement)` — Updates `SelectRect` based on mouse drag from `AnchorPoint`.
|
||||
- `void MoveSelection(object sender, MouseEventArgs e, UIElement adornedElement)` — Moves an existing `SelectRect` by mouse delta.
|
||||
- `void EndSelection(object sender, MouseButtonEventArgs e)` — Releases mouse capture and raises `OnEndSelection`.
|
||||
|
||||
**Nested Types:**
|
||||
- `enum Contexts { EditTestObject, EditTestObjectTemplate }` — Editing mode enumeration.
|
||||
|
||||
---
|
||||
|
||||
### Region Class (`Region.cs`)
|
||||
|
||||
**Constructors:**
|
||||
- `Region(RegionAdorner adorner, TestObjectTemplate template)` — Creates a new region with default name/description, bound to an adorner.
|
||||
- `Region(TestObjectTemplate template, TemplateRegion r)` — Reconstructs a region from a persisted `TemplateRegion`, loading all ISO metadata references.
|
||||
|
||||
**Properties (Identity):**
|
||||
- `string RegionName { get; set; }`
|
||||
- `string RegionDescription { get; set; }`
|
||||
- `TestObjectTemplate Template { get; set; }`
|
||||
|
||||
**Properties (Coordinates):**
|
||||
- `Point RegionUpperLeft { get; set; }`
|
||||
- `Point RegionBottomRight { get; set; }`
|
||||
|
||||
**Properties (ISO Metadata):**
|
||||
- `MMEDirections RegionDirection { get; set; }`
|
||||
- `MMEFilterClasses RegionFilterClass { get; set; }`
|
||||
- `MMEFineLocations1 RegionFineLocation1 { get; set; }`
|
||||
- `MMEFineLocations2 RegionFineLocation2 { get; set; }`
|
||||
- `MMEFineLocations3 RegionFineLocation3 { get; set; }`
|
||||
- `MMETransducerMainLocation RegionMainLocation { get; set; }`
|
||||
- `MMEPhysicalDimensions RegionPhysicalDimension { get; set; }`
|
||||
- `MMEPositions RegionPosition { get; set; }`
|
||||
- `MMETestObjects RegionTestObject { get; set; }`
|
||||
- `string ISOCode { get; set; }` — Computed ISO code string (16 characters).
|
||||
|
||||
**Properties (Available Options):**
|
||||
Each ISO metadata type has corresponding `All*` and `All*Strings` properties for UI binding:
|
||||
- `MMEDirections[] AllDirections`, `string[] AllDirectionsStrings`
|
||||
- `MMEFilterClasses[] AllFilterClasses`, `string[] AllFilterClassStrings`
|
||||
- `MMEFineLocations1[] AllFineLocations1`, `string[] AllFineLocations1Strings`
|
||||
- `MMEFineLocations2[] AllFineLocations2`, `string[] AllFineLocations2Strings`
|
||||
- `MMEFineLocations3[] AllFineLocations3`, `string[] AllFineLocations3Strings`
|
||||
- `MMETransducerMainLocation[] AllMainLocations`, `string[] AllMainLocationsStrings`
|
||||
- `MMEPhysicalDimensions[] AllPhysicalDimensions`, `string[] AllPhysicalDimensionStrings`
|
||||
- `MMEPositions[] AllPositions`, `string[] AllPositionStrings`
|
||||
|
||||
**Properties (Channels):**
|
||||
- `TestObjectTemplateChannel[] RegionChannels { get; set; }` — Filtered channel list based on region ISO settings.
|
||||
- `TemplateChannelUI[] RegionUIChannels { get; set; }` — Corresponding UI channel wrappers.
|
||||
|
||||
**Properties (UI State):**
|
||||
- `Visibility RegionAddVisibility { get; set; }` — Defaults to `Visible`.
|
||||
- `Visibility RegionDeleteVisibility { get; set; }` — Defaults to `Hidden`.
|
||||
|
||||
**Methods:**
|
||||
- `TemplateRegion ToISORegion(TestObjectTemplate template, Zone zone, int number)` — Serializes this region to a `TemplateRegion` for persistence.
|
||||
|
||||
---
|
||||
|
||||
## 3. Invariants
|
||||
|
||||
1. **Picture Index Validity**: `PictureIndex` is always in the range `[-1, AllPictures.Length - 1]`. A value of `-1` indicates no picture is selected and `PictureSource` is `null`.
|
||||
|
||||
2. **Thread Safety on Picture Loading**: All access to `_fileNames` in `Zone` is protected by `lock(MyLock)`. The static lock object ensures consistency across all `Zone` instances.
|
||||
|
||||
3. **Region-Adorner Binding**: When a `Region` is created via `Region(RegionAdorner, TestObjectTemplate)`, the `_adorner` field is set and used for `InvalidateVisual()` calls. When created via `Region(TestObjectTemplate, TemplateRegion)`, `_adorner` remains `null`.
|
||||
|
||||
4. **ISO Code Format**: `ISOCode` is always a 16-character string constructed via `ISO.IsoCode.GetString()` with fallback values ("?", "??", "????") for null properties.
|
||||
|
||||
5. **Coordinate Transformation**: `RegionAdorner.GetUpperLeft()` and `GetLowerRight()` return `(0,0)` if the adorned element is not an `Image` or has no `Source`.
|
||||
|
||||
6. **Channel Filtering Consistency**: `FilterRegionChannels()` removes channels that do not match the current ISO metadata selections. Channels are filtered in reverse order to safely remove while iterating.
|
||||
|
||||
---
|
||||
|
||||
## 4. Dependencies
|
||||
|
||||
### This module depends on:
|
||||
- **WPF Assemblies**: `System.Windows`, `System.Windows.Controls`, `System.Windows.Documents`, `System.Windows.Input`, `System.Windows.Media`, `System.Windows.Shapes`
|
||||
- **System I/O**: `System.IO.File`, `System.IO.Directory`, `System.IO.FileInfo`, `System.IO.Path`
|
||||
- **External Types** (defined elsewhere in the codebase):
|
||||
- `TestObjectTemplate` — Template container for test objects
|
||||
- `TestObjectTemplateChannel` — Channel definition within templates
|
||||
- `TemplateChannelUI` — UI wrapper for channels
|
||||
- `TemplateZone` — ISO DLL zone representation
|
||||
- `TemplateRegion` — Persisted region data
|
||||
- `MMEDirections`, `MMEFilterClasses`, `MMEFineLocations1/2/3`, `MMETransducerMainLocation`, `MMEPhysicalDimensions`, `MMEPositions`, `MMETestObjects` — ISO metadata types
|
||||
- `ISO.IsoCode` — ISO code string builder
|
||||
- `App` (Application subclass) — Provides `IsoDb` property for database lookups
|
||||
|
||||
### What depends on this module:
|
||||
- Cannot be determined from source alone; likely consumed by UI components for zone/region editing workflows.
|
||||
|
||||
---
|
||||
|
||||
## 5. Gotchas
|
||||
|
||||
1. **Hardcoded Picture Directory**: The `ZonePictures` directory path is constructed using `AppDomain.CurrentDomain.BaseDirectory`. This assumes the directory exists and is writable. No error handling for missing directory in `PopulateFilenames()`.
|
||||
|
||||
2. **BitmapImage Initialization in Constructor**: The `Zone(TemplateZone, TestObjectTemplate)` constructor wraps `BitmapImage` initialization in a try/catch that silently sets `PictureIndex = -1` on failure. The image load failure is not logged or surfaced.
|
||||
|
||||
3. **Commented-Out BasePropertyChanged Inheritance**: All three classes have commented-out `: BasePropertyChanged` inheritance, suggesting a refactoring or migration away from a common base class. This may indicate incomplete property change notification.
|
||||
|
||||
4. **Commented-Out Event Subscription**: In `Region.Template` setter and constructor, the `Template_PropertyChanged` subscription is commented out, but the handler method `Template_PropertyChanged` remains. This is dead code.
|
||||
|
||||
5. **Inconsistent Null Handling in Coordinate Transformation**: `GetUpperLeft()` returns `SelectRect.TopLeft` if the adorned element is not an `Image`, but `GetLowerRight()` returns `new Point(0, 0)` in the same scenario. This asymmetry could cause unexpected behavior.
|
||||
|
||||
6. **Application.Current Cast Without Null Check**: `Region.DetermineAvailableISOSettings()` uses `(Application.Current as App).IsoDb` without null checking. Will throw if called from a non-WPF context or before application initialization.
|
||||
|
||||
7. **Magic Strings for ISO Defaults**: Default/fallback values ("?", "??", "????") are hardcoded in multiple places (`SetISOCode`, `DetermineAvailableISOSettings`, `FilterRegionChannels`). These should be constants.
|
||||
|
||||
8. **Index Tracking Without Validation**: Properties like `RegionDirection` set `_directionIndex` based on list lookup, but if the value is not found in the list, the index behavior is undefined (would be `-1` from `IndexOf`).
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/Sensors/ZeroMethod.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/Sensors/InitialOffset.cs
|
||||
generated_at: "2026-04-17T16:12:18.709203+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "cb2911eb84adcb4a"
|
||||
---
|
||||
|
||||
# Sensors
|
||||
|
||||
### Purpose
|
||||
This module contains data structures representing sensor calibration and configuration parameters, specifically `ZeroMethod` and `InitialOffset`. It handles the parsing, storage, and change notification for sensor zeroing methods and initial engineering unit offsets.
|
||||
|
||||
### Public Interface
|
||||
* **`ZeroMethod`**: A class implementing `INotifyPropertyChanged` to represent a sensor zeroing configuration.
|
||||
* `ZeroMethod(ZeroMethodType zm, double start, double end)`: Constructor initializing method type and range.
|
||||
* `ZeroMethod(string zm)`: Constructor that parses a comma-separated string to initialize the object.
|
||||
* `ZeroMethod(ZeroMethod copy)`: Deep copy constructor.
|
||||
* `event PropertyChangedEventHandler PropertyChanged`: Event raised when a property value changes.
|
||||
* `ZeroMethodType Method { get; set; }`: The type of zeroing method.
|
||||
* `double Start { get; set; }`: The start value for the zeroing range.
|
||||
* `double End { get; set; }`: The end value for the zeroing range.
|
||||
* **`InitialOffset`**: A class representing an initial offset in Engineering Units (EU), supporting different calculation forms.
|
||||
* `InitialOffset()`: Default constructor (sets `Form` to `None`).
|
||||
* `InitialOffset(double d)`: Constructor for legacy format (sets `Form` to `EU`).
|
||||
* `InitialOffset(InitialOffset copy)`: Deep copy constructor.
|
||||
* `void FromDbSerializeString(string input)`: Deserializes the object from a string format used for database storage.
|
||||
* `enum Forms`: Defines the offset format (`None = 0`, `EU = 1`, `EUAtMV = 2`).
|
||||
* `Forms Form { get; set; }`: The format of the current instance.
|
||||
* `double EU { get; set; }`: The Engineering Unit value.
|
||||
* `double MV { get; set; }`: The millivolt (mV) value (used only when `Form` is `EUAtMV`).
|
||||
|
||||
### Invariants
|
||||
* **`ZeroMethod`**: When parsing via the string constructor, the invariant culture is used. If fewer than 3 tokens are present, the method returns without setting properties.
|
||||
* **`InitialOffset`**: When `Form` is `EUAtMV`, the `EU` property represents the value observed at `MV`, not the final offset (calculation required elsewhere).
|
||||
* **`InitialOffset`**: The `FromDbSerializeString` method expects exactly 3 tokens separated by the invariant culture list separator for valid forms; otherwise, it throws `InvalidDataException` or `FormatException`.
|
||||
|
||||
### Dependencies
|
||||
* **Depends on**:
|
||||
* `System`
|
||||
* `System.ComponentModel` (for `INotifyPropertyChanged`)
|
||||
* `System.Globalization` (for `CultureInfo.InvariantCulture`)
|
||||
* `System.IO` (for `InvalidDataException`)
|
||||
* **Dependents**: Unknown (consumers not present in provided source).
|
||||
|
||||
### Gotchas
|
||||
* **Silent Failure in `ZeroMethod`**: The `Initialize` method in `ZeroMethod` silently returns (doing nothing) if the input string has fewer than 3 tokens, potentially leaving the object in an uninitialized/default state without throwing an exception.
|
||||
* **Parsing Culture**: Both classes rely heavily on `CultureInfo.InvariantCulture
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestMetaData/LabratoryDetails.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestMetaData/CustomerDetails.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestMetaData/TestEngineerDetails.cs
|
||||
generated_at: "2026-04-17T16:44:34.283612+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "2e1e8d7dd687d918"
|
||||
---
|
||||
|
||||
# Documentation: TestMetaData Classes
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This module provides wrapper classes for test metadata entities (Laboratory, Customer, and Test Engineer details) within the `DatabaseImport` namespace. These classes serve as proxies to underlying `ISO` namespace types, exposing a simplified `Name` property interface. The module facilitates CRUD-like operations on test metadata, including singleton-based caching for test engineer records with thread-safe population and deletion capabilities.
|
||||
|
||||
---
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### `LabratoryDetails`
|
||||
A wrapper class for `ISO.LabratoryDetails`.
|
||||
|
||||
| Member | Signature | Description |
|
||||
|--------|-----------|-------------|
|
||||
| `Name` | `string` (get/set) | Gets or sets the laboratory name by delegating to the underlying `ISO.LabratoryDetails.Name`. |
|
||||
|
||||
**Note:** The class contains a `readonly` field `_lab` of type `ISO.LabratoryDetails`, but no constructor is visible in the source. Initialization behavior is unclear.
|
||||
|
||||
---
|
||||
|
||||
### `LabratoryDetailsList`
|
||||
A static utility class for laboratory collection operations.
|
||||
|
||||
| Member | Signature | Description |
|
||||
|--------|-----------|-------------|
|
||||
| `DeleteAll` | `static void DeleteAll()` | Deletes all laboratory details by calling `ISO.LabratoryDetails.DeleteLabratoryDetails()`. |
|
||||
|
||||
---
|
||||
|
||||
### `CustomerDetails`
|
||||
A wrapper class for `ISO.CustomerDetails`.
|
||||
|
||||
| Member | Signature | Description |
|
||||
|--------|-----------|-------------|
|
||||
| `Name` | `string` (get/set) | Gets or sets the customer name by delegating to the underlying `ISO.CustomerDetails.Name`. |
|
||||
|
||||
**Note:** The class contains a `readonly` field `_customerDetails` of type `ISO.CustomerDetails`, but no constructor is visible in the source. Initialization behavior is unclear.
|
||||
|
||||
---
|
||||
|
||||
### `CustomerDetailsList`
|
||||
A static utility class for customer collection operations.
|
||||
|
||||
| Member | Signature | Description |
|
||||
|--------|-----------|-------------|
|
||||
| `DeleteAll` | `static void DeleteAll()` | Deletes all customer details by calling `ISO.CustomerDetails.DeleteCustomerDetails()`. |
|
||||
|
||||
---
|
||||
|
||||
### `TestEngineerDetails`
|
||||
A wrapper class for `ISO.TestEngineerDetails`.
|
||||
|
||||
| Member | Signature | Description |
|
||||
@@ -0,0 +1,361 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestObject/TemplateChannelUI.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestObject/TestObjectTemplateCollection.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestObject/TestObjectList.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestObject/TestTestObject.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestObject/TestObjectTemplate.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestObject/TestObject.cs
|
||||
generated_at: "2026-04-17T15:53:12.658358+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "3da6de582f653aae"
|
||||
---
|
||||
|
||||
# TestObject Module Documentation
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This module provides the domain model for test objects (physical test groups) and their templates within the DatabaseImport subsystem. It manages the lifecycle, persistence, and configuration of test objects through an ISO 13499-compliant database layer. The module bridges between UI representations (`TemplateChannelUI`), business logic (`TestObject`, `TestTestObject`), template definitions (`TestObjectTemplate`), and the underlying ISO database storage, while supporting both ISO-standard and non-ISO test object configurations.
|
||||
|
||||
---
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### TemplateChannelUI
|
||||
**File:** `TemplateChannelUI.cs`
|
||||
|
||||
A GUI wrapper for template channels.
|
||||
|
||||
```csharp
|
||||
public TemplateChannelUI(TestObjectTemplateChannel channel)
|
||||
```
|
||||
Constructs a wrapper containing the provided `TestObjectTemplateChannel`. The internal `_channel` field is private with no public accessor exposed in the source.
|
||||
|
||||
---
|
||||
|
||||
### TestObjectTemplateCollection
|
||||
**File:** `TestObjectTemplateCollection.cs`
|
||||
|
||||
A singleton collection managing test object templates.
|
||||
|
||||
```csharp
|
||||
public static TestObjectTemplateCollection TemplateCollection { get; }
|
||||
```
|
||||
Lazy-initialized singleton accessor. Not thread-safe (no lock on initialization).
|
||||
|
||||
```csharp
|
||||
public void ReloadAll(bool loadSubComponents)
|
||||
```
|
||||
Currently empty implementation (logic commented out).
|
||||
|
||||
```csharp
|
||||
public TestObjectTemplate GetTemplate(string templateId)
|
||||
```
|
||||
Retrieves a template by ID from the ISO database. Returns `null` if not found.
|
||||
|
||||
```csharp
|
||||
public TestObjectTemplate SysBuiltTestObjectTemplate { get; }
|
||||
```
|
||||
Returns the system-built test object template (may be `null` as `_sysBuiltTestObjectTemplate` is never assigned in visible code).
|
||||
|
||||
```csharp
|
||||
public static void DeleteAll()
|
||||
```
|
||||
Static method that deletes all templates via `DeleteAllTemplates()` and reinitializes the singleton instance.
|
||||
|
||||
---
|
||||
|
||||
### TestObjectList
|
||||
**File:** `TestObjectList.cs`
|
||||
|
||||
A thread-safe singleton list managing test objects.
|
||||
|
||||
```csharp
|
||||
public static TestObjectList TestObjectsList { get; }
|
||||
```
|
||||
Thread-safe singleton accessor using `lock(MyLock)`.
|
||||
|
||||
```csharp
|
||||
public static TestObjectList AddedGroupsList { get; }
|
||||
```
|
||||
Separate thread-safe singleton for "added groups" (system-built test objects).
|
||||
|
||||
```csharp
|
||||
public void ReloadAll(bool bLoadSubComponents)
|
||||
```
|
||||
Empty implementation.
|
||||
|
||||
```csharp
|
||||
public TestObject GetTestObject(string serialNumber, bool bSysBuilt)
|
||||
```
|
||||
Retrieves a test object from the ISO database by serial number. Returns `null` if not found.
|
||||
|
||||
```csharp
|
||||
public TestObject GetTestObject(string serialNumber)
|
||||
```
|
||||
Attempts retrieval with `bSysBuilt=false` first, then `bSysBuilt=true` if the first attempt returns `null`.
|
||||
|
||||
```csharp
|
||||
public TestObject GetAddedGroup(string serialNumber)
|
||||
```
|
||||
Equivalent to `GetTestObject(serialNumber, true)`.
|
||||
|
||||
```csharp
|
||||
public void DeleteAll()
|
||||
```
|
||||
Deletes all test objects via `ISO.TestObject.DeleteAllTestObjects()`. Exceptions are silently caught.
|
||||
|
||||
---
|
||||
|
||||
### TestTestObject
|
||||
**File:** `TestTestObject.cs`
|
||||
|
||||
A test-specific test object with additional configuration, inheriting from `TestObject`.
|
||||
|
||||
```csharp
|
||||
public TestTestObject(TestObject obj)
|
||||
public TestTestObject(TestTestObject to)
|
||||
```
|
||||
Constructors that delegate to base `TestObject` constructor and copy metadata via `MetaCommonConstructor()`.
|
||||
|
||||
```csharp
|
||||
public MMEPositions Position { get; set; }
|
||||
```
|
||||
Gets/sets the group position. Setting propagates position to all required sensors with non-empty serial numbers in the test object. Special handling for `UserSetKey` ("@") toggles UI visibility.
|
||||
|
||||
```csharp
|
||||
public const string ChannelDefaultsKey = "#";
|
||||
public const string UserSetKey = "@";
|
||||
```
|
||||
Constants for position key values.
|
||||
|
||||
```csharp
|
||||
public Visibility GroupPositionComboBoxVisible { get; set; }
|
||||
public Visibility GroupPositionButtonVisible { get; set; }
|
||||
```
|
||||
UI visibility properties that collapse to `Visibility.Collapsed` when `SerializedSettings.ISOSupportLevel == ISOSupportLevels.NO_ISO`.
|
||||
|
||||
```csharp
|
||||
public MMETestObjects TestObject { get; set; }
|
||||
```
|
||||
Gets/sets the test object reference. Setting propagates `Test_Object` value to all required sensors.
|
||||
|
||||
```csharp
|
||||
public int ChannelTypesIndex { get; set; }
|
||||
```
|
||||
Index for channel types selection.
|
||||
|
||||
```csharp
|
||||
public void SetTestObject(string s)
|
||||
public void SetPosition(string s)
|
||||
```
|
||||
Direct setters that update backing fields and raise `OnPropertyChanged`.
|
||||
|
||||
```csharp
|
||||
public MMEPositions[] AvailablePositions { get; }
|
||||
public MMEPositions[] AvailableGroupPositions { get; }
|
||||
```
|
||||
Returns available positions from the database. `AvailableGroupPositions` prepends `_channelDefaultsGUID`.
|
||||
|
||||
```csharp
|
||||
public int ExcitationWarmupTimeMS { get; set; }
|
||||
public double TargetSampleRate { get; set; }
|
||||
public double PreTriggerSeconds { get; set; }
|
||||
public double PostTriggerSeconds { get; set; }
|
||||
```
|
||||
Test-specific timing configuration properties.
|
||||
|
||||
---
|
||||
|
||||
### TestObjectTemplate
|
||||
**File:** `TestObjectTemplate.cs`
|
||||
|
||||
Defines a template for creating test objects.
|
||||
|
||||
```csharp
|
||||
public enum Tags { ChannelCountText, PossibleChannelCountText, TemplateName, ... }
|
||||
```
|
||||
Enum for property change notification identifiers.
|
||||
|
||||
```csharp
|
||||
public TestObjectTemplate()
|
||||
public TestObjectTemplate(TestObjectTemplate copy, ref ISO13499FileDb db)
|
||||
public TestObjectTemplate(ISO.TestObjectTemplate template, ref ISO13499FileDb db)
|
||||
```
|
||||
Constructors: default, copy, and ISO-based initialization.
|
||||
|
||||
```csharp
|
||||
public string LastModifiedBy { get; set; } = "N/A";
|
||||
public DateTime LastModified { get; set; } = SqlDateTime.MinValue;
|
||||
```
|
||||
Audit metadata.
|
||||
|
||||
```csharp
|
||||
public int CurrentZoneIndex { get; set; }
|
||||
public Zone CurrentZone { get; set; }
|
||||
```
|
||||
Zone selection state.
|
||||
|
||||
```csharp
|
||||
public List<TestObjectTemplateChannel> RequiredChannels { get; set; }
|
||||
public TestObjectTemplateChannel[] TemplateAllChannels { get; set; }
|
||||
public TemplateChannelUI[] TemplateAllUIChannels { get; set; }
|
||||
public Zone[] TemplateZones { get; set; }
|
||||
```
|
||||
Channel and zone collections.
|
||||
|
||||
```csharp
|
||||
public MMETestObjects TestObject { get; set; }
|
||||
public string TestObjectType { get; set; }
|
||||
public string[] AvailableTestObjectTypes { get; set; }
|
||||
public int TestObjectTypeIndex { get; set; }
|
||||
```
|
||||
Test object type configuration.
|
||||
|
||||
```csharp
|
||||
public static MMETestObjects GetNonISOTestObject()
|
||||
```
|
||||
Creates or retrieves a non-ISO test object, generating a unique single-character code (A-Z, then 0-9). Throws `NotSupportedException` if all codes are exhausted.
|
||||
|
||||
```csharp
|
||||
public ISO.TestObjectTemplate ToISOTestObjectTemplate()
|
||||
```
|
||||
Converts this template to an ISO-compatible `ISO.TestObjectTemplate`.
|
||||
|
||||
---
|
||||
|
||||
### TestObject
|
||||
**File:** `TestObject.cs`
|
||||
|
||||
Core class representing a physical test object/group.
|
||||
|
||||
```csharp
|
||||
public enum Tags { SerialNumber, SerialNumberConverted, TestObjectType, ... }
|
||||
```
|
||||
Enum for property change notification identifiers.
|
||||
|
||||
```csharp
|
||||
public TestObject()
|
||||
public TestObject(TestObject copy)
|
||||
public TestObject(ISO.TestObject to, bool sysBuilt)
|
||||
```
|
||||
Constructors: default, copy, and ISO-based.
|
||||
|
||||
```csharp
|
||||
public void RefreshHardware()
|
||||
```
|
||||
Refreshes hardware collection from ISO test object.
|
||||
|
||||
```csharp
|
||||
public SerializedSettings.ISOSupportLevels GetObjectISOLevel()
|
||||
```
|
||||
Returns `NO_ISO` if template type contains `NON_ISO_TESTOBJECT_CHANNEL_TYPE` or `NONISOCHANNELTYPE`; otherwise `ISO_ONLY`.
|
||||
|
||||
```csharp
|
||||
public SensorData GetSensor(string channelId, string serialNumber, string alternateChannelId = null)
|
||||
```
|
||||
Retrieves sensor data with ISO settings applied. Falls back to `alternateChannelId` if primary lookup yields no settings. Applies filter class, position, polarity, range, timing, and mode settings from ISO sensor settings.
|
||||
|
||||
```csharp
|
||||
public void SetSensor(string channelName, SensorData sensor)
|
||||
```
|
||||
Persists sensor settings to the ISO test object for all `ISO.TestObject.SensorSettings` enum values.
|
||||
|
||||
```csharp
|
||||
public string SerialNumber { get; set; }
|
||||
public string SerialNumberConverted { get; set; }
|
||||
public string SerialNumberOrOriginalSerialNumber { get; }
|
||||
public string DisplaySerialNumber { get; set; }
|
||||
```
|
||||
Serial number properties with embedded/original handling.
|
||||
|
||||
```csharp
|
||||
public string TestSetupName { get; set; }
|
||||
public string TestObjectType { get; set; }
|
||||
public string ParentObject { get; set; }
|
||||
public bool SysBuilt { get; set; }
|
||||
```
|
||||
Core metadata properties.
|
||||
|
||||
```csharp
|
||||
public DASHardware[] Hardware { get; }
|
||||
public bool ContainsHardware(DASHardware h)
|
||||
public void SetHardwareFromISO()
|
||||
public void SetHardware(DASHardware[] hardware)
|
||||
public void AddHardware(DASHardware hardware)
|
||||
```
|
||||
Hardware management. `AddHardware` handles dummy hardware by appending `(01)`, `(02)`, etc. suffixes to avoid collisions.
|
||||
|
||||
```csharp
|
||||
public ISO.TestObject GetISOTestObject()
|
||||
```
|
||||
Returns the underlying ISO test object.
|
||||
|
||||
```csharp
|
||||
public TestObjectTemplate Template { get; set; }
|
||||
public void SetTemplateDontResetISOObject(TestObjectTemplate value)
|
||||
```
|
||||
Template management. `SetTemplateDontResetISOObject` avoids full ISO template reset.
|
||||
|
||||
```csharp
|
||||
public string[] ZoneNames { get; set; }
|
||||
public string TemplateType { get; }
|
||||
```
|
||||
Zone and template type accessors.
|
||||
|
||||
---
|
||||
|
||||
## 3. Invariants
|
||||
|
||||
1. **Singleton Initialization**: `TestObjectTemplateCollection.TemplateCollection` and `TestObjectList.TestObjectsList` are lazily initialized and, once created, return the same instance until explicitly reset (via `DeleteAll()` for templates).
|
||||
|
||||
2. **Thread Safety**: `TestObjectList` singleton access uses `lock(MyLock)`; `TestObjectTemplateCollection` does not.
|
||||
|
||||
3. **Hardware Uniqueness**: Within a `TestObject`, hardware is stored in a `Dictionary<string, DASHardware>` keyed by `SerialNumber`. `AddHardware` will not add duplicate serial numbers.
|
||||
|
||||
4. **Dummy Hardware Naming**: When adding dummy hardware with a conflicting serial number, the system appends `(NN)` suffixes starting at `(01)`.
|
||||
|
||||
5. **ISO Object Synchronization**: Setting `TestObject.SerialNumber`, `TestObject.ParentObject`, or `TestObject.Template` updates the underlying `_isoTestObject` accordingly.
|
||||
|
||||
6. **Position Propagation**: In `TestTestObject`, setting `Position` or `TestObject` propagates the value to all required sensors with non-empty serial numbers.
|
||||
|
||||
7. **Filter Class Fallback**: In `GetSensor()`, if `FilterClassIso` is `"?"`, it defaults to `"P"` (Prefiltered/Unfiltered).
|
||||
|
||||
---
|
||||
|
||||
## 4. Dependencies
|
||||
|
||||
### This module depends on:
|
||||
- **System namespaces**: `System`, `System.Collections.Generic`, `System.Linq`, `System.Globalization`, `System.Data.SqlTypes`, `System.Windows`
|
||||
- **ISO Database Layer**: `ISO.TestObject`, `ISO.TestObjectTemplate`, `ISO13499FileDb`, `ISO.TestObject.SensorSettings`, `ISO.TestObject.SensorSetting`, `TemplateZone`
|
||||
- **Application Layer**: `App` (accessed via `Application.Current as App`), `App.IsoDb`
|
||||
- **Domain Types**: `MMEPositions`, `MMETestObjects`, `MMEPossibleChannels`, `Zone`, `DASHardware`, `DASHardwareList`, `SensorData`, `SensorsCollection`, `FilterClass`, `DigitalOutputModes`, `SquibFireMode`, `DigitalInputModes`
|
||||
- **Configuration**: `SerializedSettings.ISOSupportLevels`
|
||||
- **Constants**: `Constants.NON_ISO_TESTOBJECT_NAME`, `Constants.NON_ISO_TESTOBJECT_CHANNEL_TYPE`
|
||||
- **Base Classes**: `DbTimeStampBase` (inherited by `TestObject`)
|
||||
|
||||
### What depends on this module:
|
||||
- Cannot be determined from source alone; however, the public singletons (`TestObjectTemplateCollection.TemplateCollection`, `TestObjectList.TestObjectsList`) suggest external consumers access templates and test objects through these entry points.
|
||||
|
||||
---
|
||||
|
||||
## 5. Gotchas
|
||||
|
||||
1. **Commented-Out Code**: `TestObjectTemplateCollection.ReloadAll()` and `TestObjectList.ReloadAll()` have empty implementations with commented-out logic. Calling these methods does nothing.
|
||||
|
||||
2. **Non-Thread-Safe Singleton**: `TestObjectTemplateCollection.TemplateCollection` uses `volatile` but no `lock`, unlike `TestObjectList` which is properly thread-safe.
|
||||
|
||||
3. **SysBuiltTestObjectTemplate Always Null**: The `_sysBuiltTestObjectTemplate` field is declared but never assigned in the visible source, so `SysBuiltTestObjectTemplate` will always return `null`.
|
||||
|
||||
4. **Silent Exception Swallowing**: `DeleteAll()` methods in both `TestObjectTemplateCollection` and `TestObjectList` catch and silently ignore all exceptions.
|
||||
|
||||
5. **GetNonISOTestObject Code Exhaustion**: If all single-character codes (A-Z, 0-9) are exhausted, `GetNonISOTestObject()` throws `NotSupportedException` with message `"TestObjectTemplate_CouldNotCreateNONISOTESTOBJECT"`.
|
||||
|
||||
6. **DisplaySerialNumber Side Effect**: Setting `DisplaySerialNumber` assumes the object is an "Added Group" and modifies `SerialNumber`, `SerialNumberConverted`, `OriginalSerialNumber`, and `OriginalTemplateName` in a specific pattern.
|
||||
|
||||
7. **Channel ID vs Channel Name**: `GetSensor()` accepts both `channelId` and `alternateChannelId` because, per the source comment (fogbugz 11910), channel name and channel ID were alternately used for sensor lookups.
|
||||
|
||||
8. **ISO Support Level Affects UI Visibility**: `TestTestObject.GroupPositionComboBoxVisible` and `GroupPositionButtonVisible` return `Visibility.Collapsed` when `ISOSupportLevel == NO_ISO`, regardless of their backing field values.
|
||||
|
||||
9. **Hardware Dictionary Keyed by SerialNumber**: `TestObject._hardware` is keyed by serial number, not hardware ID. Two hardware items with different IDs but the same serial number cannot coexist in the same test object.
|
||||
@@ -0,0 +1,120 @@
|
||||
---
|
||||
source_files:
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestTemplate/ICachedContainer.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestTemplate/HardwareInclusionInstruction.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestTemplate/TestTemplateLite.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestTemplate/RegionOfInterest.cs
|
||||
- DataPRO/Modules/DatabaseImporter/DatabaseImport/Classes/TestTemplate/TestTemplateList.cs
|
||||
generated_at: "2026-04-17T15:52:00.688061+00:00"
|
||||
model: "zai-org/GLM-5-FP8"
|
||||
schema_version: 1
|
||||
sha256: "580aa33f674a5152"
|
||||
---
|
||||
|
||||
# Documentation: DatabaseImport.TestTemplate Namespace
|
||||
|
||||
## 1. Purpose
|
||||
|
||||
This module provides classes and interfaces for managing test templates, hardware configuration, and sensor settings within the DatabaseImport system. It handles the definition of test setups (via `TestTemplateLite`), regions of interest for data analysis, hardware inclusion rules for test configurations, and cached hardware lookups. The module serves as a bridge between database-stored test configurations and runtime test execution, supporting both lightweight test setup representations and full template management through a singleton list pattern.
|
||||
|
||||
---
|
||||
|
||||
## 2. Public Interface
|
||||
|
||||
### ICachedContainer (Interface)
|
||||
**Namespace:** `DatabaseImport`
|
||||
|
||||
```csharp
|
||||
DASHardware GetCachedHardware(string serialNumber);
|
||||
IISOHardware[] GetAllCachedHardware();
|
||||
```
|
||||
- **GetCachedHardware**: Retrieves a single `DASHardware` instance by serial number from cache.
|
||||
- **GetAllCachedHardware**: Returns an array of all cached `IISOHardware` instances.
|
||||
|
||||
---
|
||||
|
||||
### HardwareInclusionInstruction (Class)
|
||||
**Namespace:** `DatabaseImport`
|
||||
|
||||
```csharp
|
||||
public HardwareInclusionInstruction(string hardwareId, Actions action)
|
||||
```
|
||||
|
||||
**Properties:**
|
||||
- `string HardwareId { get; }` - Identifier for the hardware item.
|
||||
- `Actions Action { get; }` - The inclusion action to perform.
|
||||
|
||||
**Nested Enum:**
|
||||
- `Actions.Remove` - Exclude hardware that would otherwise be included by group membership.
|
||||
- `Actions.Add` - Include hardware that would not otherwise be included by group membership.
|
||||
|
||||
---
|
||||
|
||||
### TestTemplateLite (Class)
|
||||
**Namespace:** `DatabaseImport`
|
||||
**Implements:** `ITestSetup`
|
||||
|
||||
**Properties:**
|
||||
- `string Name { get; set; }` - Test setup name.
|
||||
- `string Description { get; set; }` - Default: empty string.
|
||||
- `RecordingModes RecordingMode { get; set; }` - Recording mode selection.
|
||||
- `double PreTriggerSeconds { get; set; }` - Returns `0D` when `RecordingMode` is `Recorder` or `HybridRecorder`; otherwise returns the private `_preTriggerSeconds` value.
|
||||
- `string ErrorMessage { get; set; }` - Error message string.
|
||||
- `string CompletionErrorMessage { get; }` - Read-only; returns `ErrorMessage` truncated to 250 characters if longer.
|
||||
- `double PostTriggerSeconds { get; set; }` - Post-trigger duration.
|
||||
- `DateTime LastModified { get; set; }` - Modification timestamp.
|
||||
- `string LastModifiedBy { get; set; }` - User who last modified the setup.
|
||||
- `bool IsComplete { get; set; }` - Completion status flag.
|
||||
|
||||
---
|
||||
|
||||
### RegionOfInterest (Class)
|
||||
**Namespace:** `DatabaseImport`
|
||||
**Implements:** `INotifyPropertyChanged`
|
||||
**Attribute:** `[Serializable]`
|
||||
|
||||
**Constructors:**
|
||||
```csharp
|
||||
public RegionOfInterest()
|
||||
public RegionOfInterest(bool isDefault = false)
|
||||
public RegionOfInterest(string suffix = "", bool isDefault = false, double start = -1D, double end = 1D)
|
||||
```
|
||||
|
||||
**Properties:**
|
||||
- `string Suffix { get; set; }` - Auto-prefixed with `"_"` if not already present; empty/whitespace-only values are handled specially.
|
||||
- `double Start { get; set; }` - Region start time; constrained to be less than `End` and greater than or equal to `PreTrigger`.
|
||||
- `double End { get; set; }` - Region end time; constrained to be greater than `Start` and less than or equal to `PostTrigger`.
|
||||
- `double PreTrigger { get; set; }` - Pre-trigger boundary; setting this updates `Start` if `Start < PreTrigger`.
|
||||
- `double PostTrigger { get; set; }` - Post-trigger boundary; setting this updates `End` if `End > PostTrigger`.
|
||||
- `bool IsEnabled { get; set; }` - Default: `true`.
|
||||
- `bool IsDefault { get; private set; }` - Set via constructor only.
|
||||
|
||||
**Event:**
|
||||
- `event PropertyChangedEventHandler PropertyChanged` - Raised on property changes.
|
||||
|
||||
---
|
||||
|
||||
### TestTemplateList (Class)
|
||||
**Namespace:** `DatabaseImport`
|
||||
|
||||
**Singleton Access:**
|
||||
```csharp
|
||||
public static TestTemplateList TestTemplatesList { get; }
|
||||
```
|
||||
|
||||
**Properties:**
|
||||
- `TestTemplate TemporaryTemplate { get; set; }` - Holds a template in memory without committing to database.
|
||||
|
||||
**Static Methods:**
|
||||
```csharp
|
||||
public static SensorData GetSensorFromSettings(string settings, string serial)
|
||||
public static SensorData GetSensorFromSettings(string settings, string serial, Dictionary<string, SensorData> lookup)
|
||||
public static string GetSensorSettings(SensorData sd)
|
||||
public static bool SysBuiltObject(string serialNumber)
|
||||
public static void ConvertToDictionary(DataTable dt, ref Dictionary<string, List<Dictionary<string, object>>> lookup, string key)
|
||||
```
|
||||
|
||||
**Instance Methods:**
|
||||
```csharp
|
||||
public void Reload()
|
||||
public void DeleteAll
|
||||
Reference in New Issue
Block a user