--- source_files: - Common/DTS.CommonCore/Interface/DTS.Viewer/ChartOptions/IChartOptionsView.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/ChartOptions/IChartOptionsViewModel.cs - Common/DTS.CommonCore/Interface/DTS.Viewer/ChartOptions/IChartOptionsModel.cs generated_at: "2026-04-16T12:25:32.635258+00:00" model: "zai-org/GLM-5-FP8" schema_version: 1 sha256: "a0d576d041a71e53" --- # Documentation: Chart Options Interfaces ## 1. Purpose This module defines the contract for chart configuration and visualization options within the DTS system. It provides three interfaces (`IChartOptionsView`, `IChartOptionsViewModel`, `IChartOptionsModel`) that follow an MVVM (Model-View-ViewModel) pattern to manage chart display settings including axis scaling, cursors, unit types, filtering, and export functionality. These interfaces enable decoupled communication between UI components and business logic for chart rendering. --- ## 2. Public Interface ### IChartOptionsView **Namespace:** `DTS.Common.Interface` A marker interface extending `IBaseView` with no additional members. ```csharp public interface IChartOptionsView : IBaseView { } ``` --- ### IChartOptionsViewModel **Namespace:** `DTS.Common.Interface` Extends `IBaseViewModel` and coordinates between the view and model for chart options. | Member | Type | Description | |--------|------|-------------| | `View` | `IBaseView` | Gets or sets the Search View. | | `Parent` | `IBaseViewModel` | Gets or sets the parent view model. | | `Model` | `IChartOptionsModel` | Gets or sets the associated chart options model. | | `ContextSearchRegion` | `object` | Gets or sets a context search region object. | **Methods:** | Method | Signature | Description | |--------|-----------|-------------| | `PublishChanges` | `void PublishChanges()` | Publishes pending changes. | | `ResetZoomMethod` | `void ResetZoomMethod()` | Resets the chart zoom. | | `ResetTMethod` | `void ResetTMethod()` | Resets the time axis. | | `SaveToPDFMethod` | `void SaveToPDFMethod()` | Saves the chart to PDF. | | `ShowCusor` | `void ShowCusor(bool value)` | Shows or hides the cursor. | | `ShowMinMaxCursor` | `void ShowMinMaxCursor(bool value)` | Shows or hides the min/max cursor. | --- ### IChartOptionsModel **Namespace:** `DTS.Common.Interface` Extends `IBaseModel` and holds all chart configuration state and commands. **ADC/mV Display Properties:** | Property | Type | Description | |----------|------|-------------| | `SupportsADC` | `bool` | True if all channels support ADC. | | `SupportsMV` | `bool` | True if all channels support mV. | | `DisplayingVolts` | `bool` | Indicates if current mV option is for Volts or mV. | | `MVOrV` | `string` | Returns "mV" or "V" depending on `DisplayingVolts` value. | **Y-Axis Properties:** | Property | Type | Description | |----------|------|-------------| | `FullScaleValues` | `List` | Available full scale values. | | `SelectedFullScaleValue` | `double` | Currently selected full scale value. | | `MinFixedY` | `double` | Minimum fixed Y value. | | `MaxFixedY` | `double` | Maximum fixed Y value. | | `LockedY` | `bool` | Indicates if Y-axis is locked. | | `YRange` | `YRangeScaleEnum` | Y-axis range scale setting. | | `UnitType` | `ChartUnitTypeEnum` | Chart unit type. | | `UnitTypeDescription` | `string` | Description of the unit type (getter only). | **Time Axis Properties:** | Property | Type | Description | |----------|------|-------------| | `MinFixedT` | `double` | Minimum fixed T value. | | `MaxFixedT` | `double` | Maximum fixed T value. | | `LockedT` | `bool` | Indicates if T-axis is locked. | | `TimeUnitType` | `TimeUnitTypeEnum` | Time unit type setting. | **Cursor Properties:** | Property | Type | Description | |----------|------|-------------| | `ShowCursor` | `bool` | Indicates if cursor is shown. | | `CurrentCursorValues` | `string` | Current cursor values as string. | | `IsCursorsAvailable` | `bool` | Indicates if cursors are available. | **Filter Properties:** | Property | Type | Description | |----------|------|-------------| | `Filter` | `FilterOptionEnum` | Filter option setting. | | `SelectedFilter` | `IFilterClass` | Selected filter class instance. | **Other Properties:** | Property | Type | Description | |----------|------|-------------| | `Parent` | `IChartOptionsViewModel` | Parent view model reference. | | `CanPublishChanges` | `bool` | Indicates if changes can be published. | | `ReadData` | `bool` | Indicates if data should be read. | | `IsDigitalChannel` | `bool` | Indicates if channel is digital. | | `DecimateData` | `bool` | Indicates if data should be decimated. | | `WidthPoints` | `long` | Width points value. | **Commands:** | Property | Type | Description | |----------|------|-------------| | `ResetZoomCommand` | `DelegateCommand` | Command to reset zoom. | | `ResetTCommand` | `DelegateCommand` | Command to reset time axis. | | `SaveToPDFCommand` | `DelegateCommand` | Command to save to PDF. | --- ## 3. Invariants 1. **Namespace Mismatch:** All three interfaces are declared in `DTS.Common.Interface` namespace, despite the file path suggesting `DTS.Viewer.ChartOptions`. The `// ReSharper disable CheckNamespace` directive indicates this is intentional. 2. **MVVM Hierarchy:** - `IChartOptionsView` must implement `IBaseView` - `IChartOptionsViewModel` must implement `IBaseViewModel` - `IChartOptionsModel` must implement `IBaseModel` 3. **Parent-Child Relationships:** - `IChartOptionsModel.Parent` must reference the `IChartOptionsViewModel` that owns it - `IChartOptionsViewModel.Model` must reference the `IChartOptionsModel` it manages 4. **Unit Display Logic:** `MVOrV` property return value is determined by `DisplayingVolts` state. 5. **Command Availability:** The model exposes commands as `DelegateCommand` (Prism), implying they follow the `ICommand` pattern with execute/can-execute semantics. --- ## 4. Dependencies ### This module depends on: - `DTS.Common.Base` - Provides `IBaseView`, `IBaseViewModel`, `IBaseModel` - `DTS.Common.Enums.Viewer` - Provides `YRangeScaleEnum`, `ChartUnitTypeEnum`, `TimeUnitTypeEnum`, `FilterOptionEnum` - `DTS.Common.Interface.Sensors.SoftwareFilters` - Provides `IFilterClass` - `Microsoft.Practices.Prism.Commands` - Provides `DelegateCommand` - `System.Collections.Generic` - Provides `List` - `System.Windows.Input` - Provides `ICommand` (indirectly via `DelegateCommand`) ### What depends on this module: - **Unclear from source alone** - No consumers are shown in these files. Likely implementations exist in a viewer/charting module. --- ## 5. Gotchas 1. **Typo in Method Name:** `ShowCusor(bool value)` is misspelled (should be `ShowCursor`). This typo is part of the public API and must be used as-is. 2. **Namespace/Path Inconsistency:** Files are located in `Common/DTS.CommonCore/Interface/DTS.Viewer/ChartOptions/` but declare namespace `DTS.Common.Interface`. The ReSharper suppression confirms this is deliberate but may cause confusion during navigation. 3. **Command vs Method Duplication:** `IChartOptionsModel` exposes `ResetZoomCommand`, `ResetTCommand`, `SaveToPDFCommand` while `IChartOptionsViewModel` exposes corresponding methods `ResetZoomMethod()`, `ResetTMethod()`, `SaveToPDFMethod()`. The relationship between these is not documented in the source. 4. **Mixed Naming Conventions:** Some methods use `Method` suffix (e.g., `ResetZoomMethod`) while properties use `Command` suffix (e.g., `ResetZoomCommand`). The rationale is unclear from source alone.