@@ -23,23 +23,11 @@ import AbstractChart, {
2323} from "../../shared/AbstractChart" ;
2424import { ChartData , Dataset } from "../../shared/types" ;
2525import { getNumberProp } from "../../shared/utils" ;
26+ import { getLegacyLineChartPointX , getLegacyLineChartXMax } from "./geometry" ;
2627import { LegendItem } from "./LegendItem" ;
2728
2829let AnimatedCircle = Animated . createAnimatedComponent ( Circle ) ;
2930
30- const getFiniteNumber = ( value : unknown , fallback : number ) => {
31- if ( typeof value === "number" ) {
32- return Number . isFinite ( value ) ? value : fallback ;
33- }
34-
35- if ( typeof value === "string" ) {
36- const parsed = Number . parseFloat ( value ) ;
37- return Number . isFinite ( parsed ) ? parsed : fallback ;
38- }
39-
40- return fallback ;
41- } ;
42-
4331export interface LineChartData extends ChartData {
4432 legend ?: string [ ] ;
4533}
@@ -249,22 +237,6 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
249237 return dataset . strokeWidth || this . props . chartConfig . strokeWidth || 3 ;
250238 } ;
251239
252- getChartRightPadding = ( data : Dataset [ ] , withDots : boolean ) => {
253- const propsForDots = this . props . chartConfig ?. propsForDots ?? { } ;
254- const dotRadius = withDots ? getFiniteNumber ( propsForDots . r , 4 ) : 0 ;
255- const dotStrokeWidth = withDots
256- ? getFiniteNumber ( propsForDots . strokeWidth , 0 )
257- : 0 ;
258- const maxStrokeWidth = data . reduce (
259- ( maxWidth , dataset ) => Math . max ( maxWidth , this . getStrokeWidth ( dataset ) ) ,
260- 0
261- ) ;
262-
263- return Math . ceil (
264- Math . max ( 4 , dotRadius + dotStrokeWidth / 2 , maxStrokeWidth / 2 )
265- ) ;
266- } ;
267-
268240 getDatas = ( data : Dataset [ ] ) : number [ ] => {
269241 return data . reduce (
270242 ( acc , item ) =>
@@ -326,7 +298,12 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
326298 return ;
327299 }
328300
329- const cx = paddingRight + ( i * ( width - paddingRight ) ) / xMax ;
301+ const cx = getLegacyLineChartPointX ( {
302+ index : i ,
303+ width,
304+ paddingRight,
305+ xMax
306+ } ) ;
330307
331308 const cy =
332309 ( ( baseHeight - this . calcHeight ( x , datas , height ) ) / 4 ) * 3 +
@@ -497,10 +474,12 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
497474 3 +
498475 paddingTop ;
499476 yValues . push ( yval ) ;
500- const xval =
501- paddingRight +
502- ( ( dataset . data . length - index - 1 ) * ( width - paddingRight ) ) /
503- dataset . data . length ;
477+ const xval = getLegacyLineChartPointX ( {
478+ index : dataset . data . length - index - 1 ,
479+ width,
480+ paddingRight,
481+ xMax : dataset . data . length
482+ } ) ;
504483 xValues . push ( xval ) ;
505484
506485 yValuesLabel . push (
@@ -610,7 +589,12 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
610589 points = {
611590 dataset . data
612591 . map ( ( d , i ) => {
613- const x = paddingRight + ( i * ( width - paddingRight ) ) / xMax ;
592+ const x = getLegacyLineChartPointX ( {
593+ index : i ,
594+ width,
595+ paddingRight,
596+ xMax
597+ } ) ;
614598
615599 const y =
616600 ( ( baseHeight - this . calcHeight ( d , datas , height ) ) / 4 ) * 3 +
@@ -619,10 +603,12 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
619603 return `${ x } ,${ y } ` ;
620604 } )
621605 . join ( " " ) +
622- ` ${
623- paddingRight +
624- ( ( width - paddingRight ) / xMax ) * ( dataset . data . length - 1 )
625- } ,${
606+ ` ${ getLegacyLineChartPointX ( {
607+ index : dataset . data . length - 1 ,
608+ width,
609+ paddingRight,
610+ xMax
611+ } ) } ,${
626612 ( height / 4 ) * 3 + paddingTop
627613 } ${ paddingRight } ,${ ( height / 4 ) * 3 + paddingTop } `
628614 }
@@ -665,7 +651,12 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
665651 let lastPoint : string ;
666652 const points = dataset . data . map ( ( d , i ) => {
667653 if ( d === null ) return lastPoint ;
668- const x = ( i * ( width - paddingRight ) ) / xMax + paddingRight ;
654+ const x = getLegacyLineChartPointX ( {
655+ index : i ,
656+ width,
657+ paddingRight,
658+ xMax
659+ } ) ;
669660 const y =
670661 ( ( baseHeight - this . calcHeight ( d , datas , height ) ) / 4 ) * 3 +
671662 paddingTop ;
@@ -691,10 +682,7 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
691682 } ;
692683
693684 getXMaxValues = ( data : Dataset [ ] ) => {
694- return data . reduce ( ( acc , cur ) => {
695- const xMax = Math . max ( cur . data . length - 1 , 1 ) ;
696- return xMax > acc ? xMax : acc ;
697- } , 1 ) ;
685+ return getLegacyLineChartXMax ( data ) ;
698686 } ;
699687
700688 getBezierLinePoints = (
@@ -718,7 +706,14 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
718706 const xMax = this . getXMaxValues ( data ) ;
719707
720708 const x = ( i : number ) =>
721- Math . floor ( paddingRight + ( i * ( width - paddingRight ) ) / xMax ) ;
709+ Math . floor (
710+ getLegacyLineChartPointX ( {
711+ index : i ,
712+ width,
713+ paddingRight,
714+ xMax
715+ } )
716+ ) ;
722717
723718 const baseHeight = this . calcBaseHeight ( datas , height ) ;
724719
@@ -800,10 +795,12 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
800795 paddingTop,
801796 data
802797 } ) +
803- ` L${
804- paddingRight +
805- ( ( width - paddingRight ) / xMax ) * ( dataset . data . length - 1 )
806- } ,${
798+ ` L${ getLegacyLineChartPointX ( {
799+ index : dataset . data . length - 1 ,
800+ width,
801+ paddingRight,
802+ xMax
803+ } ) } ,${
807804 ( height / 4 ) * 3 + paddingTop
808805 } L${ paddingRight } ,${ ( height / 4 ) * 3 + paddingTop } Z`;
809806
@@ -874,17 +871,8 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
874871 paddingBottom = 0
875872 } = style ;
876873
877- const chartRightPadding = this . getChartRightPadding (
878- data . datasets ,
879- withDots
880- ) ;
881- const chartWidth = Math . max (
882- width - chartRightPadding ,
883- getFiniteNumber ( paddingRight , 64 ) + 1
884- ) ;
885-
886874 const config = {
887- width : chartWidth ,
875+ width,
888876 height,
889877 verticalLabelRotation,
890878 horizontalLabelRotation
@@ -895,9 +883,6 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
895883 const hasScrollableData =
896884 withScrollableDot &&
897885 data . datasets . some ( ( dataset ) => dataset . data && dataset . data . length > 0 ) ;
898- const xAxisDataIntervalCount = this . getXMaxValues ( data . datasets ) ;
899- const xAxisLabelIntervalCount = Math . max ( labels . length - 1 , 1 ) ;
900-
901886 let count = Math . min ( ...datas ) === Math . max ( ...datas ) ? 1 : 4 ;
902887 if ( segments ) {
903888 count = segments ;
@@ -963,8 +948,7 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
963948 ...config ,
964949 data : firstDataset . data ,
965950 paddingTop : paddingTop as number ,
966- paddingRight : paddingRight as number ,
967- xAxisIntervalCount : xAxisDataIntervalCount
951+ paddingRight : paddingRight as number
968952 } )
969953 : withOuterLines
970954 ? this . renderVerticalLine ( {
@@ -981,7 +965,6 @@ class LineChart extends AbstractChart<LineChartProps, LineChartState> {
981965 labels,
982966 paddingTop : paddingTop as number ,
983967 paddingRight : paddingRight as number ,
984- xAxisIntervalCount : xAxisLabelIntervalCount ,
985968 formatXLabel
986969 } ) }
987970 </ G >
0 commit comments