Files
HC_APTBS/Views/UserControls/DashboardReadingsView.xaml
LucianoDev 197e9d1775 feat: redesign dashboard with Fluent KPI tiles, connection strip, and devices column
- 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>
2026-04-19 22:25:00 +02:00

143 lines
7.8 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>