Graph: fixed PNG rendering of panels with legend table to the right, #2185

pull/2207/head
Torkel Ödegaard 10 years ago
parent cfeba99776
commit 26e5d7a3de
  1. 3
      CHANGELOG.md
  2. 2
      pkg/components/renderer/renderer.go
  3. 1
      public/app/features/dashboard/dashboardCtrl.js
  4. 1
      public/app/features/dashboard/dynamicDashboardSrv.js
  5. 4
      public/app/features/panel/panelSrv.js
  6. 1
      public/app/panels/dashlist/module.js
  7. 12
      public/app/panels/graph/graph.js
  8. 1
      public/app/panels/singlestat/singleStatPanel.js
  9. 1
      public/app/panels/text/module.js
  10. 1
      public/test/specs/graph-specs.js
  11. 6
      vendor/phantomjs/render.js

@ -28,6 +28,9 @@
- Search HTTP API response has changed (simplified), tags list moved to seperate HTTP resource URI
- Datasource HTTP api breaking change, ADD datasource is now POST /api/datasources/, update is now PUT /api/datasources/:id
**Fixes**
- [Issue #2185](https://github.com/grafana/grafana/issues/2185). Graph: fixed PNG rendering of panels with legend table to the right
# 2.0.3 (unreleased - 2.0.x branch)
**Fixes**

@ -54,7 +54,7 @@ func RenderToPng(params *RenderOpts) (string, error) {
}()
select {
case <-time.After(10 * time.Second):
case <-time.After(15 * time.Second):
if err := cmd.Process.Kill(); err != nil {
log.Error(4, "failed to kill: %v", err)
}

@ -84,6 +84,7 @@ function (angular, $, config) {
};
$scope.broadcastRefresh = function() {
$rootScope.performance.panelsRendered = 0;
$rootScope.$broadcast('refresh');
};

@ -164,6 +164,7 @@ function (angular, _) {
_.each(selected, function(option, index) {
var copy = self.getPanelClone(panel, row, index);
copy.span = 12 / selected.length;
copy.scopedVars = copy.scopedVars || {};
copy.scopedVars[variable.name] = option;
});

@ -86,6 +86,10 @@ function (angular, _, config) {
return datasourceSrv.get($scope.panel.datasource);
};
$scope.panelRenderingComplete = function() {
$rootScope.performance.panelsRendered++;
};
$scope.get_data = function() {
if ($scope.otherPanelInFullscreenMode()) { return; }

@ -66,6 +66,7 @@ function (angular, app, _, config, PanelMeta) {
return backendSrv.search(params).then(function(result) {
$scope.dashList = result;
$scope.panelRenderingComplete();
});
};

@ -247,22 +247,26 @@ function (angular, $, kbn, moment, _, GraphTooltip) {
sortedSeries = _.sortBy(data, function(series) { return series.zindex; });
function callPlot() {
function callPlot(incrementRenderCounter) {
try {
$.plot(elem, sortedSeries, options);
} catch (e) {
console.log('flotcharts error', e);
}
if (incrementRenderCounter) {
scope.panelRenderingComplete();
}
}
if (shouldDelayDraw(panel)) {
// temp fix for legends on the side, need to render twice to get dimensions right
callPlot();
setTimeout(callPlot, 50);
callPlot(false);
setTimeout(function() { callPlot(true); }, 50);
legendSideLastValue = panel.legend.rightSide;
}
else {
callPlot();
callPlot(true);
}
}

@ -20,6 +20,7 @@ function (angular, app, _, $) {
scope.$on('render', function() {
render();
scope.panelRenderingComplete();
});
function setElementHeight() {

@ -61,6 +61,7 @@ function (angular, app, _, require, PanelMeta) {
else if ($scope.panel.mode === 'text') {
$scope.renderText($scope.panel.content);
}
$scope.panelRenderingComplete();
};
$scope.renderText = function(content) {

@ -36,6 +36,7 @@ define([
}
};
scope.panelRenderingComplete = sinon.spy();
scope.appEvent = sinon.spy();
scope.onAppEvent = sinon.spy();
scope.hiddenSeries = {};

@ -34,10 +34,12 @@ page.open(params.url, function (status) {
function checkIsReady() {
var canvas = page.evaluate(function() {
return $('canvas').length > 0;
var body = angular.element(document.body); // 1
var rootScope = body.scope().$root;
return rootScope.performance.panelsRendered > 0;
});
if (canvas || tries === 100) {
if (canvas || tries === 1000) {
page.render(params.png);
phantom.exit();
}

Loading…
Cancel
Save