diff --git a/src/app/controllers/graphiteTarget.js b/src/app/controllers/graphiteTarget.js index 138cea61e9e..4225dcedb17 100644 --- a/src/app/controllers/graphiteTarget.js +++ b/src/app/controllers/graphiteTarget.js @@ -2,10 +2,10 @@ define([ 'angular', 'underscore', 'config', - '../services/graphite/graphiteFuncs', + '../services/graphite/gfunc', '../services/graphite/parser' ], -function (angular, _, config, graphiteFuncs, Parser) { +function (angular, _, config, gfunc, Parser) { 'use strict'; var module = angular.module('kibana.controllers'); @@ -13,7 +13,7 @@ function (angular, _, config, graphiteFuncs, Parser) { module.controller('GraphiteTargetCtrl', function($scope, $http, filterSrv, graphiteSrv) { $scope.init = function() { - $scope.funcCategories = graphiteFuncs.getCategories(); + $scope.funcCategories = gfunc.getCategories(); parseTarget(); }; @@ -56,7 +56,7 @@ function (angular, _, config, graphiteFuncs, Parser) { switch(astNode.type) { case 'function': - var innerFunc = graphiteFuncs.createFuncInstance(astNode.name); + var innerFunc = gfunc.createFuncInstance(astNode.name); _.each(astNode.params, function(param, index) { parseTargeRecursive(param, innerFunc, index); @@ -226,7 +226,7 @@ function (angular, _, config, graphiteFuncs, Parser) { }; $scope.addFunction = function(funcDef) { - $scope.functions.push(graphiteFuncs.createFuncInstance(funcDef)); + $scope.functions.push(gfunc.createFuncInstance(funcDef)); $scope.targetChanged(); }; diff --git a/src/app/panels/column/editor.html b/src/app/panels/column/editor.html deleted file mode 100644 index b85e5f96f5a..00000000000 --- a/src/app/panels/column/editor.html +++ /dev/null @@ -1,36 +0,0 @@ -
-
-

Add Panel to Column

- - Select Type -
-
-
-
-
-
-
-

Panels

- - - - - - - - - - - - - - - - - - - -
TitleTypeHeightDeleteMoveHide
{{app.title}}{{app.type}}
-
-
-
diff --git a/src/app/panels/column/module.html b/src/app/panels/column/module.html deleted file mode 100644 index 864ec84b315..00000000000 --- a/src/app/panels/column/module.html +++ /dev/null @@ -1,16 +0,0 @@ -
- -
- -
-
- × - Oops! {{panel.error}} -
-
- -
- -
-
-
\ No newline at end of file diff --git a/src/app/panels/column/module.js b/src/app/panels/column/module.js deleted file mode 100644 index 56687633e7a..00000000000 --- a/src/app/panels/column/module.js +++ /dev/null @@ -1,115 +0,0 @@ -/** @scratch /panels/5 - * include::panels/column.asciidoc[] - */ - -/** @scratch /panels/column/0 - * == Column - * Status: *Stable* - * - * A pseudo panel that lets you add other panels to be arranged in a column with defined heights. - * While the column panel is stable, it does have many limitations, including the inability to drag - * and drop panels within its borders. It may be removed in a future release. - * - */ -define([ - 'angular', - 'app', - 'underscore', - 'config' -], -function (angular, app, _, config) { - 'use strict'; - - var module = angular.module('kibana.panels.column', []); - - app.useModule(module); - - module.controller('column', function($scope, $rootScope, $timeout) { - $scope.panelMeta = { - status : "Stable", - description : "A pseudo panel that lets you add other panels to be arranged in a column with"+ - "defined heights." - }; - - // Set and populate defaults - var _d = { - /** @scratch /panels/column/3 - * === Parameters - * - * panel:: An array of panel objects - */ - panels : [] - }; - _.defaults($scope.panel,_d); - - $scope.init = function(){ - $scope.reset_panel(); - }; - - $scope.toggle_row = function(panel) { - panel.collapse = panel.collapse ? false : true; - if (!panel.collapse) { - $timeout(function() { - $scope.send_render(); - }); - } - }; - - $scope.send_render = function() { - $scope.$broadcast('render'); - }; - - $scope.add_panel = function(panel) { - $scope.panel.panels.push(panel); - }; - - $scope.reset_panel = function(type) { - $scope.new_panel = { - loading: false, - error: false, - sizeable: false, - span: 12, - height: "150px", - editable: true, - type: type, - draggable: false - }; - }; - - }); - - module.directive('columnEdit', function($compile,$timeout) { - return { - scope : { - new_panel:"=panel", - row:"=", - config:"=", - dashboards:"=", - type:"=type" - }, - link: function(scope, elem) { - scope.$on('render', function () { - - // Make sure the digest has completed and populated the attributes - $timeout(function() { - // Create a reference to the new_panel as panel so that the existing - // editors work with our isolate scope - scope.panel = scope.new_panel; - var template = '
'; - - if(!(_.isUndefined(scope.type)) && scope.type !== "") { - template = template+'
'; - } - elem.html($compile(angular.element(template))(scope)); - }); - }); - } - }; - }); - - module.filter('withoutColumn', function() { - return function() { - return _.without(config.panel_names,'column'); - }; - }); -}); \ No newline at end of file diff --git a/src/app/panels/column/panelgeneral.html b/src/app/panels/column/panelgeneral.html deleted file mode 100644 index b952c1e0363..00000000000 --- a/src/app/panels/column/panelgeneral.html +++ /dev/null @@ -1,11 +0,0 @@ -
-
- -
-
- -
-
- -
-
\ No newline at end of file diff --git a/src/app/panels/graphite/module.js b/src/app/panels/graphite/module.js index c0abdc7e6d3..cc96b750bde 100644 --- a/src/app/panels/graphite/module.js +++ b/src/app/panels/graphite/module.js @@ -370,23 +370,23 @@ function (angular, app, $, _, kbn, moment, timeSeries) { }; $scope.enterFullscreenMode = function(options) { - var oldHeight = $scope.row.height; var docHeight = $(window).height(); var oldTimeRange = $scope.range; - $scope.row.height = options.edit ? 200 : Math.floor(docHeight * 0.7); + $scope.height = options.edit ? 200 : Math.floor(docHeight * 0.7); $scope.editMode = options.edit; if (!$scope.fullscreen) { var closeEditMode = $rootScope.$on('panel-fullscreen-exit', function() { $scope.editMode = false; $scope.fullscreen = false; - $scope.row.height = oldHeight; + delete $scope.height; closeEditMode(); $timeout(function() { $scope.$emit('render'); + if (oldTimeRange !== $scope.range) { $scope.dashboard.refresh(); } @@ -515,7 +515,7 @@ function (angular, app, $, _, kbn, moment, timeSeries) { } // IE doesn't work without this - elem.css({height:scope.panel.height || scope.row.height}); + elem.css({height:scope.height || scope.row.height}); _.each(data, function(series) { series.label = series.info.alias; diff --git a/src/app/services/graphite/graphiteFuncs.js b/src/app/services/graphite/gfunc.js similarity index 89% rename from src/app/services/graphite/graphiteFuncs.js rename to src/app/services/graphite/gfunc.js index 9068668e1d9..b76078ef233 100644 --- a/src/app/services/graphite/graphiteFuncs.js +++ b/src/app/services/graphite/gfunc.js @@ -14,6 +14,9 @@ function (_) { }; function addFuncDef(funcDef) { + funcDef.params = funcDef.params || []; + funcDef.defaultParams = funcDef.defaultParams || []; + if (funcDef.category) { funcDef.category.push(funcDef); } @@ -38,8 +41,6 @@ function (_) { addFuncDef({ name: "holtWintersForecast", category: categories.Calculate, - params: [], - defaultParams: [] }); addFuncDef({ @@ -60,16 +61,12 @@ function (_) { name: 'sumSeries', shortName: 'sum', category: categories.Combine, - params: [], - defaultParams: [] }); addFuncDef({ name: 'averageSeries', shortName: 'avg', category: categories.Combine, - params: [], - defaultParams: [] }); addFuncDef({ @@ -106,15 +103,11 @@ function (_) { addFuncDef({ name: 'integral', category: categories.Transform, - params: [], - defaultParams: [] }); addFuncDef({ name: 'derivate', category: categories.Transform, - params: [], - defaultParams: [] }); addFuncDef({ @@ -150,15 +143,14 @@ function (_) { }; return { - createFuncInstance: function(name) { - if (_.isString(name)) { - var funcDef = index[name]; - if (!funcDef) { + createFuncInstance: function(funcDef) { + if (_.isString(funcDef)) { + if (!index[funcDef]) { throw { message: 'Method not found ' + name }; } - name = funcDef; + funcDef = index[funcDef]; } - return new FuncInstance(name); + return new FuncInstance(funcDef); }, getCategories: function() { diff --git a/src/config.js b/src/config.js index f844e7a9522..88188252fcb 100644 --- a/src/config.js +++ b/src/config.js @@ -50,8 +50,6 @@ function (Settings) { */ panel_names: [ 'text', - 'column', - 'histogram', 'graphite' ] }); diff --git a/src/test/karma.conf.js b/src/test/karma.conf.js index e28da108300..50c65184087 100644 --- a/src/test/karma.conf.js +++ b/src/test/karma.conf.js @@ -8,6 +8,7 @@ module.exports = function(config) { files: [ 'test/test-main.js', {pattern: 'app/**/*.js', included: false}, + {pattern: 'vendor/**/*.js', included: false}, {pattern: 'test/**/*.js', included: false} ], diff --git a/src/test/specs/gfunc-specs.js b/src/test/specs/gfunc-specs.js new file mode 100644 index 00000000000..0a4e637f9c2 --- /dev/null +++ b/src/test/specs/gfunc-specs.js @@ -0,0 +1,46 @@ +define([ + 'app/services/graphite/gfunc' +], function(gfunc) { + + describe('when creating func instance from func namae', function() { + + it('should return func instance', function() { + var func = gfunc.createFuncInstance('sumSeries'); + expect(func).to.be.ok(); + expect(func.def.name).to.equal('sumSeries'); + expect(func.def.params.length).to.equal(0); + expect(func.def.defaultParams.length).to.equal(0); + expect(func.def.defaultParams.length).to.equal(0); + }); + + it('should return func instance with shortName', function() { + var func = gfunc.createFuncInstance('sum'); + expect(func).to.be.ok(); + }); + + it('should return func instance from funcDef', function() { + var func = gfunc.createFuncInstance('sum'); + var func = gfunc.createFuncInstance(func.def); + expect(func).to.be.ok(); + }); + + it('func instance should have text representation', function() { + var func = gfunc.createFuncInstance('groupByNode'); + func.params[0] = 5; + func.params[1] = 'avg'; + func.updateText(); + expect(func.text).to.equal("groupByNode(5, avg)"); + }); + + }); + + describe('when requesting function categories', function() { + + it('should return function categories', function() { + var catIndex = gfunc.getCategories(); + expect(catIndex.Special.length).to.equal(3); + }); + + }); + +}); diff --git a/src/test/test-main.js b/src/test/test-main.js index 3b48c825c04..b1700b37dd5 100644 --- a/src/test/test-main.js +++ b/src/test/test-main.js @@ -1,10 +1,22 @@ require.config({ - baseUrl:'base' + baseUrl: 'base', + + paths: { + underscore: 'app/components/underscore.extended', + 'underscore-src': 'vendor/underscore', + }, + + shim: { + underscore: { + exports: '_' + }, + } }); require([ 'test/specs/lexer-specs', 'test/specs/parser-specs', + 'test/specs/gfunc-specs', ], function () { window.__karma__.start(); }); \ No newline at end of file