- Replace LCD-style readings with a 3×2 KPI tile grid (Fluent card surfaces, 52pt values) - Add persistent top connection strip with horizontal chips + pump name badge - Add elapsed test timer (DispatcherTimer, mm:ss) to Test Summary card - Restyle Test Summary and Active Alarms with Fluent brushes/iconography - Add Devices column (CAN / K-Line / Bench tiles) between KPI grid and test/alarms - Enumerates attached PCAN USB channels via PCAN_ATTACHED_CHANNELS API - Enumerates FTDI K-Line adapters via existing FtdiInterface helpers - Click to connect/disconnect; confirmation dialog when session active or test running - Hover tint: blue = will connect, red = will disconnect; Bench row is read-only stub - Extend ICanService with SelectedChannel + EnumerateAttachedChannels() - Expose IKwpService.ConnectedPort for active session device tracking - Add DeviceRow button style with MultiDataTrigger hover colour logic - Add 30+ new localization keys (ES + EN) for KPI labels, devices, confirmations Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
143 lines
7.8 KiB
XML
143 lines
7.8 KiB
XML
<UserControl x:Class="HC_APTBS.Views.UserControls.DashboardReadingsView"
|
||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
|
||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||
mc:Ignorable="d"
|
||
d:DesignHeight="340" d:DesignWidth="900">
|
||
<!--
|
||
Dashboard KPI readings grid — 6 Fluent tiles in a 2-row × 3-column uniform grid.
|
||
DataContext is DashboardPageViewModel; binds via Root.X to MainViewModel live readings.
|
||
-->
|
||
<UniformGrid Rows="2" Columns="3">
|
||
|
||
<!-- Tile 1: RPM -->
|
||
<Border Style="{StaticResource KpiTile}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="*"/>
|
||
</Grid.RowDefinitions>
|
||
<StackPanel Orientation="Horizontal">
|
||
<ui:SymbolIcon Symbol="Gauge24" FontSize="14"
|
||
Foreground="{DynamicResource TextFillColorSecondaryBrush}" Margin="0,0,6,0"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Rpm}" Style="{StaticResource KpiHeaderText}"
|
||
VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding Root.BenchRpm, StringFormat=F0}" Style="{StaticResource KpiValueText}"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Unit.Rpm}" Style="{StaticResource KpiUnitText}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<!-- Tile 2: Q-Delivery -->
|
||
<Border Style="{StaticResource KpiTile}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="*"/>
|
||
</Grid.RowDefinitions>
|
||
<StackPanel Orientation="Horizontal">
|
||
<ui:SymbolIcon Symbol="Drop24" FontSize="14"
|
||
Foreground="{DynamicResource TextFillColorSecondaryBrush}" Margin="0,0,6,0"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Qdelivery}" Style="{StaticResource KpiHeaderText}"
|
||
VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding Root.QDelivery, StringFormat=F1}" Style="{StaticResource KpiValueText}"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Unit.CcS}" Style="{StaticResource KpiUnitText}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<!-- Tile 3: Pressure P1 -->
|
||
<Border Style="{StaticResource KpiTile}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="*"/>
|
||
</Grid.RowDefinitions>
|
||
<StackPanel Orientation="Horizontal">
|
||
<ui:SymbolIcon Symbol="ArrowTrendingLines24" FontSize="14"
|
||
Foreground="{DynamicResource TextFillColorSecondaryBrush}" Margin="0,0,6,0"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.P1}" Style="{StaticResource KpiHeaderText}"
|
||
VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding Root.Pressure, StringFormat=F1}" Style="{StaticResource KpiValueText}"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Unit.Bar}" Style="{StaticResource KpiUnitText}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<!-- Tile 4: Pressure P2 -->
|
||
<Border Style="{StaticResource KpiTile}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="*"/>
|
||
</Grid.RowDefinitions>
|
||
<StackPanel Orientation="Horizontal">
|
||
<ui:SymbolIcon Symbol="ArrowTrendingLines24" FontSize="14"
|
||
Foreground="{DynamicResource TextFillColorSecondaryBrush}" Margin="0,0,6,0"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.P2}" Style="{StaticResource KpiHeaderText}"
|
||
VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding Root.Pressure2, StringFormat=F1}" Style="{StaticResource KpiValueText}"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Unit.Bar}" Style="{StaticResource KpiUnitText}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<!-- Tile 5: Oil inlet temperature -->
|
||
<Border Style="{StaticResource KpiTile}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="*"/>
|
||
</Grid.RowDefinitions>
|
||
<StackPanel Orientation="Horizontal">
|
||
<ui:SymbolIcon Symbol="Temperature24" FontSize="14"
|
||
Foreground="{DynamicResource TextFillColorSecondaryBrush}" Margin="0,0,6,0"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Tin}" Style="{StaticResource KpiHeaderText}"
|
||
VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding Root.TempIn, StringFormat=F1}" Style="{StaticResource KpiValueText}"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Unit.Celsius}" Style="{StaticResource KpiUnitText}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
<!-- Tile 6: Oil outlet temperature -->
|
||
<Border Style="{StaticResource KpiTile}">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto"/>
|
||
<RowDefinition Height="*"/>
|
||
</Grid.RowDefinitions>
|
||
<StackPanel Orientation="Horizontal">
|
||
<ui:SymbolIcon Symbol="ArrowUpload24" FontSize="14"
|
||
Foreground="{DynamicResource TextFillColorSecondaryBrush}" Margin="0,0,6,0"
|
||
VerticalAlignment="Center"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Tout}" Style="{StaticResource KpiHeaderText}"
|
||
VerticalAlignment="Center"/>
|
||
</StackPanel>
|
||
<StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom">
|
||
<TextBlock Text="{Binding Root.TempOut, StringFormat=F1}" Style="{StaticResource KpiValueText}"/>
|
||
<TextBlock Text="{DynamicResource Dashboard.Kpi.Unit.Celsius}" Style="{StaticResource KpiUnitText}"/>
|
||
</StackPanel>
|
||
</Grid>
|
||
</Border>
|
||
|
||
</UniformGrid>
|
||
</UserControl>
|