Files
DP44/docs/ai/DataPRO/DataPRO/Pages.md
2026-04-17 14:55:32 -04:00

14 KiB

source_files, generated_at, model, schema_version, sha256
source_files generated_at model schema_version sha256
DataPRO/DataPRO/Pages/ATDMonitorStatusPage.cs
DataPRO/DataPRO/Pages/CopyAndTrimPage.cs
DataPRO/DataPRO/Pages/RenameTestPage.cs
DataPRO/DataPRO/Pages/DownloadAndView.cs
DataPRO/DataPRO/Pages/TimedWaitControl.xaml.cs
DataPRO/DataPRO/Pages/ModalPage.xaml.cs
DataPRO/DataPRO/Pages/SplashScreen.xaml.cs
DataPRO/DataPRO/Pages/AddGraphPage.cs
DataPRO/DataPRO/Pages/StatusLinePage.cs
DataPRO/DataPRO/Pages/EditGraphPage.cs
DataPRO/DataPRO/Pages/RealtimePage.cs
DataPRO/DataPRO/Pages/DownloadDataPage.cs
DataPRO/DataPRO/Pages/ChangeView.xaml.cs
DataPRO/DataPRO/Pages/EditUserDetailsPage.cs
DataPRO/DataPRO/Pages/LoginControl2.xaml.cs
DataPRO/DataPRO/Pages/UsersPage.cs
2026-04-17T15:46:52.496358+00:00 zai-org/GLM-5-FP8 1 ddb7d9cc557ee4d9

DataPRO Pages Module Documentation

1. Purpose

This module contains the page definitions and UI controls that comprise the main interface of the DataPRO application. It provides specialized pages for user management (authentication, user editing), test configuration and monitoring (ATD Monitor Status, Status Line Check, Realtime diagnostics), data export operations (Copy and Trim, Rename Test, Download and View), and graph management (Add/Edit Graph). All page classes inherit from a common DataPROPage base class (or RunTestBase for wizard-style pages) and implement a consistent pattern for navigation, button handling, and lifecycle management via OnSetActive() and UnSet() methods.


2. Public Interface

ATDMonitorStatusPage

public class ATDMonitorStatusPage : DataPROPage
Member Signature Description
Constructor ATDMonitorStatusPage(DataModel.TabPageItem item) Initializes with transparent background, search control enabled, and creates an embedded Controls.TestSetups.ATDMonitorStatus control
CurrentTest DataModel.TestTemplate (setter only) Forwards the test template to the internal _statusControl
UniqueId string Returns constant "TestSetups_ATDMonitorStatusPage"
UnSet void UnSet() Overrides base implementation (calls base only)

CopyAndTrimPage

public class CopyAndTrimPage : DataPROPage
Member Signature Description
Constructor CopyAndTrimPage(DataModel.TabPageItem item) Initializes with UsesModifyEnhancements = true, no save/next buttons
UniqueId string Returns "Review_ExportData_CopyAndTrim"
DownloadFolder string Gets/sets download folder path (default: string.Empty)
IsROI bool Gets/sets ROI flag (default: false)
TestItem string Gets/sets test item identifier
AvailableTestIds List<string> Gets/sets list of available test IDs
DTSFilePath string Gets/sets DTS file path

RenameTestPage

public class RenameTestPage : DataPROPage
Member Signature Description
Constructor RenameTestPage(DataModel.TabPageItem item) Initializes similarly to CopyAndTrimPage with UsesModifyEnhancements = true
UniqueId string Returns "Review_ExportData_Rename"
AvailableTestNames List<string> Gets/sets list of available test names (in addition to IDs from CopyAndTrimPage)

DownloadAndView

public class DownloadAndView : RunTestBase
Member Signature Description
Constructor DownloadAndView(DataModel.TabPageItem item) Basic constructor
Constructor DownloadAndView(DataModel.TabPageItem item, int possibleSteps) Constructor with step count for wizard navigation
UniqueId string Returns constant "Record_DownloadAndView"
NavigateToROIDownload void NavigateToROIDownload() Sets current step to _downloadROIControlNavStep
OnSetActive void OnSetActive() Resets ROINext_OK and ALLNext_OK flags, subscribes to AutomaticModeStatusEvent via IEventAggregator
UnSet void UnSet() Clears search term and calls StartSearch(string.Empty) on _downloadROIControl

TimedWaitControl

