Files
DP44/docs/ai/DataPRO/Modules/Groups/GroupImport/ViewModel.md
2026-04-17 14:55:32 -04:00

5.8 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/Modules/Groups/GroupImport/ViewModel/GroupImportViewModel.cs
2026-04-17T16:01:00.422137+00:00 zai-org/GLM-5-FP8 1 ea98f9d39127a201

GroupImportViewModel Documentation

1. Purpose

GroupImportViewModel is the ViewModel responsible for importing Groups and TestObjects from .grp files in a WPF/Prism-based application. It orchestrates the complete import workflow: file browsing, parsing source files into group/channel structures, validating data, previewing import contents, and executing the import on a background thread. The class implements IGroupImportViewModel and serves as the data context for three views (IGroupImportOptionsView, IGroupImportPreviewView, IGroupImportImportView).


2. Public Interface

Constructor

public GroupImportViewModel(
    IGroupImportOptionsView optionsView,
    IGroupImportPreviewView previewView,
    IGroupImportImportView importView,
    IRegionManager regionManager,
    IEventAggregator eventAggregator,
    IUnityContainer unityContainer)

Initializes the ViewModel, wires up view DataContexts, creates interaction requests, and subscribes to RaiseNotification and BusyIndicatorChangeNotification events.

Public Methods

Method Signature Description
ParseSourceFiles void ParseSourceFiles(string userTags) Reads .grp files from SourceFiles, parsing groups and channels. Populates Groups and Channels arrays.
Import void Import() Queues the import operation on a background thread via ThreadPool.QueueUserWorkItem.
SetStatus void SetStatus(string message, Color color) Updates ImportProgressColor, hides progress bar, sets ImportProgressText, and invokes EnableUI.
Reset void Reset() Re-initializes the ViewModel to default state (clears SourceFiles, Channels, Groups, resets progress UI).
CheckGroupName void CheckGroupName() Validates group names for duplicates within the import and against existing groups (if Overwrite is false). Sets GroupNameHasError on each group.
OnPropertyChanged void OnPropertyChanged(string propertyName) Raises the PropertyChanged event.
InvalidateChannels void InvalidateChannels() Raises PropertyChanged for IncompleteChannels and CompleteChannels.
Cleanup void Cleanup() Empty implementation.
CleanupAsync Task CleanupAsync() Returns Task.CompletedTask.
Initialize void Initialize() / void Initialize(object parameter) / void Initialize(object parameter, object model) Empty implementations.
InitializeAsync Task InitializeAsync() / Task InitializeAsync(object parameter) Return Task.CompletedTask.
Activated void Activated() Empty implementation.

Commands

Property Type Description
ImportBrowseCommand DelegateCommand Opens an OpenFileDialog for selecting .grp files. Sets SourceFiles and BrowseOk, then invokes SwitchNavSteps with Preview step.

Public Properties

Property Type Description
ImportOptionsView IGroupImportOptionsView The options view instance.
ImportPreviewView IGroupImportPreviewView The preview view instance.
ImportView IGroupImportImportView The import view instance.
NotificationRequest InteractionRequest<Notification> Interaction request for notifications.
ConfirmationRequest InteractionRequest<Confirmation> Interaction request for confirmations.
IsDirty bool Always returns false (private setter never called).
IsBusy bool Bound to BusyIndicatorChangeNotification event.
IsMenuIncluded bool Menu inclusion flag.
IsNavigationIncluded bool Navigation inclusion flag.
HeaderInfo string Returns "MainRegion".
ImportProgressText string Status text for import progress bar.
ImportProgressColor Color Color of the import progress bar.
ImportProgressBarVisibility Visibility Controls progress bar visibility.
ImportProgressValue double Percentage complete of import process.
SourceFiles string[] Array of .grp file paths to parse. Initialized to empty array.
BrowseOk bool Indicates if file browse completed successfully. Default false.
Groups GroupGRPImportGroup[] All parsed groups. Initialized to empty array.
Channels GroupGRPImportChannel[] All channels from all groups. Setter calls InvalidateChannels().
IncompleteChannels GroupGRPImportChannel[] Computed: channels that will NOT be imported (errors other than InvalidFullScaleInput or InvalidInvertInput).
CompleteChannels GroupGRPImportChannel[] Computed: channels that WILL be imported (no error, or only InvalidFullScaleInput/InvalidInvertInput).
Logger FileUtils.LogDelegate Logging facility. If null, no logging occurs.
SwitchNavSteps SwitchNavStepsDelegate Command for switching navigation steps.
CheckGroupExists CheckGroupExistsDelegate Command to check if a group exists in the application.
CheckSensorExists CheckSensorExistsDelegate Command to check if a sensor exists.
CreateGroup CreateGroupDelegate Command to create a group.
AddChannel AddChannelToGroupDelegate Command to add a channel to a group.
CommitGroups CommitGroupsDelegate Command to commit groups to the database.
DisableUI Disable_UIDelegate Command to disable the UI during import.
EnableUI Enable_UIDelegate Command to enable the UI after import.

Events

public event PropertyChangedEventHandler PropertyChanged;

3. Invariants

  • File Format: .grp files