-
-
+
diff --git a/public/app/plugins/panel/graph/graph.js b/public/app/plugins/panel/graph/graph.js
index 0f53852cec0..0443a294eed 100755
--- a/public/app/plugins/panel/graph/graph.js
+++ b/public/app/plugins/panel/graph/graph.js
@@ -115,7 +115,7 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
for (var i = 0; i < data.length; i++) {
var series = data[i];
var axis = yaxis[series.yaxis - 1];
- var formater = kbn.valueFormats[panel.y_formats[series.yaxis - 1]];
+ var formater = kbn.valueFormats[panel.yaxes[series.yaxis - 1].format];
// decimal override
if (_.isNumber(panel.decimals)) {
@@ -132,18 +132,18 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
}
// add left axis labels
- if (panel.leftYAxisLabel) {
+ if (panel.yaxes[0].label) {
var yaxisLabel = $("
")
- .text(panel.leftYAxisLabel)
+ .text(panel.yaxes[0].label)
.appendTo(elem);
yaxisLabel.css("margin-top", yaxisLabel.width() / 2);
}
// add right axis labels
- if (panel.rightYAxisLabel) {
+ if (panel.yaxes[1].label) {
var rightLabel = $("
")
- .text(panel.rightYAxisLabel)
+ .text(panel.yaxes[1].label)
.appendTo(elem);
rightLabel.css("margin-top", rightLabel.width() / 2);
@@ -151,7 +151,7 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
}
function processOffsetHook(plot, gridMargin) {
- if (panel.leftYAxisLabel) { gridMargin.left = 20; }
+ if (panel.yaxis) { gridMargin.left = 20; }
if (panel.rightYAxisLabel) { gridMargin.right = 20; }
}
@@ -217,7 +217,7 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
for (var i = 0; i < data.length; i++) {
var series = data[i];
- series.data = series.getFlotPairs(series.nullPointMode || panel.nullPointMode, panel.y_formats);
+ series.data = series.getFlotPairs(series.nullPointMode || panel.nullPointMode);
// if hidden remove points and disable stack
if (ctrl.hiddenSeries[series.alias]) {
@@ -340,11 +340,11 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
function configureAxisOptions(data, options) {
var defaults = {
position: 'left',
- show: panel['y-axis'],
- min: panel.grid.leftMin,
+ show: panel.yaxes[0].show,
+ min: panel.yaxes[0].min,
index: 1,
- logBase: panel.grid.leftLogBase || 1,
- max: panel.percentage && panel.stack ? 100 : panel.grid.leftMax,
+ logBase: panel.yaxes[0].logBase || 1,
+ max: panel.percentage && panel.stack ? 100 : panel.yaxes[0].max,
};
options.yaxes.push(defaults);
@@ -352,18 +352,19 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
if (_.findWhere(data, {yaxis: 2})) {
var secondY = _.clone(defaults);
secondY.index = 2,
- secondY.logBase = panel.grid.rightLogBase || 1,
+ secondY.show = panel.yaxes[1].show;
+ secondY.logBase = panel.yaxes[1].logBase || 1,
secondY.position = 'right';
- secondY.min = panel.grid.rightMin;
- secondY.max = panel.percentage && panel.stack ? 100 : panel.grid.rightMax;
+ secondY.min = panel.yaxes[1].min;
+ secondY.max = panel.percentage && panel.stack ? 100 : panel.yaxes[1].max;
options.yaxes.push(secondY);
applyLogScale(options.yaxes[1], data);
- configureAxisMode(options.yaxes[1], panel.percentage && panel.stack ? "percent" : panel.y_formats[1]);
+ configureAxisMode(options.yaxes[1], panel.percentage && panel.stack ? "percent" : panel.yaxes[1].format);
}
applyLogScale(options.yaxes[0], data);
- configureAxisMode(options.yaxes[0], panel.percentage && panel.stack ? "percent" : panel.y_formats[0]);
+ configureAxisMode(options.yaxes[0], panel.percentage && panel.stack ? "percent" : panel.yaxes[0].format);
}
function applyLogScale(axis, data) {
@@ -456,7 +457,7 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
url += panel['x-axis'] ? '' : '&hideAxes=true';
url += panel['y-axis'] ? '' : '&hideYAxis=true';
- switch(panel.y_formats[0]) {
+ switch(panel.yaxes[0].format) {
case 'bytes':
url += '&yUnitSystem=binary';
break;
diff --git a/public/app/plugins/panel/graph/module.ts b/public/app/plugins/panel/graph/module.ts
index 29c2dccbac2..43fbddd9b24 100644
--- a/public/app/plugins/panel/graph/module.ts
+++ b/public/app/plugins/panel/graph/module.ts
@@ -17,20 +17,28 @@ var panelDefaults = {
datasource: null,
// sets client side (flot) or native graphite png renderer (png)
renderer: 'flot',
- // Show/hide the x-axis
- 'x-axis' : true,
- // Show/hide y-axis
- 'y-axis' : true,
- // y axis formats, [left axis,right axis]
- y_formats : ['short', 'short'],
- // grid options
+ yaxes: [
+ {
+ label: null,
+ show: true,
+ logBase: 1,
+ min: null,
+ max: null,
+ format: 'short'
+ },
+ {
+ label: null,
+ show: true,
+ logBase: 1,
+ min: null,
+ max: null,
+ format: 'short'
+ }
+ ],
+ xaxis: {
+ show: true
+ },
grid : {
- leftLogBase: 1,
- leftMax: null,
- rightMax: null,
- leftMin: null,
- rightMin: null,
- rightLogBase: 1,
threshold1: null,
threshold2: null,
threshold1Color: 'rgba(216, 200, 27, 0.27)',
@@ -115,8 +123,8 @@ class GraphCtrl extends MetricsPanelCtrl {
}
onInitEditMode() {
- this.addEditorTab('Axes & Grid', 'public/app/plugins/panel/graph/axisEditor.html', 2);
- this.addEditorTab('Display Styles', 'public/app/plugins/panel/graph/styleEditor.html', 3);
+ this.addEditorTab('Axes', 'public/app/plugins/panel/graph/axisEditor.html', 2);
+ this.addEditorTab('Display', 'public/app/plugins/panel/graph/styleEditor.html', 3);
this.logScales = {
'linear': 1,
@@ -135,7 +143,7 @@ class GraphCtrl extends MetricsPanelCtrl {
}
setUnitFormat(axis, subItem) {
- this.panel.y_formats[axis] = subItem.value;
+ axis.format = subItem.value;
this.render();
}
diff --git a/public/app/plugins/panel/graph/specs/graph_specs.ts b/public/app/plugins/panel/graph/specs/graph_specs.ts
index 28b38101004..1a708696680 100644
--- a/public/app/plugins/panel/graph/specs/graph_specs.ts
+++ b/public/app/plugins/panel/graph/specs/graph_specs.ts
@@ -31,7 +31,21 @@ describe('grafanaGraph', function() {
panel: {
legend: {},
grid: { },
- y_formats: [],
+ yaxes: [
+ {
+ min: null,
+ max: null,
+ format: 'short',
+ logBase: 1
+ },
+ {
+ min: null,
+ max: null,
+ format: 'short',
+ logBase: 1
+ }
+ ],
+ xaxis: {},
seriesOverrides: [],
tooltip: {
shared: true
@@ -151,13 +165,7 @@ describe('grafanaGraph', function() {
graphScenario('when logBase is log 10', function(ctx) {
ctx.setup(function(ctrl) {
- ctrl.panel.grid = {
- leftMax: null,
- rightMax: null,
- leftMin: null,
- rightMin: null,
- leftLogBase: 10,
- };
+ ctrl.panel.yaxes[0].logBase = 10;
});
it('should apply axis transform and ticks', function() {
diff --git a/public/test/specs/dashboardSrv-specs.js b/public/test/specs/dashboardSrv-specs.js
index 86f54f274fb..e02495c1236 100644
--- a/public/test/specs/dashboardSrv-specs.js
+++ b/public/test/specs/dashboardSrv-specs.js
@@ -122,7 +122,10 @@ define([
{
panels: [
{
- type: 'graphite', legend: true, aliasYAxis: { test: 2 }, grid: { min: 1, max: 10 },
+ type: 'graph', legend: true, aliasYAxis: { test: 2 },
+ y_formats: ['kbyte', 'ms'],
+ grid: {min: 1, max: 10, rightMin: 5, rightMax: 15, leftLogBase: 1, rightLogBase: 2},
+ leftYAxisLabel: 'left label',
targets: [{refId: 'A'}, {}],
},
{
@@ -172,11 +175,6 @@ define([
expect(graph.legend.show).to.be(true);
});
- it('update grid options', function() {
- expect(graph.grid.leftMin).to.be(1);
- expect(graph.grid.leftMax).to.be(10);
- });
-
it('move aliasYAxis to series override', function() {
expect(graph.seriesOverrides[0].alias).to.be("test");
expect(graph.seriesOverrides[0].yaxis).to.be(2);
@@ -193,8 +191,24 @@ define([
expect(table.styles[1].thresholds[1]).to.be("300");
});
+ it('graph grid to yaxes options', function() {
+ expect(graph.yaxes[0].min).to.be(1);
+ expect(graph.yaxes[0].max).to.be(10);
+ expect(graph.yaxes[0].format).to.be('kbyte');
+ expect(graph.yaxes[0].label).to.be('left label');
+ expect(graph.yaxes[0].logBase).to.be(1);
+ expect(graph.yaxes[1].min).to.be(5);
+ expect(graph.yaxes[1].max).to.be(15);
+ expect(graph.yaxes[1].format).to.be('ms');
+ expect(graph.yaxes[1].logBase).to.be(2);
+
+ expect(graph.grid.rightMax).to.be(undefined);
+ expect(graph.grid.rightLogBase).to.be(undefined);
+ expect(graph.y_formats).to.be(undefined);
+ });
+
it('dashboard schema version should be set to latest', function() {
- expect(model.schemaVersion).to.be(11);
+ expect(model.schemaVersion).to.be(12);
});
});
@@ -248,6 +262,8 @@ define([
rows: [{
panels: [{
type: 'graph',
+ grid: {},
+ yaxes: [{}, {}],
targets: [{
"alias": "$tag_datacenter $tag_source $col",
"column": "value",