@@ -3,26 +3,26 @@ import {create} from "d3-selection";
33import { Mark } from "../mark.js" ;
44import { autoScaleRange } from "../scales.js" ;
55
6- export class FacetY extends Mark {
6+ // TODO facet-x
7+ export class Facet extends Mark {
78 constructor ( data , { y, transform} = { } , marks = [ ] ) {
89 super (
910 data ,
1011 [
11- { name : "y " , value : y , scale : "y " , type : "band" }
12+ { name : "fy " , value : y , scale : "fy " , type : "band" }
1213 ] ,
1314 transform
1415 ) ;
1516 this . marks = marks ;
1617 this . facets = undefined ; // set by initialize
1718 }
1819 initialize ( data ) {
19- const { index, channels : [ y ] } = super . initialize ( data ) ;
20- const [ , { value : Y } ] = y ;
20+ const { index, channels : [ fy ] } = super . initialize ( data ) ;
21+ const [ , { value : FY } ] = fy ;
2122 const subchannels = [ ] ;
2223 const facets = this . facets = new Map ( ) ;
2324
24- //
25- for ( const [ facetKey , facetIndex ] of group ( index , i => Y [ i ] ) ) {
25+ for ( const [ facetKey , facetIndex ] of group ( index , i => FY [ i ] ) ) {
2626 const facetData = Array . from ( facetIndex , i => data [ i ] ) ;
2727 const markIndex = new Map ( ) ;
2828 const markChannels = new Map ( ) ;
@@ -33,43 +33,43 @@ export class FacetY extends Mark {
3333 const { index, channels} = mark . initialize ( markData ) ;
3434 for ( const [ name , channel ] of channels ) {
3535 if ( name !== undefined ) named [ name ] = channel . value ;
36- subchannels . push ( [ undefined , facetYChannel ( channel ) ] ) ;
36+ subchannels . push ( [ undefined , channel ] ) ;
3737 }
3838 markIndex . set ( mark , index ) ;
3939 markChannels . set ( mark , named ) ;
4040 }
4141 facets . set ( facetKey , { markIndex, markChannels} ) ;
4242 }
4343
44- return { index, channels : [ y , ...subchannels ] } ;
44+ return { index, channels : [ fy , ...subchannels ] } ;
4545 }
46- render ( index , { y , fy , ... scales } , channels , options ) {
46+ render ( index , scales , channels , options ) {
4747 const { marks, facets} = this ;
48- const { marginRight , marginLeft , width } = options ;
49- const subscales = { y : fy , ... scales } ;
48+ const { fy } = scales ;
49+ const { y , marginRight , marginLeft , width } = options ;
5050
5151 const subdimensions = {
5252 marginTop : 0 ,
5353 marginRight,
5454 marginBottom : 0 ,
5555 marginLeft,
5656 width,
57- height : y . bandwidth ( )
57+ height : fy . bandwidth ( )
5858 } ;
5959
60- autoScaleRange ( { y : options . fy } , subdimensions ) ;
60+ autoScaleRange ( { y} , subdimensions ) ;
6161
6262 return create ( "svg:g" )
6363 . call ( g => g . selectAll ( )
64- . data ( y . domain ( ) )
64+ . data ( fy . domain ( ) )
6565 . join ( "g" )
66- . attr ( "transform" , ( key ) => `translate(0,${ y ( key ) } )` )
66+ . attr ( "transform" , ( key ) => `translate(0,${ fy ( key ) } )` )
6767 . each ( function ( key ) {
6868 const { markIndex, markChannels} = facets . get ( key ) ;
6969 for ( const mark of marks ) {
7070 const node = mark . render (
7171 markIndex . get ( mark ) ,
72- subscales ,
72+ scales ,
7373 markChannels . get ( mark ) ,
7474 subdimensions
7575 ) ;
@@ -79,11 +79,3 @@ export class FacetY extends Mark {
7979 . node ( ) ;
8080 }
8181}
82-
83- export function facetY ( data , options , marks ) {
84- return new FacetY ( data , options , marks ) ;
85- }
86-
87- function facetYChannel ( { scale, ...channel } ) {
88- return { ...channel , scale : scale === "y" ? "fy" : scale } ;
89- }
0 commit comments