Do not render graph when width is zero, avoids plot errors

This commit is contained in:
Torkel Ödegaard 2014-09-11 14:25:20 +02:00
parent 762dab618a
commit 6ca73f6df0

View File

@ -15,7 +15,7 @@ function (angular, $, kbn, moment, _) {
restrict: 'A', restrict: 'A',
template: '<div> </div>', template: '<div> </div>',
link: function(scope, elem) { link: function(scope, elem) {
var data, plot, annotations; var data, annotations;
var hiddenData = {}; var hiddenData = {};
var dashboard = scope.dashboard; var dashboard = scope.dashboard;
var legendSideLastValue = null; var legendSideLastValue = null;
@ -82,6 +82,10 @@ function (angular, $, kbn, moment, _) {
render_panel_as_graphite_png(data); render_panel_as_graphite_png(data);
return true; return true;
} }
if (elem.width() === 0) {
return;
}
} }
// Function for rendering panel // Function for rendering panel
@ -165,18 +169,22 @@ function (angular, $, kbn, moment, _) {
var sortedSeries = _.sortBy(data, function(series) { return series.zindex; }); var sortedSeries = _.sortBy(data, function(series) { return series.zindex; });
// if legend is to the right delay plot draw a few milliseconds function callPlot() {
// so the legend width calculation can be done try {
$.plot(elem, sortedSeries, options);
} catch (e) {
console.log('flotcharts error', e);
}
addAxisLabels();
}
if (shouldDelayDraw(panel)) { if (shouldDelayDraw(panel)) {
setTimeout(callPlot, 50);
legendSideLastValue = panel.legend.rightSide; legendSideLastValue = panel.legend.rightSide;
setTimeout(function() {
plot = $.plot(elem, sortedSeries, options);
addAxisLabels();
}, 50);
} }
else { else {
plot = $.plot(elem, sortedSeries, options); callPlot();
addAxisLabels();
} }
} }