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

This commit is contained in:
Torkel Ödegaard 2017-04-07 12:17:19 +02:00
commit efca9e904d

View File

@ -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"> <metric-segment segment="ctrl.mixedDsSegment"
Add Query&nbsp;<span class="fa fa-caret-down"></span> get-options="ctrl.getOptions(false)"
</button> on-change="ctrl.mixedDatasourceChanged()"></metric-segment>
<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>
</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() { getOptions(includeBuiltin) {
return Promise.resolve(this.datasources.map(value => { 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};
var ds = _.find(this.datasources, {name: this.mixedDsSegment.value});
if (datasource) { if (ds) {
target.datasource = datasource.name; 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);
} }
} }