Commit ef69d692 by Torkel Ödegaard

Time is now sent in utc when time correction is set to utc #143

parent a54f05e2
...@@ -7,5 +7,6 @@ define([ ...@@ -7,5 +7,6 @@ define([
'./datasourceSrv', './datasourceSrv',
'./keyboardManager', './keyboardManager',
'./annotationsSrv', './annotationsSrv',
'./graphite/graphiteDatasource',
], ],
function () {}); function () {});
\ No newline at end of file
define([ define([
'angular', 'angular',
'underscore', 'underscore',
'config', 'config'
'./graphite/graphiteDatasource'
], ],
function (angular, _, config, GraphiteDatasource) { function (angular, _, config) {
'use strict'; 'use strict';
var module = angular.module('kibana.services'); var module = angular.module('kibana.services');
module.service('datasourceSrv', function($q, filterSrv, $http) { module.service('datasourceSrv', function($q, filterSrv, $http, GraphiteDatasource) {
var defaultDatasource = _.findWhere(_.values(config.datasources), { default: true } ); var defaultDatasource = _.findWhere(_.values(config.datasources), { default: true } );
this.default = new GraphiteDatasource(defaultDatasource, $q, filterSrv, $http); this.default = new GraphiteDatasource(defaultDatasource, $q, filterSrv, $http);
......
...@@ -9,158 +9,168 @@ define([ ...@@ -9,158 +9,168 @@ define([
function (angular, _, $, config, kbn, moment) { function (angular, _, $, config, kbn, moment) {
'use strict'; 'use strict';
function GraphiteDatasource(datasource, $q, filterSrv, $http) { var module = angular.module('kibana.services');
this.url = datasource.url;
this.type = 'graphite';
this.basicAuth = datasource.basicAuth;
this.$q = $q;
this.filterSrv = filterSrv;
this.$http = $http;
}
GraphiteDatasource.prototype.query = function(options) {
try {
var graphOptions = {
from: this.translateTime(options.range.from),
until: this.translateTime(options.range.to),
targets: options.targets,
format: options.format,
maxDataPoints: options.maxDataPoints,
};
var params = this.buildGraphiteParams(graphOptions);
if (options.format === 'png') {
return this.$q.when(this.url + '/render' + '?' + params.join('&'));
}
return this.doGraphiteRequest({ module.factory('GraphiteDatasource', function(dashboard, $q, filterSrv, $http) {
method: 'POST',
url: '/render', function GraphiteDatasource(datasource, $q, filterSrv, $http) {
data: params.join('&'), this.url = datasource.url;
headers: { this.type = 'graphite';
'Content-Type': 'application/x-www-form-urlencoded', this.basicAuth = datasource.basicAuth;
} this.$q = $q;
}); this.filterSrv = filterSrv;
} this.$http = $http;
catch(err) {
return this.$q.reject(err);
} }
};
GraphiteDatasource.prototype.events = function(options) { GraphiteDatasource.prototype.query = function(options) {
try { try {
var tags = ''; var graphOptions = {
if (options.tags) { from: this.translateTime(options.range.from),
tags = '&tags=' + options.tags; until: this.translateTime(options.range.to),
targets: options.targets,
format: options.format,
maxDataPoints: options.maxDataPoints,
};
var params = this.buildGraphiteParams(graphOptions);
if (options.format === 'png') {
return this.$q.when(this.url + '/render' + '?' + params.join('&'));
}
return this.doGraphiteRequest({
method: 'POST',
url: '/render',
data: params.join('&'),
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
});
}
catch(err) {
return this.$q.reject(err);
} }
};
return this.doGraphiteRequest({ GraphiteDatasource.prototype.events = function(options) {
method: 'GET', try {
url: '/events/get_data?from=' + this.translateTime(options.range.from) + '&until=' + this.translateTime(options.range.to) + tags, var tags = '';
}); if (options.tags) {
} tags = '&tags=' + options.tags;
catch(err) { }
return this.$q.reject(err);
}
};
GraphiteDatasource.prototype.translateTime = function(date) { return this.doGraphiteRequest({
if (_.isString(date)) { method: 'GET',
if (date === 'now') { url: '/events/get_data?from=' + this.translateTime(options.range.from) + '&until=' + this.translateTime(options.range.to) + tags,
return 'now'; });
} }
else if (date.indexOf('now') >= 0) { catch(err) {
date = date.substring(3); return this.$q.reject(err);
date = date.replace('m', 'min');
date = date.replace('M', 'mon');
return date;
} }
};
date = kbn.parseDate(date); GraphiteDatasource.prototype.translateTime = function(date) {
} if (_.isString(date)) {
if (date === 'now') {
return 'now';
}
else if (date.indexOf('now') >= 0) {
date = date.substring(3);
date = date.replace('m', 'min');
date = date.replace('M', 'mon');
return date;
}
date = moment.utc(date).local(); date = kbn.parseDate(date);
}
if (config.timezoneOffset) { date = moment.utc(date);
date = date.zone(config.timezoneOffset);
} if (dashboard.current.timezone === 'browser') {
date = date.local();
}
return date.format('HH:mm_YYYYMMDD'); if (config.timezoneOffset) {
}; date = date.zone(config.timezoneOffset);
}
GraphiteDatasource.prototype.metricFindQuery = function(query) { return date.format('HH:mm_YYYYMMDD');
var interpolated; };
try {
interpolated = this.filterSrv.applyFilterToTarget(query);
}
catch(err) {
return this.$q.reject(err);
}
return this.doGraphiteRequest({method: 'GET', url: '/metrics/find/?query=' + interpolated }) GraphiteDatasource.prototype.metricFindQuery = function(query) {
.then(function(results) { var interpolated;
return _.map(results.data, function(metric) { try {
return { interpolated = this.filterSrv.applyFilterToTarget(query);
text: metric.text, }
expandable: metric.expandable ? true : false catch(err) {
}; return this.$q.reject(err);
}
return this.doGraphiteRequest({method: 'GET', url: '/metrics/find/?query=' + interpolated })
.then(function(results) {
return _.map(results.data, function(metric) {
return {
text: metric.text,
expandable: metric.expandable ? true : false
};
});
}); });
}); };
};
GraphiteDatasource.prototype.listDashboards = function(query) {
return this.doGraphiteRequest({ method: 'GET', url: '/dashboard/find/', params: {query: query || ''} })
.then(function(results) {
return results.data.dashboards;
});
};
GraphiteDatasource.prototype.loadDashboard = function(dashName) {
return this.doGraphiteRequest({method: 'GET', url: '/dashboard/load/' + encodeURIComponent(dashName) });
};
GraphiteDatasource.prototype.doGraphiteRequest = function(options) {
if (this.basicAuth) {
options.withCredentials = true;
options.headers = options.headers || {};
options.headers.Authorization = 'Basic ' + config.graphiteBasicAuth;
}
options.url = this.url + options.url; GraphiteDatasource.prototype.listDashboards = function(query) {
return this.doGraphiteRequest({ method: 'GET', url: '/dashboard/find/', params: {query: query || ''} })
.then(function(results) {
return results.data.dashboards;
});
};
return this.$http(options); GraphiteDatasource.prototype.loadDashboard = function(dashName) {
}; return this.doGraphiteRequest({method: 'GET', url: '/dashboard/load/' + encodeURIComponent(dashName) });
};
GraphiteDatasource.prototype.buildGraphiteParams = function(options) { GraphiteDatasource.prototype.doGraphiteRequest = function(options) {
var clean_options = []; if (this.basicAuth) {
var graphite_options = ['target', 'targets', 'from', 'until', 'rawData', 'format', 'maxDataPoints']; options.withCredentials = true;
options.headers = options.headers || {};
options.headers.Authorization = 'Basic ' + config.graphiteBasicAuth;
}
if (options.format !== 'png') { options.url = this.url + options.url;
options['format'] = 'json';
}
_.each(options, function (value, key) { return this.$http(options);
if ($.inArray(key, graphite_options) === -1) { };
return;
}
if (key === "targets") { GraphiteDatasource.prototype.buildGraphiteParams = function(options) {
_.each(value, function (value) { var clean_options = [];
if (!value.hide) { var graphite_options = ['target', 'targets', 'from', 'until', 'rawData', 'format', 'maxDataPoints'];
var targetValue = this.filterSrv.applyFilterToTarget(value.target);
clean_options.push("target=" + encodeURIComponent(targetValue)); if (options.format !== 'png') {
} options['format'] = 'json';
}, this);
}
else if (value !== null) {
clean_options.push(key + "=" + encodeURIComponent(value));
} }
}, this);
return clean_options;
};
_.each(options, function (value, key) {
if ($.inArray(key, graphite_options) === -1) {
return;
}
if (key === "targets") {
_.each(value, function (value) {
if (!value.hide) {
var targetValue = this.filterSrv.applyFilterToTarget(value.target);
clean_options.push("target=" + encodeURIComponent(targetValue));
}
}, this);
}
else if (value !== null) {
clean_options.push(key + "=" + encodeURIComponent(value));
}
}, this);
return clean_options;
};
return GraphiteDatasource;
return GraphiteDatasource; });
}); });
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -156,13 +156,6 @@ ...@@ -156,13 +156,6 @@
} }
} }
.histogram-legend-dot {
display:inline-block;
height:10px;
width:10px;
border-radius:5px;
}
.histogram-legend-item { .histogram-legend-item {
display:inline-block; display:inline-block;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment