fix rate special function when using group by

This commit is contained in:
Sven Klemm 2018-07-15 15:14:12 +02:00
parent c3c20ef2e2
commit 6e824e81bf
4 changed files with 29 additions and 25 deletions

View File

@ -2,7 +2,7 @@ import _ from 'lodash';
import $ from 'jquery';
import coreModule from 'app/core/core_module';
var template = `
let template = `
<div class="dropdown cascade-open">
<a ng-click="showActionsMenu()" class="query-part-name pointer dropdown-toggle" data-toggle="dropdown">{{part.label}}</a>
<span>{{part.def.wrapOpen}}</span><span class="query-part-parameters"></span><span>{{part.def.wrapClose}}</span>
@ -15,7 +15,7 @@ var template = `
/** @ngInject */
export function sqlPartEditorDirective($compile, templateSrv) {
var paramTemplate = '<input type="text" class="hide input-mini"></input>';
let paramTemplate = '<input type="text" class="hide input-mini"></input>';
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) {
$('<span>' + partDef.separator + '</span>').appendTo($paramsContainer);
}
var paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]);
var $paramLink = $('<a class="graphite-func-param-link pointer">' + paramValue + '</a>');
var $input = $(paramTemplate);
let paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]);
let $paramLink = $('<a class="graphite-func-param-link pointer">' + paramValue + '</a>');
let $input = $(paramTemplate);
$paramLink.appendTo($paramsContainer);
$input.appendTo($paramsContainer);

View File

@ -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,

View File

@ -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)';

View File

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