@@ -7,6 +7,7 @@ import _ from 'lodash';
77
88export type IncidentRecord = IncidentData & {
99 resolved : boolean
10+ tallied : boolean
1011}
1112
1213type IncidentCounts = {
@@ -18,6 +19,7 @@ const INITIAL_INCIDENTS: IncidentRecord[] = [
1819 // sessionNum: 0,
1920 // sessionTime: 45.5016098234,
2021 // resolved: false,
22+ // tallied: false,
2123 // car: {
2224 // index: 0,
2325 // driverName: 'Brian Pratt2',
@@ -32,6 +34,7 @@ const INITIAL_INCIDENTS: IncidentRecord[] = [
3234 // sessionNum: 0,
3335 // sessionTime: 49.5016098234,
3436 // resolved: false,
37+ // tallied: false,
3538 // car: {
3639 // index: 0,
3740 // driverName: 'Brian Pratt2',
@@ -46,6 +49,7 @@ const INITIAL_INCIDENTS: IncidentRecord[] = [
4649 // sessionNum: 0,
4750 // sessionTime: 58.591304598,
4851 // resolved: false,
52+ // tallied: false,
4953 // car: {
5054 // index: 1,
5155 // driverName: 'Mike Racecar',
@@ -69,15 +73,15 @@ export function App() {
6973
7074 function listen ( ) {
7175 sdk . receive ( 'incident' , ( message : IncidentData ) => {
72- setIncidents ( prev => [ { ...message , resolved : false } , ...prev ] ) ;
76+ setIncidents ( prev => [ { ...message , resolved : false , tallied : false } , ...prev ] ) ;
7377 } ) ;
7478 }
7579
7680 function dismissIncident ( index : number ) {
77- return ( ) => {
81+ return ( tallied : boolean = false ) => {
7882 const incident = incidents [ index ] ;
7983 const newIncidents = _ . clone ( incidents ) ;
80- newIncidents [ index ] = { ...incident , resolved : true } ;
84+ newIncidents [ index ] = { ...incident , resolved : true , tallied } ;
8185
8286 setIncidents ( newIncidents ) ;
8387 }
@@ -92,7 +96,24 @@ export function App() {
9296 return { ...prev , [ carNumber ] : prevValue + 1 }
9397 } ) ;
9498
95- dismissIncident ( index ) ( ) ;
99+ dismissIncident ( index ) ( true ) ;
100+ }
101+ }
102+
103+ function unresolveIncident ( index : number ) {
104+ return ( ) => {
105+ const incident = incidents [ index ] ;
106+ const newIncidents = [ ...incidents ]
107+ newIncidents [ index ] = { ...incident , resolved : false , tallied : false } ;
108+
109+ setIncidents ( newIncidents ) ;
110+
111+ if ( incident . tallied ) {
112+ setDriverIncidentCounts ( prev => {
113+ const prevValue = prev [ incident . car . number ] ?? 0
114+ return { ...prev , [ incident . car . number ] : prevValue - 1 }
115+ } ) ;
116+ }
96117 }
97118 }
98119
@@ -108,7 +129,7 @@ export function App() {
108129 useEffect ( listen , [ ] ) ;
109130
110131 const displayIncidents = selectedCar
111- ? incidents . filter ( i => i . car . number == selectedCar )
132+ ? incidents . filter ( i => i . car . number == selectedCar && i . tallied == true )
112133 : incidents ;
113134
114135 return < div className = "app-main" >
@@ -117,15 +138,16 @@ export function App() {
117138 < p >
118139 {
119140 selectedCar &&
120- < span > { `Showing incidents for Car #${ selectedCar } ` }
141+ < span > { `Showing only counted incidents for Car #${ selectedCar } ` }
121142 < button onClick = { ( ) => setSelectedCar ( undefined ) } > Show All</ button > </ span >
122143 }
123144 { ! selectedCar && 'Showing all incidents' }
124145 </ p >
125146 {
126147 displayIncidents . map ( ( incident , idx ) => < Incident
127- onDismiss = { dismissIncident ( idx ) }
148+ onDismiss = { ( ) => dismissIncident ( idx ) ( false ) }
128149 onAcknowledge = { countIncident ( idx ) }
150+ unresolve = { unresolveIncident ( idx ) }
129151 key = { keyFor ( incident ) }
130152 incident = { incident } />
131153 )
0 commit comments