mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
fix rate special function when using group by
This commit is contained in:
parent
c3c20ef2e2
commit
6e824e81bf
@ -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);
|
||||
|
@ -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,
|
||||
|
@ -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)';
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user