diff --git a/public/app/core/components/sql_part/sql_part_editor.ts b/public/app/core/components/sql_part/sql_part_editor.ts
index 1b0210af1e7..f272a6d7254 100644
--- a/public/app/core/components/sql_part/sql_part_editor.ts
+++ b/public/app/core/components/sql_part/sql_part_editor.ts
@@ -2,7 +2,7 @@ import _ from 'lodash';
import $ from 'jquery';
import coreModule from 'app/core/core_module';
-var template = `
+let template = `
{{part.label}}
{{part.def.wrapOpen}}{{part.def.wrapClose}}
@@ -15,7 +15,7 @@ var template = `
/** @ngInject */
export function sqlPartEditorDirective($compile, templateSrv) {
- var paramTemplate = '
';
+ let paramTemplate = '
';
return {
restrict: 'E',
@@ -26,18 +26,18 @@ export function sqlPartEditorDirective($compile, templateSrv) {
debounce: '@',
},
link: function postLink($scope, elem) {
- var part = $scope.part;
- var partDef = part.def;
- var $paramsContainer = elem.find('.query-part-parameters');
- var debounceLookup = $scope.debounce;
- var cancelBlur = null;
+ let part = $scope.part;
+ let partDef = part.def;
+ let $paramsContainer = elem.find('.query-part-parameters');
+ let debounceLookup = $scope.debounce;
+ let cancelBlur = null;
$scope.partActions = [];
function clickFuncParam(paramIndex) {
/*jshint validthis:true */
- var $link = $(this);
- var $input = $link.next();
+ let $link = $(this);
+ let $input = $link.next();
$input.val(part.params[paramIndex]);
$input.css('width', $link.width() + 16 + 'px');
@@ -47,7 +47,7 @@ export function sqlPartEditorDirective($compile, templateSrv) {
$input.focus();
$input.select();
- var typeahead = $input.data('typeahead');
+ let typeahead = $input.data('typeahead');
if (typeahead) {
$input.val('');
typeahead.lookup();
@@ -62,8 +62,8 @@ export function sqlPartEditorDirective($compile, templateSrv) {
function switchToLink($input, paramIndex) {
/*jshint validthis:true */
- var $link = $input.prev();
- var newValue = $input.val();
+ let $link = $input.prev();
+ let newValue = $input.val();
if (newValue !== '' || part.def.params[paramIndex].optional) {
$link.html(templateSrv.highlightVariablesAsHtml(newValue));
@@ -95,9 +95,9 @@ export function sqlPartEditorDirective($compile, templateSrv) {
return;
}
- var typeaheadSource = function(query, callback) {
+ let typeaheadSource = function(query, callback) {
if (param.options) {
- var options = param.options;
+ let options = param.options;
if (param.type === 'int') {
options = _.map(options, function(val) {
return val.toString();
@@ -108,7 +108,7 @@ export function sqlPartEditorDirective($compile, templateSrv) {
$scope.$apply(function() {
$scope.handleEvent({ $event: { name: 'get-param-options', param: param } }).then(function(result) {
- var dynamicOptions = _.map(result, function(op) {
+ let dynamicOptions = _.map(result, function(op) {
return op.value;
});
@@ -138,10 +138,10 @@ export function sqlPartEditorDirective($compile, templateSrv) {
},
});
- var typeahead = $input.data('typeahead');
+ let typeahead = $input.data('typeahead');
typeahead.lookup = function() {
this.query = this.$element.val() || '';
- var items = this.source(this.query, $.proxy(this.process, this));
+ let items = this.source(this.query, $.proxy(this.process, this));
return items ? this.process(items) : items;
};
@@ -170,9 +170,9 @@ export function sqlPartEditorDirective($compile, templateSrv) {
$('
' + partDef.separator + '').appendTo($paramsContainer);
}
- var paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]);
- var $paramLink = $('
' + paramValue + '');
- var $input = $(paramTemplate);
+ let paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]);
+ let $paramLink = $('
' + paramValue + '');
+ let $input = $(paramTemplate);
$paramLink.appendTo($paramsContainer);
$input.appendTo($paramsContainer);
diff --git a/public/app/plugins/datasource/postgres/datasource.ts b/public/app/plugins/datasource/postgres/datasource.ts
index 1324dbadebf..01c6154865a 100644
--- a/public/app/plugins/datasource/postgres/datasource.ts
+++ b/public/app/plugins/datasource/postgres/datasource.ts
@@ -27,17 +27,17 @@ export class PostgresDatasource {
return value;
}
- var quotedValues = _.map(value, function(val) {
+ let quotedValues = _.map(value, function(val) {
return "'" + val + "'";
});
return quotedValues.join(',');
}
query(options) {
- var queries = _.filter(options.targets, target => {
+ let queries = _.filter(options.targets, target => {
return target.hide !== true;
}).map(target => {
- var queryModel = new PostgresQuery(target, this.templateSrv, options.scopedVars);
+ let queryModel = new PostgresQuery(target, this.templateSrv, options.scopedVars);
return {
refId: target.refId,
diff --git a/public/app/plugins/datasource/postgres/postgres_query.ts b/public/app/plugins/datasource/postgres/postgres_query.ts
index 5b0bd539abe..54ce0a96e26 100644
--- a/public/app/plugins/datasource/postgres/postgres_query.ts
+++ b/public/app/plugins/datasource/postgres/postgres_query.ts
@@ -154,6 +154,10 @@ export default class PostgresQuery {
break;
case 'rate':
let timeColumn = this.target.timeColumn;
+ if (aggregate) {
+ timeColumn = 'min(' + timeColumn + ')';
+ }
+
let curr = query;
let prev = 'lag(' + curr + ') OVER (' + over + ')';
query = '(CASE WHEN ' + curr + ' >= ' + prev + ' THEN ' + curr + ' - ' + prev + ' ELSE ' + curr + ' END)';
diff --git a/public/app/plugins/datasource/postgres/sql_part.ts b/public/app/plugins/datasource/postgres/sql_part.ts
index 6413587f4d9..b0265a645ed 100644
--- a/public/app/plugins/datasource/postgres/sql_part.ts
+++ b/public/app/plugins/datasource/postgres/sql_part.ts
@@ -1,9 +1,9 @@
import { SqlPartDef, SqlPart } from 'app/core/components/sql_part/sql_part';
-var index = [];
+let index = [];
function createPart(part): any {
- var def = index[part.type];
+ let def = index[part.type];
if (!def) {
return null;
}