فهرست منبع

Merge branch 'day_rounding' of https://github.com/ctide/grafana into ctide-day_rounding2

Torkel Ödegaard 8 سال پیش
والد
کامیت
42a0e9ebdf

+ 6 - 2
public/app/core/utils/datemath.ts

@@ -5,7 +5,7 @@ import moment from 'moment';
 
 var units = ['y', 'M', 'w', 'd', 'h', 'm', 's'];
 
-export function parse(text, roundUp?) {
+export function parse(text, roundUp?, timezone?) {
   if (!text) { return undefined; }
   if (moment.isMoment(text)) { return text; }
   if (_.isDate(text)) { return moment(text); }
@@ -16,7 +16,11 @@ export function parse(text, roundUp?) {
   var parseString;
 
   if (text.substring(0, 3) === 'now') {
-    time = moment();
+    if (timezone === 'utc') {
+      time = moment.utc();
+    } else {
+      time = moment();
+    }
     mathString = text.substring('now'.length);
   } else {
     index = text.indexOf('||');

+ 3 - 2
public/app/features/dashboard/time_srv.ts

@@ -195,10 +195,11 @@ class TimeSrv {
       from: moment.isMoment(this.time.from) ? moment(this.time.from) : this.time.from,
       to: moment.isMoment(this.time.to) ? moment(this.time.to) : this.time.to,
     };
+    var timezone = this.dashboard && this.dashboard.getTimezone ? this.dashboard.getTimezone() : 'local';
 
     return {
-      from: dateMath.parse(raw.from, false),
-      to: dateMath.parse(raw.to, true),
+      from: dateMath.parse(raw.from, false, timezone),
+      to: dateMath.parse(raw.to, true, timezone),
       raw: raw
     };
   }

+ 3 - 0
public/app/features/panel/metrics_panel_ctrl.ts

@@ -217,7 +217,10 @@ class MetricsPanelCtrl extends PanelCtrl {
       "__interval_ms":  {text: this.intervalMs, value: this.intervalMs},
     });
 
+    var timezone = this.dashboard.getTimezone ? this.dashboard.getTimezone() : 'local';
+
     var metricsQuery = {
+      timezone: timezone,
       panelId: this.panel.id,
       range: this.range,
       rangeRaw: this.range.raw,

+ 8 - 0
public/test/core/utils/datemath_specs.ts

@@ -46,6 +46,14 @@ describe("DateMath", () => {
     expect(startOfDay).to.be(expected.getTime());
   });
 
+  it("now/d on a utc dashboard should be start of the current day in UTC time", () => {
+    var today = new Date();
+    var expected = new Date(Date.UTC(today.getFullYear(), today.getMonth(), today.getDate(), 0, 0, 0, 0));
+
+    var startOfDay = dateMath.parse('now/d', false, 'utc').valueOf();
+    expect(startOfDay).to.be(expected.getTime());
+  });
+
   describe('subtraction', () => {
     var now;
     var anchored;