7.8 KiB
source_files, generated_at, model, schema_version, sha256
| source_files | generated_at | model | schema_version | sha256 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2026-04-16T03:09:28.143964+00:00 | Qwen/Qwen3-Coder-Next-FP8 | 1 | 0edcef037628c1da |
PowerSpectralDensity
Documentation: Power Spectral Density (PSD) Report Module Interfaces
1. Purpose
This module defines the interface layer for the Power Spectral Density (PSD) report functionality within the DTS Viewer. It establishes contracts for views, view models, and models that collectively support configuration, results display, and main orchestration of PSD reports. The interfaces follow a layered MVVM pattern (Model-View-ViewModel), with clear separation between UI presentation (IBaseView-derived interfaces), state management (IBaseViewModel-derived interfaces), and data/configuration (IBaseModel-derived interfaces). The module enables users to configure filtering, windowing, and data range parameters, compute GRMS summaries per channel, and export results—while integrating with broader viewer regions and navigation contexts.
2. Public Interface
Interfaces (View Layer)
All implement IBaseView.
-
IPSDReportMainView
Top-level view interface for the PSD report. Serves as the root container for the report UI. -
IPSDReportMainViewGrid
Sub-view interface representing the main grid area within the PSD report view. -
IPSDReportSettingsView
View interface for the settings panel where users configure filters, windowing, and data range. -
IPSDReportResultsView
View interface for the results panel displaying channel GRMS summaries and related outputs.
Interfaces (ViewModel Layer)
All implement IBaseViewModel.
-
IPSDReportMainViewModel
Main orchestrator for the PSD report. Manages regions (navigation, graph, tests, legend, property), user permissions, zoom/keyboard interactions, and view modes.
Key members:List<FrameworkElement> GetRegions()void ZoomReset(),void LeftKeyPress(),void RightKeyPress()Visibility SettingsVisibility { get; }string ConfigPath,bool DoesUserHaveEditPermission,bool CalibrationBehaviorSettableInViewer,ChannelCodeViewMode,CalibrationBehaviorSetting
-
IPSDReportSettingsViewModel
View model for settings. Binds toIPSDReportSettingsViewandIPSDReportSettingsModel.
Key members:void PublishChanges()IBaseView View { get; set; },IBaseViewModel Parent { get; set; },IPSDReportSettingsModel Model { get; set; }
-
IPSDReportResultsViewModel
View model for results. Exposes export commands and channel GRMS data.
Key members:DelegateCommand ExportToPDFCommand { get; }DelegateCommand ExportToCSVCommand { get; }ObservableCollection<IChannelGRMSSummary> Results { get; set; }IBaseView View { get; set; },IBaseViewModel Parent { get; set; }
Interfaces (Model Layer)
All implement IBaseModel.
IPSDReportSettingsModel
Holds configuration state for the PSD report.
Key members:bool LowPassFilterEnabled,double LowPassFilterFrequency,PassFilterType LowPassFilterType,int LowPassFilterOrderbool HighPassFilterEnabled,double HighPassFilterFrequency,PassFilterType HighPassFilterType,int HighPassFilterOrderWindowWidth WindowWidth,WindowType WindowType,WindowAveragingType WindowAveragingType,double WindowOverlappingPercentbool ShowEnvelope,bool CanPublishChanges,bool ReadData,double DataStart,double DataEndIPSDReportSettingsViewModel Parent { get; set; }
Data Interfaces
IChannelGRMSSummary
Represents a single channel’s GRMS summary.
Properties:string ChannelName { get; set; }int SampleRate { get; set; }double GRMS { get; set; }
ImplementsIBaseClass.
3. Invariants
- All view interfaces (
IPSDReport*View) derive fromIBaseView, ensuring consistent UI contract. - All view model interfaces derive from
IBaseViewModel, and all model interfaces derive fromIBaseModel, enforcing layered architecture. IPSDReportSettingsViewModel.Modelmust be non-null and of concrete typeIPSDReportSettingsModel.IPSDReportResultsViewModel.Resultsmust be anObservableCollection<IChannelGRMSSummary>; individual items must have non-nullChannelName.IPSDReportMainViewModelimplementsISelectedDataViewModel, implying it participates in shared data selection context.IPSDReportSettingsModel.CanPublishChangeslikely controls whetherPublishChanges()may be invoked (though enforcement is not explicit in interface).IPSDReportMainViewModel.SettingsVisibilityis read-only; its value is determined internally (e.g., by permissions or configuration).
4. Dependencies
Internal Dependencies
- Base Layer: All interfaces depend on
DTS.Common.Base(IBaseView,IBaseViewModel,IBaseModel,IBaseClass). - Enums:
PassFilterType,WindowWidth,WindowType,WindowAveragingType(fromDTS.Common.Enums.Viewer.Reports)IsoViewMode,CalibrationBehaviors(fromDTS.Common.Enums)
- Prism Framework:
IPSDReportResultsViewModelandIPSDReportSettingsViewModeldepend onPrism.Commands.DelegateCommand. - WPF:
IPSDReportMainViewModeldepends onSystem.Windows.FrameworkElement.
External Dependencies
- Consumers: Likely used by a viewer module (e.g.,
DTS.Viewer) that implements these interfaces for concrete views/view models. - No direct external libraries beyond Prism and WPF are referenced in the interfaces themselves.
Depended Upon
- This module’s interfaces are consumed by implementations of the PSD report feature (not visible here), likely in a separate implementation project (e.g.,
DTS.Viewer.Reports.PSD).
5. Gotchas
- Namespace inconsistency:
// ReSharper disable CheckNamespaceinIPSDReportMainView.cssuggests namespace alignment may be manually enforced or legacy; verify actual usage matchesDTS.Common.Interface. - Missing implementation details:
IPSDReportMainViewModelhas commented-outbool Standalone { get; set; }— behavior may be partially implemented or deprecated.IPSDReportSettingsModelexposesReadData,DataStart,DataEndbut no clear validation (e.g.,DataStart < DataEnd) is enforced in the interface.
- Ambiguous
CanPublishChanges: Its purpose is unclear—likely used to gatePublishChanges()calls, but no contract or event is defined for when it changes. - No explicit error handling: Interfaces do not define error states or validation failure mechanisms (e.g., invalid filter frequencies).
GetRegions()returnsList<FrameworkElement>: Assumes WPF-specific region management; may not be portable to other UI frameworks.- No versioning or extensibility markers: Interfaces are sealed contracts; changes risk breaking downstream implementations.
None identified beyond the above.