@@ -64,9 +64,7 @@ function domainToUnitScale(values) {
64
64
extent [ 0 ] -- ;
65
65
extent [ 1 ] ++ ;
66
66
}
67
- var a = 1 / ( extent [ 1 ] - extent [ 0 ] ) ;
68
- var b = - a * extent [ 0 ] ;
69
- return function ( x ) { return a * x + b ; } ;
67
+ return d3 . scale . linear ( ) . domain ( extent ) ;
70
68
}
71
69
72
70
function viewModel ( lines , width , height , canvasPixelRatio , model ) {
@@ -83,6 +81,7 @@ function viewModel(lines, width, height, canvasPixelRatio, model) {
83
81
} ;
84
82
85
83
viewModel . panels = model . dimensions . filter ( visible ) . map ( function ( dimension , i ) {
84
+ var domainToUnit = domainToUnitScale ( dimension . values ) ;
86
85
return {
87
86
key : dimension . id || ( dimension . label + ' ' + Math . floor ( 1e6 * Math . random ( ) ) ) ,
88
87
label : dimension . label ,
@@ -92,13 +91,14 @@ function viewModel(lines, width, height, canvasPixelRatio, model) {
92
91
originalXIndex : i ,
93
92
height : height ,
94
93
values : dimension . values ,
95
- paddedUnitValues : dimension . values . map ( domainToUnitScale ( dimension . values ) ) . map ( paddedUnitScale ) ,
94
+ paddedUnitValues : dimension . values . map ( domainToUnit ) . map ( paddedUnitScale ) ,
96
95
xScale : xScale ,
97
96
x : xScale ( i ) ,
98
97
canvasX : xScale ( i ) * canvasPixelRatio ,
99
98
unitScale : unitScale ( height , lines . verticalpadding ) ,
100
99
domainScale : domainScale ( height , lines . verticalpadding , lines . integerpadding , dimension ) ,
101
100
integerScale : integerScale ( lines . integerpadding , dimension ) ,
101
+ domainToUnitScale : domainToUnit ,
102
102
pieChartCheat : dimension . pieChartCheat ,
103
103
filter : [ 0 , 1 ] , // todo dimension.filter || (dimension.filter = [0, 1]),
104
104
parent : viewModel
@@ -119,7 +119,7 @@ function styleExtentTexts(selection) {
119
119
. style ( 'user-select' , 'none' ) ;
120
120
}
121
121
122
- module . exports = function ( root , styledData , layout ) {
122
+ module . exports = function ( root , styledData , layout , callbacks ) {
123
123
124
124
var unitToColor = styledData . unitToColor ;
125
125
@@ -488,11 +488,6 @@ module.exports = function(root, styledData, layout) {
488
488
}
489
489
var newExtent = reset ? [ 0 , 1 ] : extent . slice ( ) ;
490
490
if ( newExtent [ 0 ] !== filter [ 0 ] || newExtent [ 1 ] !== filter [ 1 ] ) {
491
- /* // the 1st dimension is special: brushing on it changes the color projection
492
- if(dimension.originalXIndex === 0) {
493
- dimension.parent['focusLineLayer'].setColorDomain(newExtent);
494
- }
495
- */
496
491
panels [ dimension . xIndex ] . filter = newExtent ;
497
492
dimension . parent . focusLineLayer . render ( panels , true ) ;
498
493
var filtersActive = someFiltersActive ( dimension . parent ) ;
@@ -510,9 +505,9 @@ module.exports = function(root, styledData, layout) {
510
505
function axisBrushEnded ( dimension ) {
511
506
var extent = dimension . brush . extent ( ) ;
512
507
var empty = extent [ 0 ] === extent [ 1 ] ;
508
+ var panels = dimension . parent . panels ;
509
+ var f = panels [ dimension . xIndex ] . filter ;
513
510
if ( ! empty && dimension . integer ) {
514
- var panels = dimension . parent . panels ;
515
- var f = panels [ dimension . xIndex ] . filter ;
516
511
f [ 0 ] = ordinalScaleSnap ( dimension . integerScale , f [ 0 ] ) ;
517
512
f [ 1 ] = ordinalScaleSnap ( dimension . integerScale , f [ 1 ] ) ;
518
513
if ( f [ 0 ] === f [ 1 ] ) {
@@ -523,6 +518,24 @@ module.exports = function(root, styledData, layout) {
523
518
dimension . parent . focusLineLayer . render ( panels , true ) ;
524
519
}
525
520
domainBrushing = false ;
521
+ if ( callbacks && callbacks . filterChangedCallback ) {
522
+ callbacks . filterChangedCallback ( {
523
+ changedDimension : {
524
+ key : dimension . key ,
525
+ label : dimension . label ,
526
+ domainFilter : f . map ( dimension . domainToUnitScale . invert ) ,
527
+ fullDomain : f [ 0 ] === 0 && f [ 1 ] === 1
528
+ } ,
529
+ allDimensions : panels . map ( function ( p ) {
530
+ return {
531
+ key : p . key ,
532
+ label : p . label ,
533
+ domainFilter : p . filter . map ( p . domainToUnitScale . invert ) ,
534
+ fullDomain : p . filter [ 0 ] === 0 && p . filter [ 1 ] === 1
535
+ } ;
536
+ } )
537
+ } ) ;
538
+ } ;
526
539
}
527
540
528
541
return tweakables ;
0 commit comments