@@ -73,16 +73,16 @@ export default function buildAxisLinear<TDatum>(
73
73
// Give the scale a home
74
74
return options . scaleType === 'time' || options . scaleType === 'localTime'
75
75
? buildTimeAxis (
76
- isPrimary ,
77
- options ,
78
- series ,
79
- allDatums ,
80
- isVertical ,
81
- range ,
82
- outerRange
83
- )
76
+ isPrimary ,
77
+ options ,
78
+ series ,
79
+ allDatums ,
80
+ isVertical ,
81
+ range ,
82
+ outerRange
83
+ )
84
84
: options . scaleType === 'linear' || options . scaleType === 'log'
85
- ? buildLinearAxis (
85
+ ? buildLinearAxis (
86
86
isPrimary ,
87
87
options ,
88
88
series ,
@@ -91,11 +91,11 @@ export default function buildAxisLinear<TDatum>(
91
91
range ,
92
92
outerRange
93
93
)
94
- : options . scaleType === 'band'
95
- ? buildBandAxis ( isPrimary , options , series , isVertical , range , outerRange )
96
- : ( ( ) => {
97
- throw new Error ( 'Invalid scale type' )
98
- } ) ( )
94
+ : options . scaleType === 'band'
95
+ ? buildBandAxis ( isPrimary , options , series , isVertical , range , outerRange )
96
+ : ( ( ) => {
97
+ throw new Error ( 'Invalid scale type' )
98
+ } ) ( )
99
99
}
100
100
101
101
function buildTimeAxis < TDatum > (
@@ -111,6 +111,11 @@ function buildTimeAxis<TDatum>(
111
111
112
112
let isInvalid = false
113
113
114
+ series = isPrimary ? series : series
115
+ . filter ( s => s . secondaryAxisId === options . id )
116
+
117
+ allDatums = isPrimary ? allDatums : allDatums . filter ( d => d . secondaryAxisId === options . id )
118
+
114
119
// Now set the range
115
120
const scale = scaleFn ( range )
116
121
@@ -144,7 +149,7 @@ function buildTimeAxis<TDatum>(
144
149
}
145
150
146
151
if ( minValue === undefined || maxValue === undefined ) {
147
- console . info ( 'Invalid scale min/max was detect for a chart: ' , {
152
+ console . info ( 'Invalid scale min/max' , {
148
153
options,
149
154
series,
150
155
range,
@@ -242,28 +247,32 @@ function buildLinearAxis<TDatum>(
242
247
243
248
let isInvalid = false
244
249
250
+ series = isPrimary ? series : series
251
+ . filter ( s => s . secondaryAxisId === options . id )
252
+
253
+ allDatums = isPrimary ? allDatums : allDatums . filter ( d => d . secondaryAxisId === options . id )
254
+
245
255
if ( options . stacked ) {
246
256
stackSeries ( series , options )
247
257
}
248
258
249
259
let [ minValue , maxValue ] = options . stacked
250
260
? extent (
251
- series
252
- . map ( s =>
253
- s . datums . map ( datum => {
254
- const value = options . getValue ( datum . originalDatum )
255
- datum [ isPrimary ? 'primaryValue' : 'secondaryValue' ] = value
256
-
257
- return datum . stackData ?? [ ]
258
- } )
259
- )
260
- . flat ( 2 ) as unknown as number [ ]
261
- )
261
+ series
262
+ . map ( s =>
263
+ s . datums . map ( datum => {
264
+ const value = options . getValue ( datum . originalDatum )
265
+ datum [ isPrimary ? 'primaryValue' : 'secondaryValue' ] = value
266
+ return datum . stackData ?? [ ]
267
+ } )
268
+ )
269
+ . flat ( 2 ) as unknown as number [ ]
270
+ )
262
271
: extent ( allDatums , datum => {
263
- const value = options . getValue ( datum . originalDatum )
264
- datum [ isPrimary ? 'primaryValue' : 'secondaryValue' ] = value
265
- return value
266
- } )
272
+ const value = options . getValue ( datum . originalDatum )
273
+ datum [ isPrimary ? 'primaryValue' : 'secondaryValue' ] = value
274
+ return value
275
+ } )
267
276
268
277
let shouldNice = options . shouldNice
269
278
@@ -310,7 +319,7 @@ function buildLinearAxis<TDatum>(
310
319
} )
311
320
minValue = minValue ?? 0
312
321
maxValue = maxValue ?? 0
313
- // throw new Error('Invalid scale min/max')
322
+ // throw new Error('Invalid scale min/max'
314
323
}
315
324
316
325
// Set the domain
@@ -465,13 +474,12 @@ function stackSeries<TDatum>(
465
474
series : Series < TDatum > [ ] ,
466
475
axisOptions : AxisOptions < TDatum >
467
476
) {
468
- const axisSeries = series . filter ( s => s . secondaryAxisId === axisOptions . id )
469
- const seriesIndices = Object . keys ( axisSeries )
477
+ const seriesIndices = Object . keys ( series )
470
478
const stacker = stack ( )
471
479
. keys ( seriesIndices )
472
480
. value ( ( _ , seriesIndex , index ) => {
473
481
const originalDatum =
474
- axisSeries [ Number ( seriesIndex ) ] ?. datums [ index ] ?. originalDatum
482
+ series [ Number ( seriesIndex ) ] ?. datums [ index ] ?. originalDatum
475
483
476
484
const val =
477
485
typeof originalDatum !== 'undefined'
@@ -488,7 +496,7 @@ function stackSeries<TDatum>(
488
496
489
497
const stacked = stacker (
490
498
Array . from ( {
491
- length : axisSeries . sort ( ( a , b ) => b . datums . length - a . datums . length ) [ 0 ]
499
+ length : series . sort ( ( a , b ) => b . datums . length - a . datums . length ) [ 0 ]
492
500
. datums . length ,
493
501
} )
494
502
)
@@ -499,11 +507,11 @@ function stackSeries<TDatum>(
499
507
for ( let i = 0 ; i < s . length ; i ++ ) {
500
508
const datum = s [ i ]
501
509
502
- if ( axisSeries [ sIndex ] . datums [ i ] ) {
510
+ if ( series [ sIndex ] . datums [ i ] ) {
503
511
// @ts -ignore
504
- datum . data = axisSeries [ sIndex ] . datums [ i ]
512
+ datum . data = series [ sIndex ] . datums [ i ]
505
513
506
- axisSeries [ sIndex ] . datums [ i ] . stackData =
514
+ series [ sIndex ] . datums [ i ] . stackData =
507
515
datum as unknown as StackDatum < TDatum >
508
516
}
509
517
}
@@ -561,9 +569,7 @@ function buildSeriesBandScale<TDatum>(
561
569
primaryBandScale : ScaleBand < number > ,
562
570
series : Series < TDatum > [ ]
563
571
) {
564
- const bandDomain = d3Range (
565
- series . filter ( d => d . secondaryAxisId === options . id ) . length
566
- )
572
+ const bandDomain = d3Range ( series . length )
567
573
568
574
const seriesBandScale = scaleBand ( bandDomain , [
569
575
0 ,
@@ -572,11 +578,11 @@ function buildSeriesBandScale<TDatum>(
572
578
. round ( false )
573
579
. paddingOuter (
574
580
options . outerSeriesBandPadding ??
575
- ( options . outerBandPadding ? options . outerBandPadding / 2 : 0 )
581
+ ( options . outerBandPadding ? options . outerBandPadding / 2 : 0 )
576
582
)
577
583
. paddingInner (
578
584
options . innerSeriesBandPadding ??
579
- ( options . innerBandPadding ? options . innerBandPadding / 2 : 0 )
585
+ ( options . innerBandPadding ? options . innerBandPadding / 2 : 0 )
580
586
)
581
587
582
588
const scale = ( seriesIndex : number ) =>
0 commit comments