From 37a73b6b35e44189d14a32d6b19a3e5973fb7349 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Mon, 11 Feb 2019 12:04:27 +0100 Subject: [PATCH 1/3] make sure graphite takes dashboard timezone into consideration --- .../plugins/datasource/graphite/datasource.ts | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/public/app/plugins/datasource/graphite/datasource.ts b/public/app/plugins/datasource/graphite/datasource.ts index a89c0ea0034..8a720cb3f35 100644 --- a/public/app/plugins/datasource/graphite/datasource.ts +++ b/public/app/plugins/datasource/graphite/datasource.ts @@ -31,8 +31,8 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, this.query = function(options) { const graphOptions = { - from: this.translateTime(options.rangeRaw.from, false), - until: this.translateTime(options.rangeRaw.to, true), + from: this.translateTime(options.rangeRaw.from, false, options.timezone), + until: this.translateTime(options.rangeRaw.to, true, options.timezone), targets: options.targets, format: options.format, cacheTimeout: options.cacheTimeout || this.cacheTimeout, @@ -165,9 +165,9 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, method: 'GET', url: '/events/get_data?from=' + - this.translateTime(options.range.from, false) + + this.translateTime(options.range.from, false, options.timezone) + '&until=' + - this.translateTime(options.range.to, true) + + this.translateTime(options.range.to, true, options.timezone) + tags, }); } catch (err) { @@ -179,7 +179,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, return templateSrv.variableExists(target.target); }; - this.translateTime = (date, roundUp) => { + this.translateTime = (date, roundUp, timezone) => { if (_.isString(date)) { if (date === 'now') { return 'now'; @@ -189,7 +189,7 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, date = date.replace('M', 'mon'); return date; } - date = dateMath.parse(date, roundUp); + date = dateMath.parse(date, roundUp, timezone); } // graphite' s from filter is exclusive @@ -255,8 +255,8 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, }; if (options.range) { - httpOptions.params.from = this.translateTime(options.range.from, false); - httpOptions.params.until = this.translateTime(options.range.to, true); + httpOptions.params.from = this.translateTime(options.range.from, false, options.timezone); + httpOptions.params.until = this.translateTime(options.range.to, true, options.timezone); } return this.doGraphiteRequest(httpOptions).then(results => { @@ -280,8 +280,8 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, }; if (options.range) { - httpOptions.params.from = this.translateTime(options.range.from, false); - httpOptions.params.until = this.translateTime(options.range.to, true); + httpOptions.params.from = this.translateTime(options.range.from, false, options.timezone); + httpOptions.params.until = this.translateTime(options.range.to, true, options.timezone); } return this.doGraphiteRequest(httpOptions).then(results => { @@ -305,8 +305,8 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, }; if (options.range) { - httpOptions.params.from = this.translateTime(options.range.from, false); - httpOptions.params.until = this.translateTime(options.range.to, true); + httpOptions.params.from = this.translateTime(options.range.from, false, options.timezone); + httpOptions.params.until = this.translateTime(options.range.to, true, options.timezone); } return this.doGraphiteRequest(httpOptions).then(results => { @@ -343,8 +343,8 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, httpOptions.params.limit = options.limit; } if (options.range) { - httpOptions.params.from = this.translateTime(options.range.from, false); - httpOptions.params.until = this.translateTime(options.range.to, true); + httpOptions.params.from = this.translateTime(options.range.from, false, options.timezone); + httpOptions.params.until = this.translateTime(options.range.to, true, options.timezone); } return this.doGraphiteRequest(httpOptions).then(results => { @@ -379,8 +379,8 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, httpOptions.params.limit = options.limit; } if (options.range) { - httpOptions.params.from = this.translateTime(options.range.from, false); - httpOptions.params.until = this.translateTime(options.range.to, true); + httpOptions.params.from = this.translateTime(options.range.from, false, options.timezone); + httpOptions.params.until = this.translateTime(options.range.to, true, options.timezone); } return this.doGraphiteRequest(httpOptions).then(results => { From 519dfd0899570999eb656063eacc678dfa9587a1 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Mon, 11 Feb 2019 13:11:56 +0100 Subject: [PATCH 2/3] make sure influx takes dashboard timezone into consideration --- public/app/plugins/datasource/influxdb/datasource.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/influxdb/datasource.ts b/public/app/plugins/datasource/influxdb/datasource.ts index 8f1904dbc55..4e4c3feaebd 100644 --- a/public/app/plugins/datasource/influxdb/datasource.ts +++ b/public/app/plugins/datasource/influxdb/datasource.ts @@ -127,7 +127,7 @@ export default class InfluxDatasource { }); } - const timeFilter = this.getTimeFilter({ rangeRaw: options.rangeRaw }); + const timeFilter = this.getTimeFilter({ rangeRaw: options.rangeRaw, timezone: options.timezone }); let query = options.annotation.query.replace('$timeFilter', timeFilter); query = this.templateSrv.replace(query, null, 'regex'); @@ -184,7 +184,7 @@ export default class InfluxDatasource { } if (options && options.range) { - const timeFilter = this.getTimeFilter({ rangeRaw: options.range }); + const timeFilter = this.getTimeFilter({ rangeRaw: options.range, timezone: options.timezone }); query = query.replace('$timeFilter', timeFilter); } @@ -291,8 +291,8 @@ export default class InfluxDatasource { } getTimeFilter(options) { - const from = this.getInfluxTime(options.rangeRaw.from, false); - const until = this.getInfluxTime(options.rangeRaw.to, true); + const from = this.getInfluxTime(options.rangeRaw.from, false, options.timezone); + const until = this.getInfluxTime(options.rangeRaw.to, true, options.timezone); const fromIsAbsolute = from[from.length - 1] === 'ms'; if (until === 'now()' && !fromIsAbsolute) { @@ -302,7 +302,7 @@ export default class InfluxDatasource { return 'time >= ' + from + ' and time <= ' + until; } - getInfluxTime(date, roundUp) { + getInfluxTime(date, roundUp, timezone) { if (_.isString(date)) { if (date === 'now') { return 'now()'; @@ -314,7 +314,7 @@ export default class InfluxDatasource { const unit = parts[2]; return 'now() - ' + amount + unit; } - date = dateMath.parse(date, roundUp); + date = dateMath.parse(date, roundUp, timezone); } return date.valueOf() + 'ms'; From b9c36e5301cc80893c808e349cdcb5e97a66e156 Mon Sep 17 00:00:00 2001 From: Marcus Efraimsson Date: Mon, 11 Feb 2019 13:13:38 +0100 Subject: [PATCH 3/3] make sure opentsdb takes dashboard timezone into consideration --- public/app/plugins/datasource/opentsdb/datasource.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/public/app/plugins/datasource/opentsdb/datasource.ts b/public/app/plugins/datasource/opentsdb/datasource.ts index 772f2aa7ff9..bab86a04765 100644 --- a/public/app/plugins/datasource/opentsdb/datasource.ts +++ b/public/app/plugins/datasource/opentsdb/datasource.ts @@ -33,8 +33,8 @@ export default class OpenTsDatasource { // Called once per panel (graph) query(options) { - const start = this.convertToTSDBTime(options.rangeRaw.from, false); - const end = this.convertToTSDBTime(options.rangeRaw.to, true); + const start = this.convertToTSDBTime(options.rangeRaw.from, false, options.timezone); + const end = this.convertToTSDBTime(options.rangeRaw.to, true, options.timezone); const qs = []; _.each(options.targets, target => { @@ -86,8 +86,8 @@ export default class OpenTsDatasource { } annotationQuery(options) { - const start = this.convertToTSDBTime(options.rangeRaw.from, false); - const end = this.convertToTSDBTime(options.rangeRaw.to, true); + const start = this.convertToTSDBTime(options.rangeRaw.from, false, options.timezone); + const end = this.convertToTSDBTime(options.rangeRaw.to, true, options.timezone); const qs = []; const eventList = []; @@ -484,12 +484,12 @@ export default class OpenTsDatasource { }); } - convertToTSDBTime(date, roundUp) { + convertToTSDBTime(date, roundUp, timezone) { if (date === 'now') { return null; } - date = dateMath.parse(date, roundUp); + date = dateMath.parse(date, roundUp, timezone); return date.valueOf(); } }