Преглед на файлове

Merge branch 'mixed_typeahead' of https://github.com/mtanda/grafana into mtanda-mixed_typeahead

Torkel Ödegaard преди 8 години
родител
ревизия
efca9e904d
променени са 1 файла, в които са добавени 19 реда и са изтрити 16 реда
  1. 19 16
      public/app/features/panel/metrics_ds_selector.ts

+ 19 - 16
public/app/features/panel/metrics_ds_selector.ts

@@ -17,7 +17,7 @@ var template = `
       </label>
 
       <metric-segment segment="ctrl.dsSegment"
-                      get-options="ctrl.getOptions()"
+                      get-options="ctrl.getOptions(true)"
                       on-change="ctrl.datasourceChanged()"></metric-segment>
     </div>
 
@@ -28,15 +28,9 @@ var template = `
       </button>
 
       <div class="dropdown" ng-if="ctrl.current.meta.mixed">
-        <button class="btn btn-inverse dropdown-toggle gf-form-btn" data-toggle="dropdown">
-          Add Query&nbsp;<span class="fa fa-caret-down"></span>
-        </button>
-
-        <ul class="dropdown-menu" role="menu">
-          <li ng-repeat="datasource in ctrl.datasources" role="menuitem" ng-hide="datasource.meta.builtIn">
-            <a ng-click="ctrl.addDataQuery(datasource);">{{datasource.name}}</a>
-          </li>
-        </ul>
+        <metric-segment segment="ctrl.mixedDsSegment"
+                        get-options="ctrl.getOptions(false)"
+                        on-change="ctrl.mixedDatasourceChanged()"></metric-segment>
       </div>
     </div>
   </div>
@@ -46,6 +40,7 @@ var template = `
 
 export class MetricsDsSelectorCtrl {
   dsSegment: any;
+  mixedDsSegment: any;
   dsName: string;
   panelCtrl: any;
   datasources: any[];
@@ -68,10 +63,13 @@ export class MetricsDsSelectorCtrl {
     }
 
     this.dsSegment = uiSegmentSrv.newSegment({value: this.current.name, selectMode: true});
+    this.mixedDsSegment = uiSegmentSrv.newSegment({value: 'Add query', selectMode: true});
   }
 
-  getOptions() {
-    return Promise.resolve(this.datasources.map(value => {
+  getOptions(includeBuiltin) {
+    return Promise.resolve(this.datasources.filter(value => {
+      return includeBuiltin || !value.meta.builtIn;
+    }).map(value => {
       return this.uiSegmentSrv.newSegment(value.name);
     }));
   }
@@ -84,13 +82,18 @@ export class MetricsDsSelectorCtrl {
     }
   }
 
-  addDataQuery(datasource) {
+  mixedDatasourceChanged() {
     var target: any = {isNew: true};
-
-    if (datasource) {
-      target.datasource = datasource.name;
+    var ds = _.find(this.datasources, {name: this.mixedDsSegment.value});
+    if (ds) {
+      target.datasource = ds.name;
+      this.panelCtrl.panel.targets.push(target);
+      this.mixedDsSegment.value = '';
     }
+  }
 
+  addDataQuery() {
+    var target: any = {isNew: true};
     this.panelCtrl.panel.targets.push(target);
   }
 }