149 lines
7.3 KiB
Markdown
149 lines
7.3 KiB
Markdown
|
|
---
|
||
|
|
source_files:
|
||
|
|
- Common/DTS.CommonCore/Interface/DTS.Viewer/TestModification/ITestModificationView.cs
|
||
|
|
- Common/DTS.CommonCore/Interface/DTS.Viewer/TestModification/ITestModificationViewModel.cs
|
||
|
|
- Common/DTS.CommonCore/Interface/DTS.Viewer/TestModification/ITestModificationModel.cs
|
||
|
|
generated_at: "2026-04-16T12:22:54.326019+00:00"
|
||
|
|
model: "zai-org/GLM-5-FP8"
|
||
|
|
schema_version: 1
|
||
|
|
sha256: "a5f27c5a375dc7b6"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Documentation: Test Modification Module
|
||
|
|
|
||
|
|
## 1. Purpose
|
||
|
|
|
||
|
|
This module defines the contract for a Test Modification feature following the Model-View-ViewModel (MVVM) pattern. It provides interfaces for modifying test channel parameters—including description, EU multiplier/offset, T0 timing, line fit boundaries, sensitivity, software filters, and data flags—within a DTS data acquisition or sensor testing system. The module tracks modification state for each parameter and supports publishing changes back to the underlying data.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. Public Interface
|
||
|
|
|
||
|
|
### `ITestModificationView`
|
||
|
|
**Namespace:** `DTS.Common.Interface`
|
||
|
|
|
||
|
|
A marker interface representing the view component for test modification.
|
||
|
|
|
||
|
|
```
|
||
|
|
public interface ITestModificationView : IBaseView { }
|
||
|
|
```
|
||
|
|
|
||
|
|
- Inherits from `IBaseView`
|
||
|
|
- Defines no additional members
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### `ITestModificationViewModel`
|
||
|
|
**Namespace:** `DTS.Common.Interface`
|
||
|
|
|
||
|
|
The view model interface coordinating the test modification view and managing ISO code filter mapping behavior.
|
||
|
|
|
||
|
|
```
|
||
|
|
public interface ITestModificationViewModel : IBaseViewModel
|
||
|
|
```
|
||
|
|
|
||
|
|
**Properties:**
|
||
|
|
|
||
|
|
| Name | Type | Access | Description |
|
||
|
|
|------|------|--------|-------------|
|
||
|
|
| `View` | `ITestModificationView` | get/set | The associated view instance |
|
||
|
|
| `Parent` | `IBaseViewModel` | get/set | Reference to the parent view model |
|
||
|
|
| `UseISOCodeFilterMapping` | `bool` | get/set | Controls whether ISO code should be modified when software filter is modified |
|
||
|
|
| `UseZeroForUnfiltered` | `bool` | get/set | Controls whether '0' or 'P' is used when ISO code is modified due to software filter change |
|
||
|
|
|
||
|
|
**Methods:**
|
||
|
|
|
||
|
|
| Name | Return Type | Description |
|
||
|
|
|------|-------------|-------------|
|
||
|
|
| `PublishChanges()` | `void` | Publishes/commits the modifications |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### `ITestModificationModel`
|
||
|
|
**Namespace:** `DTS.Common.Interface`
|
||
|
|
|
||
|
|
The model interface holding test modification state for a selected channel.
|
||
|
|
|
||
|
|
```
|
||
|
|
public interface ITestModificationModel : IBaseModel
|
||
|
|
```
|
||
|
|
|
||
|
|
**Properties:**
|
||
|
|
|
||
|
|
| Name | Type | Access | Description |
|
||
|
|
|------|------|--------|-------------|
|
||
|
|
| `Parent` | `ITestModificationViewModel` | get/set | Reference to the parent view model |
|
||
|
|
| `SelectedChannel` | `ITestChannel` | get/set | The channel on which modifications are based |
|
||
|
|
| `Description` | `string` | get/set | The `ChannelDescriptionString` of the selected channel |
|
||
|
|
| `EuMultiplier` | `double` | get/set | EU multiplier of the selected channel |
|
||
|
|
| `EuOffset` | `double` | get/set | EU offset of the selected channel |
|
||
|
|
| `T0` | `double` | get/set | Current T0 offset in milliseconds |
|
||
|
|
| `T1` | `double` | get/set | Line fit start time in milliseconds |
|
||
|
|
| `T2` | `double` | get/set | Line fit end time in milliseconds |
|
||
|
|
| `Sensitivity` | `double` | get/set | Sensitivity of the selected channel |
|
||
|
|
| `SelectedFilter` | `IFilterClass` | get/set | Software filter for the selected class |
|
||
|
|
| `T0Mode` | `T0Mode` | get/set | T0 adjustment mode |
|
||
|
|
| `SelectedDataFlag` | `DataFlag` | get/set | Data flag for the selected channel |
|
||
|
|
| `IsModified` | `bool` | get | Indicates whether any values have changed from default |
|
||
|
|
| `IsModifiedDescription` | `bool` | get | Indicates whether the Description field has been modified |
|
||
|
|
| `IsModifiedEuMultiplier` | `bool` | get | Indicates whether EuMultiplier has been modified |
|
||
|
|
| `IsModifiedEuOffset` | `bool` | get | Indicates whether EU offset has been modified |
|
||
|
|
| `IsModifiedT0` | `bool` | get | Indicates whether T0 has been modified |
|
||
|
|
| `IsModifiedLineFit` | `bool` | get/set | Indicates whether T1 or T2 has been modified |
|
||
|
|
| `IsModifiedSensitivity` | `bool` | get | Indicates whether sensitivity has been modified |
|
||
|
|
| `IsModifiedFilter` | `bool` | get | Indicates whether filter has been modified |
|
||
|
|
| `IsModifiedDataFlag` | `bool` | get | Indicates whether DataFlag has been modified |
|
||
|
|
|
||
|
|
**Methods:**
|
||
|
|
|
||
|
|
| Name | Return Type | Description |
|
||
|
|
|------|-------------|-------------|
|
||
|
|
| `ValidateT0()` | `bool` | Returns `true` if T0 is valid (within the dataset), `false` otherwise |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. Invariants
|
||
|
|
|
||
|
|
1. **Parent-Child Hierarchy:** `ITestModificationModel.Parent` must reference an `ITestModificationViewModel`, and `ITestModificationViewModel.Parent` must reference an `IBaseViewModel`, establishing a three-level hierarchy (Model → ViewModel → Parent ViewModel).
|
||
|
|
|
||
|
|
2. **Channel Selection Required:** `SelectedChannel` must be set before modification properties (`Description`, `EuMultiplier`, `EuOffset`, `T0`, `T1`, `T2`, `Sensitivity`, `SelectedFilter`, `SelectedDataFlag`) can meaningfully be accessed or modified—they represent values "of the selected channel."
|
||
|
|
|
||
|
|
3. **Modification Tracking Consistency:** Each `IsModified*` property should reflect the actual modification state of its corresponding value property. The aggregate `IsModified` property should be `true` if any individual `IsModified*` flag is `true`.
|
||
|
|
|
||
|
|
4. **T0 Validation:** `ValidateT0()` must be called to confirm T0 is within the dataset bounds before relying on the T0 value.
|
||
|
|
|
||
|
|
5. **Line Fit Ordering:** While not explicitly enforced in the interface, `T1` (line fit start) and `T2` (line fit end) are expected to represent a valid time range—unclear from source whether T1 < T2 is enforced.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. Dependencies
|
||
|
|
|
||
|
|
### This module depends on:
|
||
|
|
- **`DTS.Common.Base`** — Provides base interfaces:
|
||
|
|
- `IBaseView`
|
||
|
|
- `IBaseViewModel`
|
||
|
|
- `IBaseModel`
|
||
|
|
- **`DTS.Common.Interface.Sensors.SoftwareFilters`** — Provides:
|
||
|
|
- `IFilterClass` (referenced in comment as replacement for `CFCFilter` per FB 13120)
|
||
|
|
|
||
|
|
### External types referenced (definitions not in source):
|
||
|
|
- `ITestChannel` — Type of `SelectedChannel`; location unknown
|
||
|
|
- `T0Mode` — Enum or type for T0 adjustment mode; location unknown
|
||
|
|
- `DataFlag` — Enum or type for channel data flags; location unknown
|
||
|
|
|
||
|
|
### Dependents:
|
||
|
|
- Cannot be determined from source alone. Concrete implementations of these interfaces would exist elsewhere in the codebase.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. Gotchas
|
||
|
|
|
||
|
|
1. **Namespace Discrepancy:** The file path suggests namespace `DTS.Viewer.TestModification`, but the actual namespace declared is `DTS.Common.Interface`. The `// ReSharper disable CheckNamespace` directive indicates this mismatch is intentional/suppressed.
|
||
|
|
|
||
|
|
2. **Filter Type Change (FB 13120):** The comment indicates `IFilterClass` replaced `CFCFilter` as the type for `SelectedFilter`. Code referencing the old type may exist elsewhere in the codebase.
|
||
|
|
|
||
|
|
3. **ISO Code Filter Mapping Behavior:** The interaction between `UseISOCodeFilterMapping` and `UseZeroForUnfiltered` is not defined in these interfaces. The behavior for when ISO code is modified due to filter changes depends on implementation details not present here.
|
||
|
|
|
||
|
|
4. **IsModifiedLineFit is Read/Write:** Unlike other `IsModified*` properties which are read-only, `IsModifiedLineFit` has both getter and setter. The reason for this inconsistency is unclear from source alone.
|
||
|
|
|
||
|
|
5. **T0 Validation Not Automatic:** The interface provides `ValidateT0()` as an explicit method rather than automatic validation on set. Callers must remember to invoke it.
|