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

pull/144/head
Torkel Ödegaard 11 years ago
parent a54f05e287
commit ef69d692ef
  1. 1
      src/app/services/all.js
  2. 8
      src/app/services/datasourceSrv.js
  3. 268
      src/app/services/graphite/graphiteDatasource.js
  4. 2
      src/css/bootstrap.dark.min.css
  5. 2
      src/css/bootstrap.light.min.css
  6. 7
      src/css/less/grafana.less

@ -7,5 +7,6 @@ define([
'./datasourceSrv', './datasourceSrv',
'./keyboardManager', './keyboardManager',
'./annotationsSrv', './annotationsSrv',
'./graphite/graphiteDatasource',
], ],
function () {}); function () {});

@ -1,15 +1,15 @@
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([
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; });
}); });

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -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;
} }

Loading…
Cancel
Save