@@ -160,7 +160,7 @@ module.exports = function calc(gd, trace) {
160160
161161 // Array of DimensionModel objects
162162 var dimensionModels = trace . dimensions . filter ( visible ) . map ( function ( di , i ) {
163- return createDimensionModel ( i , di . _index , di . displayindex , di . label , totalCount ) ;
163+ return createDimensionModel ( i , di . _index , di . _displayindex , di . label , totalCount ) ;
164164 } ) ;
165165
166166
@@ -456,16 +456,23 @@ function getUniqueInfo(values, uniqueValues) {
456456
457457/**
458458 * Validate the requested display order for the dimensions.
459- * If the display order is a permutation of 0 through dimensions.length - 1 then leave it alone. Otherwise, repalce
460- * the display order with the dimension order
459+ * If the display order is a permutation of 0 through dimensions.length - 1, link to _displayindex
460+ * Otherwise, replace the display order with the dimension order
461461 * @param {Object } trace
462462 */
463463function validateDimensionDisplayInds ( trace ) {
464- var displayInds = trace . dimensions . filter ( visible ) . map ( function ( dim ) { return dim . displayindex ; } ) ;
465- if ( ! isRangePermutation ( displayInds ) ) {
466- trace . dimensions . filter ( visible ) . forEach ( function ( dim , i ) {
467- dim . displayindex = i ;
468- } ) ;
464+ var visibleDims = Lib . filterVisible ( trace . dimensions ) ;
465+ var displayInds = visibleDims . map ( function ( d ) { return d . displayindex ; } ) ;
466+ var i ;
467+
468+ if ( isRangePermutation ( displayInds ) ) {
469+ for ( i = 0 ; i < visibleDims . length ; i ++ ) {
470+ visibleDims [ i ] . _displayindex = visibleDims [ i ] . displayindex ;
471+ }
472+ } else {
473+ for ( i = 0 ; i < visibleDims . length ; i ++ ) {
474+ visibleDims [ i ] . _displayindex = i ;
475+ }
469476 }
470477}
471478
0 commit comments