Files
DP44/enriched-qwen3-coder-next/Common/DTS.Common/Interface/DTS.Viewer/TestSummary.md
2026-04-17 14:55:32 -04:00

6.6 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
Common/DTS.Common/Interface/DTS.Viewer/TestSummary/ITestSummaryListView.cs
Common/DTS.Common/Interface/DTS.Viewer/TestSummary/ITestSummaryListViewModel.cs
Common/DTS.Common/Interface/DTS.Viewer/TestSummary/ITestSummary.cs
2026-04-16T03:07:52.259971+00:00 Qwen/Qwen3-Coder-Next-FP8 1 710dfe38f0bd83ca

TestSummary

Documentation: Test Summary List Module

1. Purpose

This module defines the interface contracts for a Test Summary List view and its associated view model in a test data viewer application. It enables the display and management of a list of test summaries (ITestSummary), supporting selection tracking (SelectedTestSummaryList), UI binding via ObservableCollection, and propagation of selection changes through the PublishSelectedTestSummaryList() method. It serves as the data and presentation layer abstraction for a list-based UI component (e.g., a grid or list view) that shows metadata about recorded tests, including setup name, channel count, timestamps, and associated graphs/channels.


2. Public Interface

ITestSummaryListView

  • Inherits: IBaseView
  • Description: A marker interface representing the view layer for the test summary list. No additional members defined; intended for dependency injection or view-model-to-view binding.

ITestSummaryListViewModel

  • Inherits: IBaseViewModel
  • Properties:
    • ITestSummaryListView View { get; }
      Gets the associated view instance.
    • ObservableCollection<ITestSummary> TestSummaryList { get; set; }
      The full list of test summaries displayed in the UI; observable for collection change notifications.
    • List<ITestSummary> SelectedTestSummaryList { get; set; }
      The subset of TestSummaryList items currently selected by the user. Not observable; changes must be explicitly published.
  • Methods:
    • void PublishSelectedTestSummaryList()
      Triggers propagation of the current SelectedTestSummaryList to downstream consumers (e.g., via event or messaging).
    • void TestSummaryList_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
      Handles CollectionChanged events for TestSummaryList, likely updating internal state (e.g., SelectedTestSummaryList) when items are added/removed/moved.

ITestSummary

  • Inherits: IBaseClass
  • Properties:
    • string Id { get; set; }
      Unique identifier for the test.
    • string SetupName { get; set; }
      Name of the test setup configuration.
    • string Description { get; set; }
      Human-readable description of the test.
    • int ChannelCount { get; set; }
      Number of physical channels recorded in the test.
    • DateTime FileDate { get; set; }
      Date the test file was created or last modified.
    • DateTime TimeStamp { get; set; }
      Timestamp of the test event (e.g., start time).
    • string DataType { get; set; }
      Type of data recorded (e.g., "Raw", "Processed").
    • bool IsSelected { get; set; }
      UI state flag indicating if this item is selected in the list.
    • List<ITestGraphs> Graphs { get; set; }
      List of graph definitions associated with this test.
    • List<ITestChannel> Channels { get; set; }
      List of physical channels in the test.
    • List<ITestChannel> CalculatedChannels { get; set; }
      List of derived/calculated channels.
    • IBaseViewModel Parent { get; set; }
      Reference to the parent view model in the hierarchy.
    • ITestMetadata TestMetadata { get; set; }
      Metadata object containing additional test details.
    • CalibrationBehaviors CalibrationBehavior { get; set; }
      Enumerated value indicating calibration behavior (from DTS.Common.Enums.Sensors).

3. Invariants

  • TestSummaryList must be an ObservableCollection<ITestSummary> to support UI binding and change notifications.
  • SelectedTestSummaryList is a plain List<ITestSummary>; selection state is not automatically synchronized with TestSummaryList. The caller must call PublishSelectedTestSummaryList() to propagate changes.
  • TestSummaryList_CollectionChanged must be subscribed to TestSummaryList.CollectionChanged to maintain consistency between the full list and the selected list.
  • IsSelected on individual ITestSummary instances reflects UI selection state but is not the source of truth for SelectedTestSummaryList; the latter is the authoritative list of selected items.
  • Parent on ITestSummary must be non-null if the summary is part of a view model hierarchy (implied by IBaseViewModel inheritance).

4. Dependencies

This module depends on:

  • DTS.Common.Base (for IBaseView, IBaseViewModel, IBaseClass)
  • System.Collections.Generic, System.Collections.ObjectModel, System.Collections.Specialized (for collection types)
  • DTS.Common.Interface.TestDefinition (for ITestSummary, ITestGraphs, ITestChannel, ITestMetadata)
  • DTS.Common.Enums.Sensors (for CalibrationBehaviors enum)

This module is depended upon by:

  • Likely concrete implementations of ITestSummaryListView (e.g., WPF UserControl or Window)
  • View model implementations of ITestSummaryListViewModel (e.g., TestSummaryListViewModel)
  • Any module responsible for publishing or consuming selected test summaries (e.g., analysis or reporting modules)

5. Gotchas

  • SelectedTestSummaryList is a List<T>, not ObservableCollection<T>, meaning UI selection changes (e.g., via checkboxes) must manually update this list and call PublishSelectedTestSummaryList() to notify consumers.
  • TestSummaryList_CollectionChanged is exposed as a public method but not declared as an event handler in the interface; callers must manually wire it to TestSummaryList.CollectionChanged.
  • IsSelected on ITestSummary is a view-level property (likely bound to UI controls) but does not drive SelectedTestSummaryList; relying on it as the source of truth for selection will cause inconsistencies.
  • No documentation is provided for when PublishSelectedTestSummaryList() should be called (e.g., on selection change, on save, or manually). This behavior is implementation-specific.
  • The relationship between FileDate and TimeStamp is ambiguous (e.g., which is more reliable for sorting?); no guidance is given.
  • None of the List<T> properties (Graphs, Channels, CalculatedChannels) are initialized in the interface; implementations must ensure non-null initialization to avoid NullReferenceException.
  • None identified from source alone.