mirror of
https://github.com/grafana/grafana.git
synced 2024-11-26 02:40:26 -06:00
Merge pull request #3866 from daniellee/issue3852
fix(graph): narrow panels shows correct date format on x-axis
This commit is contained in:
commit
a1b5aae958
@ -296,7 +296,7 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
|
|||||||
max: max,
|
max: max,
|
||||||
label: "Datetime",
|
label: "Datetime",
|
||||||
ticks: ticks,
|
ticks: ticks,
|
||||||
timeformat: time_format(scope.interval, ticks, min, max),
|
timeformat: time_format(ticks, min, max),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -436,20 +436,23 @@ function (angular, $, moment, _, kbn, GraphTooltip) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function time_format(interval, ticks, min, max) {
|
function time_format(ticks, min, max) {
|
||||||
if (min && max && ticks) {
|
if (min && max && ticks) {
|
||||||
var secPerTick = ((max - min) / ticks) / 1000;
|
var range = max - min;
|
||||||
|
var secPerTick = (range/ticks) / 1000;
|
||||||
|
var oneDay = 86400000;
|
||||||
|
var oneYear = 31536000000;
|
||||||
|
|
||||||
if (secPerTick <= 45) {
|
if (secPerTick <= 45) {
|
||||||
return "%H:%M:%S";
|
return "%H:%M:%S";
|
||||||
}
|
}
|
||||||
if (secPerTick <= 7200) {
|
if (secPerTick <= 7200 || range <= oneDay) {
|
||||||
return "%H:%M";
|
return "%H:%M";
|
||||||
}
|
}
|
||||||
if (secPerTick <= 80000) {
|
if (secPerTick <= 80000) {
|
||||||
return "%m/%d %H:%M";
|
return "%m/%d %H:%M";
|
||||||
}
|
}
|
||||||
if (secPerTick <= 2419200) {
|
if (secPerTick <= 2419200 || range <= oneYear) {
|
||||||
return "%m/%d";
|
return "%m/%d";
|
||||||
}
|
}
|
||||||
return "%Y-%m";
|
return "%Y-%m";
|
||||||
|
@ -7,12 +7,13 @@ import angular from 'angular';
|
|||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
import helpers from '../../../../../test/specs/helpers';
|
import helpers from '../../../../../test/specs/helpers';
|
||||||
import TimeSeries from '../../../../core/time_series2';
|
import TimeSeries from '../../../../core/time_series2';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
describe('grafanaGraph', function() {
|
describe('grafanaGraph', function() {
|
||||||
|
|
||||||
beforeEach(angularMocks.module('grafana.directives'));
|
beforeEach(angularMocks.module('grafana.directives'));
|
||||||
|
|
||||||
function graphScenario(desc, func) {
|
function graphScenario(desc, func, elementWidth = 500) {
|
||||||
describe(desc, function() {
|
describe(desc, function() {
|
||||||
var ctx: any = {};
|
var ctx: any = {};
|
||||||
|
|
||||||
@ -24,7 +25,7 @@ describe('grafanaGraph', function() {
|
|||||||
|
|
||||||
beforeEach(angularMocks.inject(function($rootScope, $compile) {
|
beforeEach(angularMocks.inject(function($rootScope, $compile) {
|
||||||
var scope = $rootScope.$new();
|
var scope = $rootScope.$new();
|
||||||
var element = angular.element("<div style='width:500px' grafana-graph><div>");
|
var element = angular.element("<div style='width:" + elementWidth + "px' grafana-graph><div>");
|
||||||
|
|
||||||
scope.height = '200px';
|
scope.height = '200px';
|
||||||
scope.panel = {
|
scope.panel = {
|
||||||
@ -43,8 +44,8 @@ describe('grafanaGraph', function() {
|
|||||||
scope.hiddenSeries = {};
|
scope.hiddenSeries = {};
|
||||||
scope.dashboard = { timezone: 'browser' };
|
scope.dashboard = { timezone: 'browser' };
|
||||||
scope.range = {
|
scope.range = {
|
||||||
from: new Date('2014-08-09 10:00:00'),
|
from: moment([2015, 1, 1, 10]),
|
||||||
to: new Date('2014-09-09 13:00:00')
|
to: moment([2015, 1, 1, 22])
|
||||||
};
|
};
|
||||||
ctx.data = [];
|
ctx.data = [];
|
||||||
ctx.data.push(new TimeSeries({
|
ctx.data.push(new TimeSeries({
|
||||||
@ -227,4 +228,31 @@ describe('grafanaGraph', function() {
|
|||||||
expect(axis.tickFormatter(100, axis)).to.be("100%");
|
expect(axis.tickFormatter(100, axis)).to.be("100%");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
graphScenario('when panel too narrow to show x-axis dates in same granularity as wide panels', function(ctx) {
|
||||||
|
describe('and the range is less than 24 hours', function() {
|
||||||
|
ctx.setup(function(scope) {
|
||||||
|
scope.range.from = moment([2015, 1, 1, 10]);
|
||||||
|
scope.range.to = moment([2015, 1, 1, 22]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should format dates as hours minutes', function() {
|
||||||
|
var axis = ctx.plotOptions.xaxis;
|
||||||
|
expect(axis.timeformat).to.be('%H:%M');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('and the range is less than one year', function() {
|
||||||
|
ctx.setup(function(scope) {
|
||||||
|
scope.range.from = moment([2015, 1, 1]);
|
||||||
|
scope.range.to = moment([2015, 11, 20]);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should format dates as month days', function() {
|
||||||
|
var axis = ctx.plotOptions.xaxis;
|
||||||
|
expect(axis.timeformat).to.be('%m/%d');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
}, 10);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user