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>
91 lines
4.1 KiB
XML
91 lines
4.1 KiB
XML
<UserControl x:Class="HC_APTBS.Views.UserControls.GraphicIndicatorView"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
|
xmlns:vm="clr-namespace:HC_APTBS.ViewModels"
|
|
mc:Ignorable="d"
|
|
d:DataContext="{d:DesignInstance Type=vm:GraphicIndicatorViewModel, IsDesignTimeCreatable=False}">
|
|
<!--
|
|
Vertical progress bar showing a single measurement value against its
|
|
expected value and tolerance band. Shared across phase cards and the
|
|
Running view's live measurement table.
|
|
-->
|
|
<Grid Width="58" Margin="2,0">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/> <!-- Max label -->
|
|
<RowDefinition Height="90"/> <!-- Progress bar -->
|
|
<RowDefinition Height="Auto"/> <!-- Min label -->
|
|
<RowDefinition Height="Auto"/> <!-- Param name -->
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Text="{Binding MaxBound, StringFormat=F1}"
|
|
FontSize="9" Foreground="Gray"
|
|
HorizontalAlignment="Center" Margin="0,0,0,1"/>
|
|
|
|
<Grid Grid.Row="1">
|
|
<Border BorderBrush="Black" BorderThickness="1" SnapsToDevicePixels="True"/>
|
|
|
|
<ProgressBar Orientation="Vertical"
|
|
Minimum="0" Maximum="100"
|
|
Value="{Binding ProgressPercent, Mode=OneWay}"
|
|
BorderThickness="0"
|
|
Background="White"
|
|
Margin="1">
|
|
<ProgressBar.Style>
|
|
<Style TargetType="ProgressBar">
|
|
<Setter Property="Foreground" Value="#4CAF50"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding IsWithinTolerance}" Value="False">
|
|
<Setter Property="Foreground" Value="#FF5722"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</ProgressBar.Style>
|
|
</ProgressBar>
|
|
|
|
<Canvas ClipToBounds="True">
|
|
<Line X1="0" X2="58" StrokeDashArray="3,2"
|
|
Stroke="LightGray" StrokeThickness="1"
|
|
Canvas.Top="18"/>
|
|
<Line X1="0" X2="58" StrokeDashArray="3,2"
|
|
Stroke="LightGray" StrokeThickness="1"
|
|
Canvas.Top="72"/>
|
|
</Canvas>
|
|
|
|
<TextBlock Text="{Binding ExpectedValue, StringFormat=F1}"
|
|
FontSize="9" Foreground="#999999"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
Margin="0,-14,0,0"/>
|
|
|
|
<TextBlock Text="{Binding DisplayValue}"
|
|
FontSize="14" FontWeight="Black"
|
|
HorizontalAlignment="Center" VerticalAlignment="Center"
|
|
Margin="0,10,0,0">
|
|
<TextBlock.Style>
|
|
<Style TargetType="TextBlock">
|
|
<Setter Property="Foreground" Value="Black"/>
|
|
<Style.Triggers>
|
|
<DataTrigger Binding="{Binding HasValue}" Value="False">
|
|
<Setter Property="Foreground" Value="#CCCCCC"/>
|
|
</DataTrigger>
|
|
</Style.Triggers>
|
|
</Style>
|
|
</TextBlock.Style>
|
|
</TextBlock>
|
|
</Grid>
|
|
|
|
<TextBlock Grid.Row="2"
|
|
Text="{Binding MinBound, StringFormat=F1}"
|
|
FontSize="9" Foreground="Gray"
|
|
HorizontalAlignment="Center" Margin="0,1,0,0"/>
|
|
|
|
<TextBlock Grid.Row="3"
|
|
Text="{Binding ParameterName}"
|
|
FontSize="9" FontWeight="SemiBold"
|
|
HorizontalAlignment="Center"
|
|
TextTrimming="CharacterEllipsis"
|
|
ToolTip="{Binding ParameterName}"/>
|
|
</Grid>
|
|
</UserControl>
|