7.6 KiB
7.6 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||
|---|---|---|---|---|---|---|---|
|
2026-04-16T02:22:07.614992+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | 1785995e6227da9e |
Realtime
Documentation: Realtime Channel Selection Module
1. Purpose
This module defines the foundational interfaces for a realtime channel selection view and view model within the DTS (Data Tracking System) architecture. It enables UI components to present and manage a selectable list of realtime data channels (e.g., sensor readings) for user interaction, supporting operations such as filtering by search text, setting the available channel list, and programmatically selecting a specific channel. It adheres to the MVVM (Model-View-ViewModel) pattern, with clear separation between the view (IRealtimeChannelSelectView), the view model (IRealtimeChannelSelectViewModel), and the underlying channel data model (IRealtimeChannel).
2. Public Interface
IRealtimeChannelSelectView
- Definition:
public interface IRealtimeChannelSelectView : IBaseView - Behavior: A marker interface representing the view (UI layer) for channel selection. Inherits from
IBaseView, implying standard view lifecycle or binding contract (e.g.,DataContextsetup, initialization hooks). No additional methods or properties are defined here—implementation details (e.g., controls, rendering) are left to concrete classes.
IRealtimeChannelSelectViewModel
- Definition:
public interface IRealtimeChannelSelectViewModel : IBaseViewModel - Behavior: The view model mediating between the channel selection view and the underlying channel data.
ChannelSelectView:IRealtimeChannelSelectView ChannelSelectView { get; set; }
Gets or sets the associated view instance. Used for view-model-to-view coordination (e.g., triggering UI updates or responding to view events).SetAvailableChannels(IRealtimeChannel[] channels):
Updates the list of channels available for selection. The view should refresh its channel list UI to reflect this new set.SetSearchText(string searchText):
Sets the current search/filter text. The view should filter the displayed channel list based on this text (e.g., matchingSensorName,ChannelName, or other display fields).SetRealtimeChannel(IRealtimeChannel channel):
Programmatically selects the specified channel. This likely updates the view’s active selection state and may trigger side effects (e.g., updating a details panel or starting data subscription).
IRealtimeChannel
- Definition:
public interface IRealtimeChannel - Behavior: Represents a single realtime data channel (e.g., a sensor reading). Provides metadata and identity for the channel.
Capacity:double Capacity { get; }
The maximum capacity (e.g., in physical units or samples) for this channel.DisplayOrder:int DisplayOrder { get; }
Integer priority for sorting channels in the UI (lower values displayed first).SensorName:string SensorName { get; }
Human-readable name of the sensor (e.g., "Temperature Sensor A").ChannelName:string ChannelName { get; }
Name of the channel itself (may be distinct fromSensorName).DasNames:string[] DasNames { get; }
Array of DAS (Data Acquisition System) names associated with this channel.SensorSerial:string SensorSerial { get; }
Serial number of the physical sensor.Units:string Units { get; }
Raw unit string (e.g., "V", "°C").UserValue1:string UserValue1 { get; }
Custom user-defined string (purpose context-dependent).GroupName:string GroupName { get; }
Logical group name for channel categorization (e.g., "Engine", "Hydraulics").DisplayUnit:string DisplayUnit { get; }
Unit string formatted for display (may differ fromUnits, e.g., "Degrees C").HardwareChannelString:string HardwareChannelString { get; }
Hardware-level channel identifier (e.g., "AI0", "CH3").ISOCode:string ISOCode { get; }
ISO-standard code for the channel (e.g., for internationalization or compliance).SensorsString:string SensorsString { get; }
Concatenated string of sensor identifiers (e.g., "S1,S2").DasName:string DasName { get; }
Single DAS name (likely the primary or first entry fromDasNames).GetId():string GetId()
Returns a unique identifier for the channel (e.g., for tracking or persistence).HasPassedLevelTrigger:bool HasPassedLevelTrigger { get; }
Indicates if the channel’s current value has exceeded a predefined threshold (e.g., for alerting).Name:string Name { get; }
Fallback display name (likely a composite ofSensorNameandChannelName).
3. Invariants
IRealtimeChannelSelectViewModelmust maintain a valid reference toChannelSelectViewbefore invoking view-related operations (e.g.,SetAvailableChannelsmay assume the view is attached to render updates).SetAvailableChannelsmust be called with a non-null array (though the array may be empty). The view model should handle null inputs gracefully (e.g., treat as an empty list), but the interface does not specify this—implementation may vary.SetRealtimeChannelexpects a channel from the currently available set (i.e., one previously set viaSetAvailableChannels). Passing a channel outside this set may lead to undefined behavior (e.g., selection ignored or exception).DisplayOrdervalues must be consistent across channels in a given selection context to ensure stable sorting. No explicit ordering guarantee is enforced by the interface, but implementations should respect this for predictable UI behavior.
4. Dependencies
- Depends on:
DTS.Common.Base.IBaseViewandDTS.Common.Base.IBaseViewModel(via inheritance).DTS.Common.Interface.Realtime.IRealtimeChannel(core data model).
- Depended on by:
- Concrete implementations of
IRealtimeChannelSelectView(e.g., WPF/WinForms user controls). - Concrete implementations of
IRealtimeChannelSelectViewModel(e.g., business logic classes managing channel selection state). - Higher-level modules (e.g., a
RealtimeDashboardViewModel) that compose or orchestrate channel selection workflows.
- Concrete implementations of
5. Gotchas
DasNamesvs.DasName:DasNamesis an array, whileDasNameis a single string. Implementers must ensureDasNamereturns a consistent value (e.g.,DasNames[0]or a primary DAS), but the interface does not specify this.Namevs.SensorName/ChannelName:Nameis a distinct property—its value is not defined by the interface. It may be a concatenation, a fallback, or a user-editable field.UserValue1semantics are undefined: Its purpose is not documented here and may be application-specific (e.g., a user-configurable label or metadata field).- No explicit error handling: Methods like
SetRealtimeChanneldo not specify behavior for invalid inputs (e.g., null, non-available channel). Implementations must define this. - No threading guarantees: The interface does not specify thread-safety. Concurrent calls to
SetAvailableChannels,SetSearchText, orSetRealtimeChannelmay require external synchronization. - None identified from source alone.