|
@@ -234,6 +234,24 @@ module.directive('graphLegend', function(popoverSrv, $timeout) {
|
|
|
elem.append(seriesElements);
|
|
elem.append(seriesElements);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // Phantomjs has rendering issue for CSS float property, so when legend values are present, legend takes
|
|
|
|
|
+ // all graph width and rendering fails. So it should be handled to avoid rendering timeout.
|
|
|
|
|
+ // See issue #10526 https://github.com/grafana/grafana/issues/10526
|
|
|
|
|
+ if (panel.legend.rightSide) {
|
|
|
|
|
+ const legendWidth = elem.parent().width();
|
|
|
|
|
+ const panelWidth = elem.parent().width();
|
|
|
|
|
+ let maxLegendElementWidth = _.max(_.map(seriesElements, el => $(el).width()));
|
|
|
|
|
+ maxLegendElementWidth = _.isNumber(maxLegendElementWidth) ? maxLegendElementWidth : 0;
|
|
|
|
|
+ const widthDiff = Math.abs(panelWidth - maxLegendElementWidth);
|
|
|
|
|
+ // Set width to content size, but table takes all space anyway, so width shouldn't be more
|
|
|
|
|
+ // than 40% of panel in this case.
|
|
|
|
|
+ if (widthDiff < panelWidth * 0.1 || legendWidth > panelWidth * 0.9) {
|
|
|
|
|
+ const maxTableWidthPercent = 0.4;
|
|
|
|
|
+ const maxWidth = Math.min(Math.ceil(maxLegendElementWidth * 1.05), panelWidth * maxTableWidthPercent);
|
|
|
|
|
+ elem.css('max-width', maxWidth);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
if (!panel.legend.rightSide) {
|
|
if (!panel.legend.rightSide) {
|
|
|
addScrollbar();
|
|
addScrollbar();
|
|
|
} else {
|
|
} else {
|