mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
integrated parser into graphite target editor
This commit is contained in:
parent
e19d3a531c
commit
042e2a208d
@ -2,9 +2,10 @@ define([
|
|||||||
'angular',
|
'angular',
|
||||||
'underscore',
|
'underscore',
|
||||||
'config',
|
'config',
|
||||||
'/app/services/graphite/functions.js'
|
'../services/graphite/functions',
|
||||||
|
'../services/graphite/parser'
|
||||||
],
|
],
|
||||||
function (angular, _, config, graphiteFunctions) {
|
function (angular, _, config, graphiteFunctions, Parser) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var module = angular.module('kibana.controllers');
|
var module = angular.module('kibana.controllers');
|
||||||
@ -12,17 +13,50 @@ function (angular, _, config, graphiteFunctions) {
|
|||||||
module.controller('GraphiteTargetCtrl', function($scope, $http) {
|
module.controller('GraphiteTargetCtrl', function($scope, $http) {
|
||||||
|
|
||||||
$scope.init = function() {
|
$scope.init = function() {
|
||||||
$scope.segments = _.map($scope.target.target.split('.'), function (segmentStr) {
|
|
||||||
return {
|
|
||||||
val: segmentStr,
|
|
||||||
html: segmentStr === '*' ? '<i class="icon-asterisk"><i>' : segmentStr
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
$scope.funcDefs = graphiteFunctions;
|
|
||||||
$scope.functions = [];
|
$scope.functions = [];
|
||||||
|
$scope.segments = [];
|
||||||
|
$scope.funcDefs = graphiteFunctions;
|
||||||
|
|
||||||
|
var parser = new Parser($scope.target.target);
|
||||||
|
var astNode = parser.getAst();
|
||||||
|
console.log('GraphiteTargetCtrl:init -> target', $scope.target.target);
|
||||||
|
console.log('GraphiteTargetCtrl:init -> ast', astNode);
|
||||||
|
parseTargetExpression(astNode);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function parseTargetExpression(astNode, func, index) {
|
||||||
|
if (astNode === null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (astNode.type === 'function') {
|
||||||
|
var innerFunc = {};
|
||||||
|
innerFunc.def = _.findWhere($scope.funcDefs, { name: astNode.name })
|
||||||
|
innerFunc.params = innerFunc.def.defaultParams;
|
||||||
|
|
||||||
|
_.each(astNode.params, function(param, index) {
|
||||||
|
parseTargetExpression(param, innerFunc, index);
|
||||||
|
});
|
||||||
|
|
||||||
|
innerFunc.text = getFuncText(innerFunc.def, innerFunc.params);
|
||||||
|
$scope.functions.push(innerFunc);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (astNode.type === 'number' || astNode.type === 'string') {
|
||||||
|
func.params[index - 1] = astNode.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (astNode.type === 'metric') {
|
||||||
|
$scope.segments = _.map(astNode.segments, function(segment) {
|
||||||
|
return {
|
||||||
|
val: segment.value,
|
||||||
|
html: segment.value === '*' ? '<i class="icon-asterisk"><i>' : segment.value
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getSegmentPathUpTo(index) {
|
function getSegmentPathUpTo(index) {
|
||||||
var arr = $scope.segments.slice(0, index);
|
var arr = $scope.segments.slice(0, index);
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@
|
|||||||
style="width: 110px"
|
style="width: 110px"
|
||||||
ng-change="functionParamsChanged(func)"
|
ng-change="functionParamsChanged(func)"
|
||||||
ng-model="func.params[$index]"
|
ng-model="func.params[$index]"
|
||||||
ng-options="f for f in ['sumSeries', 'avgSeries']">
|
ng-options="f for f in ['sum', 'avg']">
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -26,7 +26,7 @@ function () {
|
|||||||
type: "function",
|
type: "function",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
defaultParams: [3, "sumSeries"]
|
defaultParams: [3, "sum"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "alias",
|
name: "alias",
|
||||||
|
@ -117,7 +117,7 @@ define([
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
type: 'number',
|
type: 'number',
|
||||||
value: this.tokens[this.index-1].value
|
value: parseInt(this.tokens[this.index-1].value)
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user