|
@@ -17,7 +17,7 @@ var template = `
|
|
|
</label>
|
|
</label>
|
|
|
|
|
|
|
|
<metric-segment segment="ctrl.dsSegment"
|
|
<metric-segment segment="ctrl.dsSegment"
|
|
|
- get-options="ctrl.getOptions()"
|
|
|
|
|
|
|
+ get-options="ctrl.getOptions(true)"
|
|
|
on-change="ctrl.datasourceChanged()"></metric-segment>
|
|
on-change="ctrl.datasourceChanged()"></metric-segment>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
@@ -28,15 +28,9 @@ var template = `
|
|
|
</button>
|
|
</button>
|
|
|
|
|
|
|
|
<div class="dropdown" ng-if="ctrl.current.meta.mixed">
|
|
<div class="dropdown" ng-if="ctrl.current.meta.mixed">
|
|
|
- <button class="btn btn-inverse dropdown-toggle gf-form-btn" data-toggle="dropdown">
|
|
|
|
|
- Add Query <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>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -46,6 +40,7 @@ var template = `
|
|
|
|
|
|
|
|
export class MetricsDsSelectorCtrl {
|
|
export class MetricsDsSelectorCtrl {
|
|
|
dsSegment: any;
|
|
dsSegment: any;
|
|
|
|
|
+ mixedDsSegment: any;
|
|
|
dsName: string;
|
|
dsName: string;
|
|
|
panelCtrl: any;
|
|
panelCtrl: any;
|
|
|
datasources: any[];
|
|
datasources: any[];
|
|
@@ -68,10 +63,13 @@ export class MetricsDsSelectorCtrl {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
this.dsSegment = uiSegmentSrv.newSegment({value: this.current.name, selectMode: true});
|
|
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);
|
|
return this.uiSegmentSrv.newSegment(value.name);
|
|
|
}));
|
|
}));
|
|
|
}
|
|
}
|
|
@@ -84,13 +82,18 @@ export class MetricsDsSelectorCtrl {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- addDataQuery(datasource) {
|
|
|
|
|
|
|
+ mixedDatasourceChanged() {
|
|
|
var target: any = {isNew: true};
|
|
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);
|
|
this.panelCtrl.panel.targets.push(target);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|