public partial class TimedWaitControl : UserControl, INotifyPropertyChanged
Member Signature Description
Constructor TimedWaitControl() Parameterless constructor
Constructor TimedWaitControl(MainWindow MainWindow) Constructor with main window reference
ManualResetEvent System.Threading.ManualResetEvent Gets/sets synchronization primitive
MarkDone void MarkDone() Signals the ManualResetEvent and sets it to null
SetValuePercent void SetValuePercent(double d) Updates progress bar via ctrlStatusRibbon.SetProgressValue()
SetActive void SetActive() Empty implementation
SetStatusMessage void SetStatusMessage(string msg) Sets status text via ctrlStatusRibbon.SetStatusTextNoTranslate()
CancelButtonVisibility Visibility Bindable property for cancel button visibility
PropertyChanged event PropertyChangedEventHandler INotifyPropertyChanged implementation

ModalPage

public partial class ModalPage : UserControl, INotifyPropertyChanged
Member Signature Description
Constructor ModalPage() Parameterless constructor
Constructor ModalPage(MainWindow MainWindow) Constructor with main window reference
SetContent void SetContent(IModalContent content) Sets modal content, calls OnSetActive(), assigns CloseFunction
OnCloseDelegate delegate void OnCloseDelegate() Delegate type for close callbacks

IModalContent Interface

public interface IModalContent
Member Signature Description
DialogResult System.Windows.Forms.DialogResult Gets the dialog result
CloseFunction OnCloseDelegate Gets/sets the close callback
OnSetActive void OnSetActive() Called when content becomes active
PromptString string Gets/sets prompt text
ReusableMessageBox bool Flag for reusable message box scenarios
SetButtons void SetButtons(PageButton[] buttons) Sets page buttons
DefaultButton PageButton Gets/sets the default button

SplashScreen

public partial class SplashScreen : Window
Member Signature Description
Constructor SplashScreen() Initializes with Xceed license key, ShowInTaskbar = false, ResizeMode = NoResize
Version string (setter) Sets txt_VersionString.Text
DbVersion string (setter) Sets txt_DbVersionString.Text
LicensedTo string (setter) Sets txt_LicensedTo.Text
LicenseType DataProLicensingEnums.LicenseType Gets/sets license type; setter calls SetBackgroundImage()
Copyright string (setter) Sets txt_Copyright.Text
SetBackgroundImage void SetBackgroundImage() Updates banner image based on RunTestVariables.IsTSRAIRGo and LicenseType

AddGraphPage

public class AddGraphPage : DataPROPage
Member Signature Description
Constructor AddGraphPage(DataModel.TabPageItem item) Initializes with no search/select controls, no next/back buttons
UniqueId string Returns "Review_ViewData_AddGraph"
saveButton Controls.PageButton Public field for Save button
saveAsButton Controls.PageButton Public field for Save As button
saveAndAddAnotherButton Controls.PageButton Public field for Save and Add Another button
AddPageButtons void AddPageButtons() Creates Cancel, Save, SaveAs, SaveAndAddAnother, View buttons
OnButtonPress bool OnButtonPress(Controls.PageButton button) Handles button presses; View and Cancel navigate to previous page

StatusLinePage

public class StatusLinePage : DataPROPage
Member Signature Description
Constructor StatusLinePage(DataModel.TabPageItem item) Creates Controls.TestSetupsControl with Color_ApplicationTileCalibration
UniqueId string Returns constant "Diagnostics_StatusLineCheck"
OnSetActive void OnSetActive() Calls SetRunButtonEnabled()
OnButtonPress bool OnButtonPress(Controls.PageButton button) Handles Record_StatusLineCheckRunButton to call SetNewTest()

EditGraphPage

public class EditGraphPage : DataPROPage
Member Signature Description
Constructor EditGraphPage(DataModel.TabPageItem item) Initializes similarly to AddGraphPage
UniqueId string Returns "Review_ViewData_EditGraph"
IsSingleChannelGraph bool Setter disables saveButton when true
saveButton, saveAsButton, saveAndEditAnotherButton Controls.PageButton Public button fields
OnButtonPress bool OnButtonPress(Controls.PageButton button) Handles button presses; SaveAndEditAnother, View, and Cancel navigate to previous page

RealtimePage

