44
55package com .chaos131 .util ;
66
7+ import edu .wpi .first .wpilibj .Alert ;
8+ import edu .wpi .first .wpilibj .Alert .AlertType ;
79import java .util .ArrayList ;
810import java .util .HashSet ;
911import java .util .List ;
1012import java .util .Set ;
1113import java .util .function .Consumer ;
12- import org .littletonrobotics .junction .Logger ;
1314import org .littletonrobotics .junction .networktables .LoggedNetworkNumber ;
1415
1516/**
@@ -25,6 +26,9 @@ public class DashboardNumber {
2526 /** The NetworkNumber that is used for getting updates to/from the NetworkTables. */
2627 protected LoggedNetworkNumber m_networkNumber ;
2728
29+ /** The original value of the DashboardNumber */
30+ private double m_originalValue ;
31+
2832 /** Value being stored */
2933 private double m_value ;
3034
@@ -34,6 +38,9 @@ public class DashboardNumber {
3438 /** What to do when the number is changed */
3539 private Consumer <Double > m_onUpdate ;
3640
41+ /** The alert to display when the current value is different from the original value. */
42+ private Alert m_changedValueAlert ;
43+
3744 /** Adds a task to periodically check all dashboard numbers */
3845 static {
3946 PeriodicTasks .getInstance ().addTask (DashboardNumber ::checkAll );
@@ -76,12 +83,14 @@ public DashboardNumber(
7683 boolean willTriggerWithInitialValue ,
7784 Consumer <Double > onUpdate ) {
7885 m_value = startValue ;
86+ m_originalValue = startValue ;
7987 m_name = name ;
8088 m_onUpdate = onUpdate ;
8189 if (willTriggerWithInitialValue ) {
8290 onUpdate .accept (m_value );
8391 }
8492 m_networkNumber = new LoggedNetworkNumber ("DashboardNumbers/" + name , startValue );
93+ m_changedValueAlert = new Alert ("Changed DashboardNumbers" , "" , AlertType .kWarning );
8594 AllUpdaters .add (this );
8695 }
8796
@@ -99,6 +108,14 @@ private void checkValue() {
99108 m_value = newValue ;
100109 m_onUpdate .accept (m_value );
101110 ChangedValues .add (m_name );
111+
112+ if (newValue != m_originalValue ) {
113+ m_changedValueAlert .set (true );
114+ m_changedValueAlert .setText (
115+ String .format ("Value '%s' changed from %f to %f" , m_name , m_originalValue , newValue ));
116+ } else {
117+ m_changedValueAlert .set (false );
118+ }
102119 }
103120 }
104121
@@ -107,6 +124,5 @@ private static void checkAll() {
107124 for (DashboardNumber dashboardNumber : AllUpdaters ) {
108125 dashboardNumber .checkValue ();
109126 }
110- Logger .recordOutput ("DashboardNumbers/ChangedValues" , ChangedValues .toArray (new String [0 ]));
111127 }
112128}
0 commit comments