Skip to content

Commit e7896e9

Browse files
authored
Merge pull request #2710 from rafalbromirski/plots-resize-layout-check
Plots.resize - additional check for gd.layout
2 parents b931e4f + 1d75ed1 commit e7896e9

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

src/plots/plots.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ plots.resize = function(gd) {
8989
if(gd._redrawTimer) clearTimeout(gd._redrawTimer);
9090

9191
gd._redrawTimer = setTimeout(function() {
92-
// return if there is nothing to resize
93-
if(gd.layout.width && gd.layout.height) {
92+
// return if there is nothing to resize or is hidden
93+
if(!gd.layout || (gd.layout.width && gd.layout.height) || isHidden(gd)) {
9494
resolve(gd);
9595
return;
9696
}

test/jasmine/tests/plot_promise_test.js

+31-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var Plotly = require('@lib/index');
22
var Events = require('@src/lib/events');
33
var createGraphDiv = require('../assets/create_graph_div');
44
var destroyGraphDiv = require('../assets/destroy_graph_div');
5-
5+
var failTest = require('../assets/fail_test');
66

77
describe('Plotly.___ methods', function() {
88
'use strict';
@@ -468,7 +468,9 @@ describe('Plotly.___ methods', function() {
468468
expect(gd).toBeDefined();
469469
expect(typeof gd).toBe('object');
470470
expect(gd.layout).toBeDefined();
471-
}).then(done);
471+
})
472+
.catch(failTest)
473+
.then(done);
472474
});
473475

474476
it('should return a rejected promise if gd is hidden', function(done) {
@@ -478,7 +480,9 @@ describe('Plotly.___ methods', function() {
478480
}, function(err) {
479481
expect(err).toBeDefined();
480482
expect(err.message).toBe('Resize must be passed a displayed plot div element.');
481-
}).then(done);
483+
})
484+
.catch(failTest)
485+
.then(done);
482486
});
483487

484488
it('should return a rejected promise if gd is detached from the DOM', function(done) {
@@ -488,7 +492,30 @@ describe('Plotly.___ methods', function() {
488492
}, function(err) {
489493
expect(err).toBeDefined();
490494
expect(err.message).toBe('Resize must be passed a displayed plot div element.');
491-
}).then(done);
495+
})
496+
.catch(failTest)
497+
.then(done);
498+
});
499+
500+
it('should return a resolved promise if plot has been purged and there is nothing to resize', function(done) {
501+
var resizePromise = Plotly.Plots.resize(initialDiv);
502+
503+
Plotly.purge(initialDiv);
504+
destroyGraphDiv();
505+
506+
resizePromise
507+
.catch(failTest)
508+
.then(done);
509+
});
510+
511+
it('should return a resolved promise if plot has been hidden and gd is hidden', function(done) {
512+
var resizePromise = Plotly.Plots.resize(initialDiv);
513+
514+
initialDiv.style.display = 'none';
515+
516+
resizePromise
517+
.catch(failTest)
518+
.then(done);
492519
});
493520

494521
it('errors before even generating a promise if gd is not defined', function() {

0 commit comments

Comments
 (0)