| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- export class GenericDatasource {
- constructor(instanceSettings, $q, backendSrv) {
- this.type = instanceSettings.type;
- this.url = instanceSettings.url;
- this.name = instanceSettings.name;
- this.q = $q;
- this.backendSrv = backendSrv;
- }
- // Called once per panel (graph)
- query(options) {
- var query = this.buildQueryParameters(options);
- if (query.targets.length <= 0) {
- return this.q.when([]);
- }
- return this.backendSrv.datasourceRequest({
- url: this.url + '/query',
- data: query,
- method: 'POST',
- headers: { 'Content-Type': 'application/json' }
- });
- }
- // Required
- // Used for testing datasource in datasource configuration pange
- testDatasource() {
- return this.backendSrv.datasourceRequest({
- url: this.url + '/',
- method: 'GET'
- }).then(response => {
- if (response.status === 200) {
- return { status: "success", message: "Data source is working", title: "Success" };
- }
- });
- }
- // Optional
- // Required for templating
- metricFindQuery(options) {
- return this.backendSrv.datasourceRequest({
- url: this.url + '/search',
- data: options,
- method: 'POST',
- headers: { 'Content-Type': 'application/json' }
- }).then(this.mapToTextValue);
- }
- mapToTextValue(result) {
- return _.map(result.data, (d, i) => {
- return { text: d, value: i};
- });
- }
- buildQueryParameters(options) {
- //remove placeholder targets
- options.targets = _.filter(options.targets, target => {
- return target.target !== 'select metric';
- });
- return options;
- }
- }
|