@@ -14,16 +14,19 @@ import type {
1414 TooltipDataChunkRadar ,
1515 TooltipDataChunkSankey ,
1616 TreemapSeriesData ,
17+ ValueFormat ,
1718 WaterfallSeriesData ,
1819} from '../../types' ;
1920import { block , getDataCategoryValue , getWaterfallPointSubtotal } from '../../utils' ;
21+ import { getFormattedValue } from '../../utils/chart/format' ;
2022
2123const b = block ( 'tooltip' ) ;
2224
2325type Props = {
2426 hovered : TooltipDataChunk [ ] ;
2527 xAxis ?: ChartXAxis ;
2628 yAxis ?: ChartYAxis ;
29+ valueFormat ?: ValueFormat ;
2730} ;
2831
2932const DEFAULT_DATE_FORMAT = 'DD.MM.YY' ;
@@ -75,7 +78,7 @@ const getMeasureValue = (data: TooltipDataChunk[], xAxis?: ChartXAxis, yAxis?: C
7578 return getXRowData ( data [ 0 ] ?. data , xAxis ) ;
7679} ;
7780
78- export const DefaultContent = ( { hovered, xAxis, yAxis} : Props ) => {
81+ export const DefaultContent = ( { hovered, xAxis, yAxis, valueFormat } : Props ) => {
7982 const measureValue = getMeasureValue ( hovered , xAxis , yAxis ) ;
8083
8184 return (
@@ -91,9 +94,13 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
9194 case 'line' :
9295 case 'area' :
9396 case 'bar-x' : {
97+ const formattedValue = getFormattedValue ( {
98+ value : getYRowData ( data , yAxis ) ,
99+ format : valueFormat ,
100+ } ) ;
94101 const value = (
95102 < React . Fragment >
96- { series . name } : { getYRowData ( data , yAxis ) }
103+ { series . name } : { formattedValue }
97104 </ React . Fragment >
98105 ) ;
99106 return (
@@ -105,10 +112,18 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
105112 }
106113 case 'waterfall' : {
107114 const isTotal = get ( data , 'total' , false ) ;
108- const subTotal = getWaterfallPointSubtotal (
115+ const subTotalValue = getWaterfallPointSubtotal (
109116 data as WaterfallSeriesData ,
110117 series as PreparedWaterfallSeries ,
111118 ) ;
119+ const subTotal = getFormattedValue ( {
120+ value : subTotalValue ,
121+ format : valueFormat ,
122+ } ) ;
123+ const formattedValue = getFormattedValue ( {
124+ value : getYRowData ( data , yAxis ) ,
125+ format : valueFormat ,
126+ } ) ;
112127
113128 return (
114129 < div key = { `${ id } _${ get ( data , 'x' ) } ` } >
@@ -119,7 +134,7 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
119134 </ div >
120135 < div className = { b ( 'content-row' ) } >
121136 < span > { series . name } </ span >
122- < span > { getYRowData ( data , yAxis ) } </ span >
137+ < span > { formattedValue } </ span >
123138 </ div >
124139 </ React . Fragment >
125140 ) }
@@ -130,9 +145,13 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
130145 ) ;
131146 }
132147 case 'bar-y' : {
148+ const formattedValue = getFormattedValue ( {
149+ value : getXRowData ( data , xAxis ) ,
150+ format : valueFormat ,
151+ } ) ;
133152 const value = (
134153 < React . Fragment >
135- { series . name } : { getXRowData ( data , xAxis ) }
154+ { series . name } : { formattedValue }
136155 </ React . Fragment >
137156 ) ;
138157 return (
@@ -145,18 +164,26 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
145164 case 'pie' :
146165 case 'treemap' : {
147166 const seriesData = data as PreparedPieSeries | TreemapSeriesData ;
167+ const formattedValue = getFormattedValue ( {
168+ value : seriesData . value ,
169+ format : valueFormat ,
170+ } ) ;
148171
149172 return (
150173 < div key = { id } className = { b ( 'content-row' ) } >
151174 < div className = { b ( 'color' ) } style = { { backgroundColor : color } } />
152175 < span > { seriesData . name || seriesData . id } </ span >
153- < span > { seriesData . value } </ span >
176+ < span > { formattedValue } </ span >
154177 </ div >
155178 ) ;
156179 }
157180 case 'sankey' : {
158181 const { target, data : source } = seriesItem as TooltipDataChunkSankey ;
159182 const value = source . links . find ( ( d ) => d . name === target ?. name ) ?. value ;
183+ const formattedValue = getFormattedValue ( {
184+ value,
185+ format : valueFormat ,
186+ } ) ;
160187
161188 return (
162189 < div key = { id } className = { b ( 'content-row' ) } >
@@ -165,19 +192,23 @@ export const DefaultContent = ({hovered, xAxis, yAxis}: Props) => {
165192 style = { { backgroundColor : source . color } }
166193 />
167194 < div style = { { display : 'flex' , gap : 8 , verticalAlign : 'center' } } >
168- { source . name } < span > →</ span > { target ?. name } : { value }
195+ { source . name } < span > →</ span > { target ?. name } : { formattedValue }
169196 </ div >
170197 </ div >
171198 ) ;
172199 }
173200 case 'radar' : {
174201 const radarSeries = series as PreparedRadarSeries ;
175202 const seriesData = data as RadarSeriesData ;
203+ const formattedValue = getFormattedValue ( {
204+ value : seriesData . value ,
205+ format : valueFormat ,
206+ } ) ;
176207
177208 const value = (
178209 < React . Fragment >
179210 < span > { radarSeries . name || radarSeries . id } </ span >
180- < span > { seriesData . value } </ span >
211+ < span > { formattedValue } </ span >
181212 </ React . Fragment >
182213 ) ;
183214
0 commit comments