Skip to content

Commit

Permalink
Merge pull request #8371 from ppisljar/fix/resizeChecker
Browse files Browse the repository at this point in the history
fixing charts to not render twice
  • Loading branch information
ppisljar authored Sep 22, 2016
2 parents 2610c11 + cdad772 commit 0b8ff40
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 6 deletions.
4 changes: 4 additions & 0 deletions src/ui/public/vislib/lib/resize_checker.js
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,10 @@ export default function ResizeCheckerFactory(Private, Notifier) {
}, ms));
};

ResizeChecker.prototype.stopSchedule = function () {
clearTimeout(this._timerId);
};

/**
* Signal that the ResizeChecker should shutdown.
*
Expand Down
10 changes: 9 additions & 1 deletion src/ui/public/vislib/vis.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ export default function VisFactory(Private) {
}

this.handler = handlerTypes[chartType](this) || handlerTypes.column(this);
this._runOnHandler('render');
this._runWithoutResizeChecker('render');
};

/**
Expand All @@ -86,6 +86,14 @@ export default function VisFactory(Private) {
}
};

_runWithoutResizeChecker(method) {
this.resizeChecker.stopSchedule();
this._runOnHandler(method);
this.resizeChecker.saveSize();
this.resizeChecker.saveDirty(false);
this.resizeChecker.continueSchedule();
}

_runOnHandler(method) {
try {
this.handler[method]();
Expand Down
9 changes: 5 additions & 4 deletions src/ui/public/vislib_vis_type/__tests__/_vislib_renderbot.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,11 @@ describe('renderbot', function exportWrapper() {
let buildStub = sinon.stub(renderbot, 'buildChartData', _.constant(football));
let renderStub = sinon.stub(renderbot.vislibVis, 'render');

renderbot.render('flat data', persistedState);
expect(renderStub.callCount).to.be(1);
expect(buildStub.callCount).to.be(1);
expect(renderStub.firstCall.args[0]).to.be(football);
return renderbot.render('flat data', persistedState).then(() => {
expect(renderStub.callCount).to.be(1);
expect(buildStub.callCount).to.be(1);
expect(renderStub.firstCall.args[0]).to.be(football);
});
});
});

Expand Down
7 changes: 6 additions & 1 deletion src/ui/public/vislib_vis_type/vislib_renderbot.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,12 @@ module.exports = function VislibRenderbotFactory(Private) {
VislibRenderbot.prototype.buildChartData = buildChartData;
VislibRenderbot.prototype.render = function (esResponse) {
this.chartData = this.buildChartData(esResponse);
this.vislibVis.render(this.chartData, this.uiState);
// to allow legend to render first (wait for angular digest cycle to complete)
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(this.vislibVis.render(this.chartData, this.uiState));
});
});
};

VislibRenderbot.prototype.destroy = function () {
Expand Down

0 comments on commit 0b8ff40

Please sign in to comment.