feat: page-based navigation shell + Tests page wizard
Replace the monolithic MainWindow with a SelectedPage-driven shell (Dashboard / Pump / Bench / Tests / Results / Settings). The Tests page gets the Plan -> Preconditions -> Running -> Done wizard from ui-structure.md \u00a74, backed by a 7-item precondition gate and shared sub-views (PhaseCardView / TestSectionView / GraphicIndicatorView) extracted from the now-deleted monolithic TestPanelView. New VMs / views: - Tests wizard: TestPreconditions, PhaseCard, GraphicIndicator, TestSection, TestPlan, TestRunning, TestDone - Dashboard panels: DashboardConnection, DashboardReadings, DashboardAlarms, InterlockBanner, ResultHistory - Pump / bench panels: PumpIdentificationPanel, PumpLiveData, UnlockPanel, BenchDriveControl, BenchReadings, RelayBank, TemperatureControl, DtcList, AuthGate - Dialogs: generic ConfirmDialog, UserManageDialog, UserPromptDialog Supporting changes: - IsOilPumpOn exposed on MainViewModel for precondition evaluation - RequiresAuth added to TestDefinition (XML round-trip) - BipStatusDefinition + CompletedTestRun models - ~35 new Test.* localization keys (en + es) - Settings moved from modal dialog to full page - Pause / Retry / Skip stubs in TestRunningView; full spec in docs/gap-test-running-controls.md for follow-up implementation - docs/ui-structure.md captures the wizard design Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,14 @@ namespace HC_APTBS.Services
|
||||
/// </summary>
|
||||
event Action<string >? EmergencyStopTriggered; //reason
|
||||
|
||||
/// <summary>
|
||||
/// Raised on a 0→1 transition to a pump-status state whose
|
||||
/// <see cref="StatusBitValue.Reaction"/> is non-zero during a measurement phase.
|
||||
/// Args: (bit, reaction, description) where reaction is 1=abort, 2=warning, 3=log.
|
||||
/// Fires on a background thread — consumers must marshal to the UI thread.
|
||||
/// </summary>
|
||||
event Action<int, int, string>? StatusReactionTriggered; //bit, reaction, description
|
||||
|
||||
// ── Active pump ───────────────────────────────────────────────────────────
|
||||
|
||||
/// <summary>
|
||||
@@ -191,6 +199,14 @@ namespace HC_APTBS.Services
|
||||
/// <summary>Requests a controlled stop of the currently running test sequence.</summary>
|
||||
void StopTests();
|
||||
|
||||
/// <summary>
|
||||
/// Immediately triggers an emergency stop: zeros RPM, zeros pump parameters,
|
||||
/// cancels any running test, and fires <see cref="EmergencyStopTriggered"/>.
|
||||
/// Intended for operator-initiated E-Stop from the Dashboard.
|
||||
/// </summary>
|
||||
/// <param name="reason">Human-readable reason logged and propagated to the event.</param>
|
||||
void RequestEmergencyStop(string reason);
|
||||
|
||||
// ── Lock angle ────────────────────────────────────────────────────────────
|
||||
|
||||
/// <summary>
|
||||
@@ -226,5 +242,12 @@ namespace HC_APTBS.Services
|
||||
/// Fires on a background thread — consumers must marshal to the UI thread.
|
||||
/// </summary>
|
||||
event Action<string , double >? MeasurementSampled; //parameterName, value
|
||||
|
||||
/// <summary>
|
||||
/// Fires once per second during a phase's conditioning and measurement sub-sections.
|
||||
/// Args: (section, remainingSeconds, totalSeconds) where section is "Conditioning" or "Measuring".
|
||||
/// Fires on a background thread — consumers must marshal to the UI thread.
|
||||
/// </summary>
|
||||
event Action<string, int, int>? PhaseTimerTick;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user