From 7cbd88f3d81f6bc853eedbc9c86cc63b3fadcd67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 25 Dec 2013 19:10:38 +0100 Subject: [PATCH] target editor is starting to work better, now switch between text edit mode and easy gui version --- src/app/controllers/graphiteTarget.js | 38 +++++++++++++++++++------- src/app/directives/kibanaPanel.js | 5 ---- src/app/panels/graphite/editor.html | 12 +++++--- src/app/panels/graphite/module.html | 2 +- src/app/panels/graphite/module.js | 9 +++--- src/css/bootstrap.dark.min.css | 2 +- src/vendor/bootstrap/less/grafana.less | 8 ++++-- 7 files changed, 47 insertions(+), 29 deletions(-) diff --git a/src/app/controllers/graphiteTarget.js b/src/app/controllers/graphiteTarget.js index 60221f555b3..6f9c8b7f50a 100644 --- a/src/app/controllers/graphiteTarget.js +++ b/src/app/controllers/graphiteTarget.js @@ -13,22 +13,32 @@ function (angular, _, config, graphiteFunctions, Parser) { module.controller('GraphiteTargetCtrl', function($scope, $http) { $scope.init = function() { + $scope.funcDefs = graphiteFunctions; + parseTarget(); + console.log('init:'); + }; + + function parseTarget() { $scope.functions = []; $scope.segments = []; - $scope.funcDefs = graphiteFunctions; $scope.showTextEditor = false; + delete $scope.parserError; + 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); + if (parser.error) { + $scope.parserError = parser.error.text + " at position: " + parser.error.pos; + $scope.showTextEditor = true; + return; + } - parseTargetExpression(astNode); + parseTargeRecursive(astNode); checkOtherSegments($scope.segments.length); - }; + } - function parseTargetExpression(astNode, func, index) { + function parseTargeRecursive(astNode, func, index) { if (astNode === null) { return null; } @@ -36,10 +46,10 @@ function (angular, _, config, graphiteFunctions, Parser) { if (astNode.type === 'function') { var innerFunc = {}; innerFunc.def = _.findWhere($scope.funcDefs, { name: astNode.name }); - innerFunc.params = innerFunc.def.defaultParams; + innerFunc.params = innerFunc.def.defaultParams.slice(0); _.each(astNode.params, function(param, index) { - parseTargetExpression(param, innerFunc, index); + parseTargeRecursive(param, innerFunc, index); }); innerFunc.text = getFuncText(innerFunc.def, innerFunc.params); @@ -168,10 +178,18 @@ function (angular, _, config, graphiteFunctions, Parser) { $scope.targetChanged(); }; + $scope.targetTextChanged = function() { + parseTarget(); + $scope.$parent.get_data(); + }; + $scope.targetChanged = function() { + if ($scope.parserError) { + return; + } + var target = getSegmentPathUpTo($scope.segments.length); target = _.reduce($scope.functions, wrapFunction, target); - console.log('target: ', target); $scope.target.target = target; $scope.$parent.get_data(); }; @@ -189,7 +207,7 @@ function (angular, _, config, graphiteFunctions, Parser) { $scope.addFunction = function(funcDef) { $scope.functions.push({ def: funcDef, - params: funcDef.defaultParams, + params: funcDef.defaultParams.slice(0), text: getFuncText(funcDef, funcDef.defaultParams) }); $scope.targetChanged(); diff --git a/src/app/directives/kibanaPanel.js b/src/app/directives/kibanaPanel.js index 505eaa6c7d0..2c4b3c9e2a8 100644 --- a/src/app/directives/kibanaPanel.js +++ b/src/app/directives/kibanaPanel.js @@ -34,11 +34,6 @@ function (angular) { '{{panel.type}}'+ '' + - '' + - ''+ - ''+ - '' + - '' + ''+ diff --git a/src/app/panels/graphite/editor.html b/src/app/panels/graphite/editor.html index ed1a7467bdb..6130cf54476 100644 --- a/src/app/panels/graphite/editor.html +++ b/src/app/panels/graphite/editor.html @@ -5,7 +5,7 @@
  • - +
  • @@ -22,19 +22,23 @@