Pārlūkot izejas kodu

feat(plugins): completed upgrade of all built in panels

Torkel Ödegaard 10 gadi atpakaļ
vecāks
revīzija
b5726a8d5a

+ 4 - 0
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,

+ 0 - 2
public/app/partials/dashboard.html

@@ -10,8 +10,6 @@
 	<div ng-if="submenuEnabled" ng-include="'app/partials/submenu.html'">
   </div>
 
-	<asd-test></asd-test>
-
 	<div class="clearfix"></div>
 
 	<div class="main-view-container">

+ 0 - 1
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',

+ 1 - 1
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 = {

+ 1 - 1
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,
   };
 }

+ 4 - 3
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};

+ 13 - 12
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,
+  };
 });

+ 46 - 2
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