@@ -17,37 +17,34 @@ var orientText = require('./orient_text');
1717var svgTextUtils = require ( '../../lib/svg_text_utils' ) ;
1818var Lib = require ( '../../lib' ) ;
1919var alignmentConstants = require ( '../../constants/alignment' ) ;
20- var getUidsFromCalcData = require ( '../../plots/get_data' ) . getUidsFromCalcData ;
2120
2221module . exports = function plot ( gd , plotinfo , cdcarpet , carpetLayer ) {
23- var uidLookup = getUidsFromCalcData ( cdcarpet ) ;
22+ var carpets = carpetLayer . selectAll ( 'g.trace' )
23+ . data (
24+ cdcarpet . map ( function ( d ) { return d [ 0 ] ; } ) ,
25+ function ( cd ) { return cd . trace . uid ; }
26+ ) ;
2427
25- carpetLayer . selectAll ( 'g.trace' ) . each ( function ( ) {
26- var classString = d3 . select ( this ) . attr ( 'class' ) ;
27- var oldUid = classString . split ( 'carpet' ) [ 1 ] . split ( / \s / ) [ 0 ] ;
28+ carpets . exit ( ) . remove ( ) ;
2829
29- if ( ! uidLookup [ oldUid ] ) {
30- d3 . select ( this ) . remove ( ) ;
31- }
32- } ) ;
30+ carpets . enter ( ) . append ( 'g' )
31+ . classed ( 'trace' , true ) ;
3332
34- for ( var i = 0 ; i < cdcarpet . length ; i ++ ) {
35- plotOne ( gd , plotinfo , cdcarpet [ i ] , carpetLayer ) ;
36- }
33+ carpets . each ( function ( cd ) {
34+ plotOne ( gd , plotinfo , cd , d3 . select ( this ) ) ;
35+ } ) . order ( ) ;
3736} ;
3837
39- function plotOne ( gd , plotinfo , cd , carpetLayer ) {
40- var t = cd [ 0 ] ;
41- var trace = cd [ 0 ] . trace ,
42- xa = plotinfo . xaxis ,
43- ya = plotinfo . yaxis ,
44- aax = trace . aaxis ,
45- bax = trace . baxis ,
46- fullLayout = gd . _fullLayout ;
38+ function plotOne ( gd , plotinfo , cd , axisLayer ) {
39+ var trace = cd . trace ;
40+ var xa = plotinfo . xaxis ;
41+ var ya = plotinfo . yaxis ;
42+ var aax = trace . aaxis ;
43+ var bax = trace . baxis ;
44+ var fullLayout = gd . _fullLayout ;
4745
4846 var clipLayer = fullLayout . _clips ;
4947
50- var axisLayer = Lib . ensureSingle ( carpetLayer , 'g' , 'carpet' + trace . uid ) . classed ( 'trace' , true ) ;
5148 var minorLayer = Lib . ensureSingle ( axisLayer , 'g' , 'minorlayer' ) ;
5249 var majorLayer = Lib . ensureSingle ( axisLayer , 'g' , 'majorlayer' ) ;
5350 var boundaryLayer = Lib . ensureSingle ( axisLayer , 'g' , 'boundarylayer' ) ;
@@ -65,12 +62,12 @@ function plotOne(gd, plotinfo, cd, carpetLayer) {
6562 drawGridLines ( xa , ya , boundaryLayer , aax , 'a-boundary' , aax . _boundarylines ) ;
6663 drawGridLines ( xa , ya , boundaryLayer , bax , 'b-boundary' , bax . _boundarylines ) ;
6764
68- var labelOrientationA = drawAxisLabels ( gd , xa , ya , trace , t , labelLayer , aax . _labels , 'a-label' ) ;
69- var labelOrientationB = drawAxisLabels ( gd , xa , ya , trace , t , labelLayer , bax . _labels , 'b-label' ) ;
65+ var labelOrientationA = drawAxisLabels ( gd , xa , ya , trace , cd , labelLayer , aax . _labels , 'a-label' ) ;
66+ var labelOrientationB = drawAxisLabels ( gd , xa , ya , trace , cd , labelLayer , bax . _labels , 'b-label' ) ;
7067
71- drawAxisTitles ( gd , labelLayer , trace , t , xa , ya , labelOrientationA , labelOrientationB ) ;
68+ drawAxisTitles ( gd , labelLayer , trace , cd , xa , ya , labelOrientationA , labelOrientationB ) ;
7269
73- drawClipPath ( trace , t , clipLayer , xa , ya ) ;
70+ drawClipPath ( trace , cd , clipLayer , xa , ya ) ;
7471}
7572
7673function drawClipPath ( trace , t , layer , xaxis , yaxis ) {
0 commit comments