From b5726a8d5af82c3828a4ee108142c6f9bf9cb1f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Thu, 14 Jan 2016 18:57:02 +0100 Subject: [PATCH] feat(plugins): completed upgrade of all built in panels --- public/app/features/panel/query_editor.ts | 4 ++ public/app/partials/dashboard.html | 2 - .../plugins/panel/singlestat/controller.js | 1 - public/app/plugins/panel/table/controller.ts | 2 +- public/app/plugins/panel/table/editor.ts | 2 +- public/app/plugins/panel/table/module.ts | 7 +-- public/app/plugins/panel/text/module.js | 25 +++++----- public/app/plugins/plugin_api.md | 48 ++++++++++++++++++- 8 files changed, 69 insertions(+), 22 deletions(-) diff --git a/public/app/features/panel/query_editor.ts b/public/app/features/panel/query_editor.ts index 100cb7510ae..b360ad2aa79 100644 --- a/public/app/features/panel/query_editor.ts +++ b/public/app/features/panel/query_editor.ts @@ -11,6 +11,10 @@ function metricsQueryEditor(dynamicDirectiveSrv, datasourceSrv) { return datasourceSrv.get(datasource).then(ds => { scope.datasource = ds; + if (!scope.target.refId) { + scope.target.refId = 'A'; + } + return System.import(ds.meta.module).then(dsModule => { return { name: 'metrics-query-editor-' + ds.meta.id, diff --git a/public/app/partials/dashboard.html b/public/app/partials/dashboard.html index df8e1f5f82b..3234903ff8c 100644 --- a/public/app/partials/dashboard.html +++ b/public/app/partials/dashboard.html @@ -10,8 +10,6 @@
- -
diff --git a/public/app/plugins/panel/singlestat/controller.js b/public/app/plugins/panel/singlestat/controller.js index 357bffb8fa2..62ae13d0f5f 100644 --- a/public/app/plugins/panel/singlestat/controller.js +++ b/public/app/plugins/panel/singlestat/controller.js @@ -11,7 +11,6 @@ function (angular, app, _, kbn, TimeSeries, PanelMeta) { /** @ngInject */ function SingleStatCtrl($scope, panelSrv, panelHelper) { - console.log('controller'); $scope.panelMeta = new PanelMeta({ panelName: 'Singlestat', diff --git a/public/app/plugins/panel/table/controller.ts b/public/app/plugins/panel/table/controller.ts index 64e5123b0f6..f05a36c4cdf 100644 --- a/public/app/plugins/panel/table/controller.ts +++ b/public/app/plugins/panel/table/controller.ts @@ -20,7 +20,7 @@ export class TablePanelCtrl { metricsEditor: true, }); - $scope.panelMeta.addEditorTab('Options', 'app/plugins/panels/table/options.html'); + $scope.panelMeta.addEditorTab('Options', 'app/plugins/panel/table/options.html'); $scope.panelMeta.addEditorTab('Time range', 'app/features/panel/partials/panelTime.html'); var panelDefaults = { diff --git a/public/app/plugins/panel/table/editor.ts b/public/app/plugins/panel/table/editor.ts index d16805ecb07..42536642d4a 100644 --- a/public/app/plugins/panel/table/editor.ts +++ b/public/app/plugins/panel/table/editor.ts @@ -118,7 +118,7 @@ export function tablePanelEditor($q, uiSegmentSrv) { return { restrict: 'E', scope: true, - templateUrl: 'app/plugins/panels/table/editor.html', + templateUrl: 'app/plugins/panel/table/editor.html', controller: TablePanelEditorCtrl, }; } diff --git a/public/app/plugins/panel/table/module.ts b/public/app/plugins/panel/table/module.ts index 4344eb41229..834bea42ba5 100644 --- a/public/app/plugins/panel/table/module.ts +++ b/public/app/plugins/panel/table/module.ts @@ -10,7 +10,9 @@ import {TablePanelCtrl} from './controller'; import {TableRenderer} from './renderer'; import {tablePanelEditor} from './editor'; -export function tablePanel() { +angular.module('grafana.directives').directive('grafanaPanelTableEditor', tablePanelEditor); + +function tablePanel() { 'use strict'; return { restrict: 'E', @@ -102,5 +104,4 @@ export function tablePanel() { }; } -angular.module('grafana.directives').directive('grafanaPanelTable', tablePanel); -angular.module('grafana.directives').directive('grafanaPanelTableEditor', tablePanelEditor); +export {tablePanel as panel}; diff --git a/public/app/plugins/panel/text/module.js b/public/app/plugins/panel/text/module.js index d3add3a15b8..e940f3b7d21 100644 --- a/public/app/plugins/panel/text/module.js +++ b/public/app/plugins/panel/text/module.js @@ -10,17 +10,7 @@ function (angular, app, _, require, PanelMeta) { var converter; - var module = angular.module('grafana.panels.text', []); - app.useModule(module); - - module.directive('grafanaPanelText', function() { - return { - controller: 'TextPanelCtrl', - templateUrl: 'app/plugins/panel/text/module.html', - }; - }); - - module.controller('TextPanelCtrl', function($scope, templateSrv, $sce, panelSrv) { + function TextPanelCtrl($scope, templateSrv, $sce, panelSrv) { $scope.panelMeta = new PanelMeta({ panelName: 'Text', @@ -107,5 +97,16 @@ function (angular, app, _, require, PanelMeta) { }; $scope.init(); - }); + } + + function textPanel() { + return { + controller: TextPanelCtrl, + templateUrl: 'app/plugins/panel/text/module.html', + }; + } + + return { + panel: textPanel, + }; }); diff --git a/public/app/plugins/plugin_api.md b/public/app/plugins/plugin_api.md index 138dab09931..707838ba8fd 100644 --- a/public/app/plugins/plugin_api.md +++ b/public/app/plugins/plugin_api.md @@ -1,8 +1,52 @@ # Plugin API -## Changelog +### 3.0 changes to plugin api changes -2.5.1 +There has been big changes to both data source and plugin schema (plugin.json) and how +you write the plugin main module. + +#### Datasource plugin + +Now data source plugins AMD/SystemJS module should return: + +```javascript +return { + Datasource: ElasticDatasource, + configView: editView.default, + annotationsQueryEditor: annotationsQueryEditor, + metricsQueryEditor: metricsQueryEditor, + metricsQueryOptions: metricsQueryOptions, +}; +``` + +Where ElasticDatasource is a constructor function to a javascript. The constructor +function can take angular services and `instanceSettings` as parameters. + +Example: + +```javascript +function ElasticDatasource(instanceSettings, templateSrv) { + this.instanceSettings = this.instanceSettings; + ///... +}; +``` + +A datasource module can optionally return a configView directive function, metricsQueryEditor directive function, etc. + +Example: + +```javascript +function metricsQueryEditor() { + return {controller: 'ElasticQueryCtrl', templateUrl: 'app/plugins/datasource/elasticsearch/partials/query.editor.html'}; +} +``` + +#### Panel plugin + +The panel plugin AMD/SystemJS module should return an object with a property named `panel`. This needs to be +a directive function. + +### 2.5.1 changes datasource annotationQuery changed. now single options parameter with: - range - rangeRaw