diff --git a/src/traces/treemap/plot.js b/src/traces/treemap/plot.js index c8ba6d0761a..f6fadac0891 100644 --- a/src/traces/treemap/plot.js +++ b/src/traces/treemap/plot.js @@ -82,9 +82,20 @@ function plotOne(gd, cd, element, transitionOpts) { var cd0 = cd[0]; var trace = cd0.trace; var hierarchy = cd0.hierarchy; - var hasTransition = helpers.hasTransition(transitionOpts); var entry = helpers.findEntryWithLevel(hierarchy, trace.level); + + var gTrace = d3.select(element); + var selAncestors = gTrace.selectAll('g.pathbar'); + var selDescendants = gTrace.selectAll('g.slice'); + + if(!entry) { + selAncestors.remove(); + selDescendants.remove(); + return; + } + var isRoot = helpers.isHierarchyRoot(entry); + var hasTransition = helpers.hasTransition(transitionOpts); var maxDepth = helpers.getMaxDepth(trace); var hasVisibleDepth = function(pt) { @@ -517,16 +528,6 @@ function plotOne(gd, cd, element, transitionOpts) { }); }; - var gTrace = d3.select(element); - var selAncestors = gTrace.selectAll('g.pathbar'); - var selDescendants = gTrace.selectAll('g.slice'); - - if(!entry) { - selAncestors.remove(); - selDescendants.remove(); - return; - } - if(hasTransition) { // Important: do this before binding new sliceData! diff --git a/test/jasmine/tests/treemap_test.js b/test/jasmine/tests/treemap_test.js index d970b98406a..7a613dfb309 100644 --- a/test/jasmine/tests/treemap_test.js +++ b/test/jasmine/tests/treemap_test.js @@ -561,6 +561,29 @@ describe('Test treemap calc:', function() { }); }); +describe('Test treemap plot:', function() { + var gd; + + beforeEach(function() { gd = createGraphDiv(); }); + + afterEach(destroyGraphDiv); + + it('should return early from the plot when there is no entry', function(done) { + Plotly.plot(gd, [{ + labels: ['a', 'b'], + parents: ['A', 'B'], + type: 'treemap' + }]) + .then(function() { + var gd3 = d3.select(gd); + var element = gd3.select('.treemap trace').node(); + expect(element).toBe(null); + }) + .catch(failTest) + .then(done); + }); +}); + describe('Test treemap hover:', function() { var gd;