1- import { useState } from 'react' ;
21import './App.css' ;
32
43import 'devextreme/dist/css/dx.material.blue.light.compact.css' ;
@@ -36,14 +35,18 @@ function calculateAverageSpend(): number {
3635 return sum / chartData . length ;
3736}
3837
38+ const averageSpend = calculateAverageSpend ( ) ;
39+
3940function customizeTooltip ( data : { value : number ; seriesName : string } ) : { text : string } {
4041 if ( data . seriesName === 'Budget' ) {
4142 return { text : formatNumber ( data . value , 'currency' ) } ;
4243 }
4344 const isValueAboveAverage = data . value > calculateAverageSpend ( ) ;
44- const aboveText = `${ formatNumber ( data . value , 'currency' ) } \n${ formatNumber ( data . value - calculateAverageSpend ( ) , 'currency' ) } above average spending.` ;
45- const belowText = `${ formatNumber ( data . value , 'currency' ) } \n${ formatNumber ( calculateAverageSpend ( ) - data . value , 'currency' ) } below average spending.` ;
46- return { text : isValueAboveAverage ? aboveText : belowText } ;
45+ if ( isValueAboveAverage ) {
46+ return { text : `${ formatNumber ( data . value , 'currency' ) } \n${ formatNumber ( data . value - averageSpend , 'currency' ) } above average spending.` } ;
47+ }
48+
49+ return { text : `${ formatNumber ( data . value , 'currency' ) } \n${ formatNumber ( averageSpend - data . value , 'currency' ) } below average spending.` } ;
4750}
4851
4952const chartGradient = registerGradient ( 'linear' , {
@@ -57,10 +60,6 @@ const chartGradient = registerGradient('linear', {
5760} ) ;
5861
5962function App ( ) : JSX . Element {
60- // This example implements useState() for averageSpend to avoid setting the property on each render cycle.
61- // The useState() setter function is not declared as it is unused in this app.
62- const [ averageSpend ] = useState ( calculateAverageSpend ( ) ) ;
63-
6463 return (
6564 < >
6665 < Chart
0 commit comments