public class RealtimePage : DataPROPage
Member Signature Description
Constructor RealtimePage(DataModel.TabPageItem item) Creates Controls.TestSetupsControl with Color_ApplicationTileCalibration
UniqueId string Returns constant "Diagnostics_Realtime"
OnButtonPress bool OnButtonPress(Controls.PageButton button) Handles Record_RealtimeRunButton, logs user action via APILogger.Log()

DownloadDataPage

public class DownloadDataPage : DataPROPage
Member Signature Description
Constructor DownloadDataPage(DataModel.TabPageItem item) Creates Controls.TestSetupsControl with Color_ApplicationTileCollectData
UniqueId string Returns constant "Record_DownloadAndView"
OnButtonPress bool OnButtonPress(Controls.PageButton button) Handles Record_DownloadData_RunButton, logs user action via APILogger.Log()

ChangeView

public partial class ChangeView : Window, INotifyPropertyChanged
Member Signature Description
Constructor ChangeView() Subscribes to Activated and Deactivated events
AvailableUsers User[] Gets/sets all available users for selection
FilteredUsers User[] Gets filtered users based on tbSearch.Text (searches UserName and Name fields)
OK_Click void OK_Click(object sender, RoutedEventArgs e) Calls App.ChangeView() and MainWindow.CloseChangeView()
Cancel_Click void Cancel_Click(object sender, RoutedEventArgs e) Calls MainWindow.CloseChangeView()
Window_Closing void Window_Closing(object sender, CancelEventArgs e) Cancels close and calls CloseChangeView() instead

EditUserDetailsPage

public class EditUserDetailsPage : DataPROPage
Member Signature Description
Constructor EditUserDetailsPage(DataModel.TabPageItem item) Creates three NavSteps with EditUserInfoControl, EditUserPermissionsControl, EditUserVisibilityControl
UniqueId string Returns "Admin_Users_EditUserDetails_Page"
IsAddPage bool Controls add/edit mode; setter updates IsAdd and _userInfoControl.IsAdd
CurrentUser DTS.Slice.Users.User Gets/sets current user; propagates to all child controls
OnSetActive void OnSetActive() Sets modified state to Unmodified, resets nav to first step
SaveAndExitButtonPress void SaveAndExitButtonPress() Validates, commits via UserCollection.UsersList.Commit(), navigates to previous page
SaveButtonPress void SaveButtonPress() Validates and commits without navigation
Validate bool Validate(ref List<string> errors, ref List<string> warnings, bool displayWindow) Aggregates validation from all three child controls

LoginControl2

public partial class LoginControl2 : UserControl, INotifyPropertyChanged
Member Signature Description
Constructor LoginControl2() Parameterless constructor, sets version string
Constructor LoginControl2(MainWindow MainWindow) Constructor with main window reference
Users UserData[] Gets sorted, filtered user list from UserCollection.GetAllUsers()
RememberPassword bool Gets/sets remember password flag
SetActive void SetActive() Navigates to home page if current user matches default
UpdateUsers void UpdateUsers() Raises PropertyChanged for Users
button_Click void button_Click(object sender, RoutedEventArgs e) Handles login via App.LoginUser(), optionally saves credentials, shows license prompts

UsersPage

public class UsersPage : DataPROPage
Member Signature Description
Constructor UsersPage(DataModel.TabPageItem item) Creates Controls.UserListControl with transparent background
UniqueId string Returns "Admin_Users"
OnSetActive void OnSetActive() Updates user list, publishes ProgressBarEvent
OnButtonPress bool OnButtonPress(Controls.PageButton button) Handles Add, Edit, Delete buttons
ChallengeUserDelete void ChallengeUserDelete(User[] users) Shows confirmation dialog, performs deletion via UserCollection.UsersList.Delete()
SetPagePermissions void SetPagePermissions() Restricts buttons based on admin status and license type (TSRAIR, Standard, StandardSite disable Add)

3. Invariants

  1. UniqueId Consistency: Every page must return a constant string from UniqueId property. This is used for page identification and navigation.

  2. Constructor Pattern: All DataPROPage-derived classes must accept a DataModel.TabPageItem parameter passed to the base constructor.

  3. Button Handling Pattern: Button presses are handled via OnButtonPress(PageButton button) with Enum.TryParse to match button IDs defined in nested ButtonIds enums.

  4. User Deletion Rules (UsersPage):

    • Default users (Admin, PowerUser, User, Guest) cannot be deleted unless they are duplicates without default IDs
    • Users cannot delete themselves
    • Delete button visibility is controlled by `IsADefault