feat: redesign Bench page with Fluent card layout and radial advance monitor
Three-column layout replacing the old HMI grid: - BenchRpmCommandCard: inline numeric input, 2×4 preset grid, Start/Stop - BenchActuatorsCard: direction toggle, oil pump, temperature PID, misc relays with FluentStateToggle showing checked state via AccentFillColor - BenchLiveDataCard: 2×5 KPI tiles (RPM, P1, P2, Q-Delivery, Q-Over, temps) - BenchChartsCard: 2×2 compact chart grid (Delivery, Over, P1, P2) - AdvanceMonitorCard: RadialAngleGauge custom FrameworkElement + PSG/INJ readouts, Δ° lock offset input, Zero PSG / Zero INJ buttons Supporting changes: - AngleDisplayViewModel: promote _currentManualDegrees, _isLockSet to [ObservableProperty]; add PsgRelativeDegrees, InjEncoderDegreesValue, TargetLockAngle, IsRunningMode (29/31 hysteresis); computed PrimaryGaugeAngle, TargetAngleForGauge, SecondaryGaugeAngle - BenchControlViewModel: add IsDirectionLeft computed property, SetDirectionRightCommand, SetDirectionLeftCommand, ApplyRpmCommand - FlowmeterChartView: add IsCompact DP (false default) for 90px compact height - Styles.xaml: add IsChecked trigger to FluentStateToggle (accent fill + white text) - Strings.en/es.xaml: add all new card and actuator string keys Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -240,6 +240,52 @@
|
||||
<sys:String x:Key="Angle.SetPsgZero">Set PSG zero reference</sys:String>
|
||||
<sys:String x:Key="Angle.SetInjZero">Set INJ zero reference</sys:String>
|
||||
|
||||
<!-- ── Bench page — Fluent redesign cards ───────────────────────────── -->
|
||||
<sys:String x:Key="Bench.RpmCommand.Title">RPM Command</sys:String>
|
||||
<sys:String x:Key="Bench.RpmCommand.Actual">Actual</sys:String>
|
||||
<sys:String x:Key="Bench.RpmCommand.Target">Target</sys:String>
|
||||
<sys:String x:Key="Bench.RpmCommand.Apply">Apply</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Title">Actuators & Relays</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Direction">Direction</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.DirRight">Right</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.DirLeft">Left</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.OilPump">Oil Pump</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Counter">Counter</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Set">Set</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Temperature">Temperature</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Setpoint">Setpoint °C</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Tolerance">Tolerance ±°C</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Heater">Heater</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.DepositCooler">Dep. Cool.</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.TinCooler">T-In Cool.</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Relays">Misc Relays</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Electronic">Electronic</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Flasher">Flasher</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Pulse4">Pulse 4</sys:String>
|
||||
<sys:String x:Key="Bench.LiveData.Title">Live Data</sys:String>
|
||||
<sys:String x:Key="Bench.Charts.Title">Live Charts</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.Title">Advance Monitor</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.Delta">Lock Offset Δ°</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.ZeroPsg">Zero PSG</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.ZeroInj">Zero INJ</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.Lock">Lock</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.Rpm">Bench RPM</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.P1">Pressure P1</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.P2">Pressure P2</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.QDelivery">Q Delivery</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.QOver">Q Over</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.TIn">T-In</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.TOut">T-Out</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.T4">T4</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.TTank">T-Tank</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.BenchTemp">Bench Temp</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.Unit.Bar">bar</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.Unit.CcS">cc/s</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.Delivery">Q Delivery</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.Over">Q Over</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.P1">Pressure P1</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.P2">Pressure P2</sys:String>
|
||||
|
||||
<!-- ── Test panel ───────────────────────────────────────────────────── -->
|
||||
<sys:String x:Key="Test.StartTest">▶ START TEST</sys:String>
|
||||
<sys:String x:Key="Test.Stop">■ STOP</sys:String>
|
||||
|
||||
@@ -240,6 +240,52 @@
|
||||
<sys:String x:Key="Angle.SetPsgZero">Fijar referencia cero PSG</sys:String>
|
||||
<sys:String x:Key="Angle.SetInjZero">Fijar referencia cero INJ</sys:String>
|
||||
|
||||
<!-- ── Bench page — Fluent redesign cards ───────────────────────────── -->
|
||||
<sys:String x:Key="Bench.RpmCommand.Title">Mando RPM</sys:String>
|
||||
<sys:String x:Key="Bench.RpmCommand.Actual">Actual</sys:String>
|
||||
<sys:String x:Key="Bench.RpmCommand.Target">Objetivo</sys:String>
|
||||
<sys:String x:Key="Bench.RpmCommand.Apply">Aplicar</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Title">Actuadores y Relés</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Direction">Dirección</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.DirRight">Derecha</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.DirLeft">Izquierda</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.OilPump">Bomba de Aceite</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Counter">Contador</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Set">Fijar</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Temperature">Temperatura</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Setpoint">Consigna °C</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Tolerance">Tolerancia ±°C</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Heater">Calefactor</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.DepositCooler">Refr. Dep.</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.TinCooler">Refr. T-In</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Relays">Relés Misc.</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Electronic">Electrónico</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Flasher">Flasher</sys:String>
|
||||
<sys:String x:Key="Bench.Actuators.Pulse4">Pulso 4</sys:String>
|
||||
<sys:String x:Key="Bench.LiveData.Title">Datos en Vivo</sys:String>
|
||||
<sys:String x:Key="Bench.Charts.Title">Gráficos</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.Title">Monitor de Avance</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.Delta">Offset Bloqueo Δ°</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.ZeroPsg">Cero PSG</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.ZeroInj">Cero INJ</sys:String>
|
||||
<sys:String x:Key="Bench.Advance.Lock">Bloqueo</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.Rpm">RPM Banco</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.P1">Presión P1</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.P2">Presión P2</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.QDelivery">Q Entrega</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.QOver">Q Derrame</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.TIn">T-Ent.</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.TOut">T-Sal.</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.T4">T4</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.TTank">T-Tanque</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.BenchTemp">T. Banco</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.Unit.Bar">bar</sys:String>
|
||||
<sys:String x:Key="Bench.Kpi.Unit.CcS">cc/iny.</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.Delivery">Q Entrega</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.Over">Q Derrame</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.P1">Presión P1</sys:String>
|
||||
<sys:String x:Key="Bench.Chart.P2">Presión P2</sys:String>
|
||||
|
||||
<!-- ── Test panel ───────────────────────────────────────────────────── -->
|
||||
<sys:String x:Key="Test.StartTest">▶ INICIAR TEST</sys:String>
|
||||
<sys:String x:Key="Test.Stop">■ PARAR</sys:String>
|
||||
|
||||
@@ -93,6 +93,11 @@
|
||||
IsHitTestVisible="False"/>
|
||||
</Grid>
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsChecked" Value="True">
|
||||
<Setter TargetName="Root" Property="Background" Value="{DynamicResource AccentFillColorDefaultBrush}"/>
|
||||
<Setter TargetName="Root" Property="BorderBrush" Value="{DynamicResource AccentFillColorDefaultBrush}"/>
|
||||
<Setter Property="Foreground" Value="{DynamicResource TextOnAccentFillColorPrimaryBrush}"/>
|
||||
</Trigger>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter TargetName="HoverOverlay" Property="Background" Value="#18000000"/>
|
||||
</Trigger>
|
||||
|
||||
Reference in New Issue
Block a user