diff --git a/public/app/plugins/datasource/graphite/specs/query_ctrl.test.ts b/public/app/plugins/datasource/graphite/specs/query_ctrl.test.ts index cb88c697d7d..de0b271f2ed 100644 --- a/public/app/plugins/datasource/graphite/specs/query_ctrl.test.ts +++ b/public/app/plugins/datasource/graphite/specs/query_ctrl.test.ts @@ -30,7 +30,9 @@ describe('GraphiteQueryCtrl', () => { ctx.ctrl = new GraphiteQueryCtrl( {}, {}, + //@ts-ignore new uiSegmentSrv({ trustAsHtml: html => html }, { highlightVariablesAsHtml: () => {} }), + //@ts-ignore new TemplateSrvStub(), {} ); @@ -121,7 +123,7 @@ describe('GraphiteQueryCtrl', () => { ctx.ctrl.target.target = 'test.count'; ctx.ctrl.datasource.metricFindQuery = () => Promise.resolve([]); ctx.ctrl.parseTarget(); - ctx.ctrl.getAltSegments(1).then(results => { + ctx.ctrl.getAltSegments(1).then((results: any) => { ctx.altSegments = results; }); }); diff --git a/public/app/plugins/datasource/influxdb/components/InfluxLogsQueryField.tsx b/public/app/plugins/datasource/influxdb/components/InfluxLogsQueryField.tsx index c81aecdc9d6..483a5382b37 100644 --- a/public/app/plugins/datasource/influxdb/components/InfluxLogsQueryField.tsx +++ b/public/app/plugins/datasource/influxdb/components/InfluxLogsQueryField.tsx @@ -48,11 +48,13 @@ export class InfluxLogsQueryField extends React.PureComponent { const queryBuilder = new InfluxQueryBuilder({ measurement: measurementObj.text, tags: [] }, datasource.database); const fieldsQuery = queryBuilder.buildExploreQuery('FIELDS'); const influxFields = await datasource.metricFindQuery(fieldsQuery); - const fields = influxFields.map((field: any) => ({ - label: field.text, - value: field.text, - children: [], - })); + const fields: any[] = influxFields.map( + (field: any): any => ({ + label: field.text, + value: field.text, + children: [], + }) + ); measurements.push({ label: measurementObj.text, value: measurementObj.text, diff --git a/public/app/plugins/datasource/influxdb/datasource.ts b/public/app/plugins/datasource/influxdb/datasource.ts index e2726df7ecc..79575a19ca8 100644 --- a/public/app/plugins/datasource/influxdb/datasource.ts +++ b/public/app/plugins/datasource/influxdb/datasource.ts @@ -49,12 +49,12 @@ export default class InfluxDatasource extends DataSourceApi { @@ -93,7 +93,7 @@ export default class InfluxDatasource extends DataSourceApi { + (data: any): any => { if (!data || !data.results) { return []; } @@ -136,7 +136,7 @@ export default class InfluxDatasource extends DataSourceApi { + return this._seriesQuery(query, options).then((data: any) => { if (!data || !data.results || !data.results[0]) { throw { message: 'No results in response from InfluxDB' }; } @@ -158,7 +158,7 @@ export default class InfluxDatasource extends DataSourceApi { + .then((res: any) => { const error = _.get(res, 'results[0].error'); if (error) { return { status: 'error', message: error }; } return { status: 'success', message: 'Data source is working' }; }) - .catch(err => { + .catch((err: any) => { return { status: 'error', message: err.message }; }); } @@ -292,10 +292,10 @@ export default class InfluxDatasource extends DataSourceApi { + (result: any) => { return result.data; }, - err => { + (err: any) => { if (err.status !== 0 || err.status >= 300) { if (err.data && err.data.error) { throw { @@ -315,7 +315,7 @@ export default class InfluxDatasource extends DataSourceApi= ' + from + ' and time <= ' + until; } - getInfluxTime(date, roundUp, timezone) { + getInfluxTime(date: any, roundUp: any, timezone: any) { if (_.isString(date)) { if (date === 'now') { return 'now()'; diff --git a/public/app/plugins/datasource/influxdb/influx_query_model.ts b/public/app/plugins/datasource/influxdb/influx_query_model.ts index 4a8827a0fad..680b2072c1a 100644 --- a/public/app/plugins/datasource/influxdb/influx_query_model.ts +++ b/public/app/plugins/datasource/influxdb/influx_query_model.ts @@ -1,7 +1,9 @@ import _ from 'lodash'; import queryPart from './query_part'; import kbn from 'app/core/utils/kbn'; -import { InfluxQuery } from './types'; +import { InfluxQuery, InfluxQueryTag } from './types'; +import { ScopedVars } from '@grafana/ui'; +import { TemplateSrv } from 'app/features/templating/template_srv'; export default class InfluxQueryModel { target: InfluxQuery; @@ -13,7 +15,7 @@ export default class InfluxQueryModel { refId: string; /** @ngInject */ - constructor(target: InfluxQuery, templateSrv?, scopedVars?) { + constructor(target: InfluxQuery, templateSrv?: TemplateSrv, scopedVars?: ScopedVars) { this.target = target; this.templateSrv = templateSrv; this.scopedVars = scopedVars; @@ -51,7 +53,7 @@ export default class InfluxQueryModel { return _.find(this.target.groupBy, (g: any) => g.type === 'fill'); } - addGroupBy(value) { + addGroupBy(value: string) { const stringParts = value.match(/^(\w+)\((.*)\)$/); const typePart = stringParts[1]; const arg = stringParts[2]; @@ -75,7 +77,7 @@ export default class InfluxQueryModel { this.updateProjection(); } - removeGroupByPart(part, index) { + removeGroupByPart(part: { def: { type: string } }, index: number) { const categories = queryPart.getCategories(); if (part.def.type === 'time') { @@ -105,7 +107,7 @@ export default class InfluxQueryModel { this.updateProjection(); } - removeSelectPart(selectParts, part) { + removeSelectPart(selectParts: any[], part: any) { // if we remove the field remove the whole statement if (part.def.type === 'field') { if (this.selectModels.length > 1) { @@ -120,13 +122,13 @@ export default class InfluxQueryModel { this.updatePersistedParts(); } - addSelectPart(selectParts, type) { + addSelectPart(selectParts: any[], type: string) { const partModel = queryPart.create({ type: type }); partModel.def.addStrategy(selectParts, partModel, this); this.updatePersistedParts(); } - private renderTagCondition(tag, index, interpolate) { + private renderTagCondition(tag: InfluxQueryTag, index: number, interpolate: boolean) { let str = ''; let operator = tag.operator; let value = tag.value; @@ -157,7 +159,7 @@ export default class InfluxQueryModel { return str + '"' + tag.key + '" ' + operator + ' ' + value; } - getMeasurementAndPolicy(interpolate) { + getMeasurementAndPolicy(interpolate: any) { let policy = this.target.policy; let measurement = this.target.measurement || 'measurement'; @@ -176,7 +178,7 @@ export default class InfluxQueryModel { return policy + measurement; } - interpolateQueryStr(value, variable, defaultFormatFn) { + interpolateQueryStr(value: any[], variable: { multi: any; includeAll: any }, defaultFormatFn: any) { // if no multi or include all do not regexEscape if (!variable.multi && !variable.includeAll) { return value; @@ -190,7 +192,7 @@ export default class InfluxQueryModel { return '(' + escapedValues.join('|') + ')'; } - render(interpolate?) { + render(interpolate?: boolean) { const target = this.target; if (target.rawQuery) { @@ -265,7 +267,7 @@ export default class InfluxQueryModel { return query; } - renderAdhocFilters(filters) { + renderAdhocFilters(filters: any[]) { const conditions = _.map(filters, (tag, index) => { return this.renderTagCondition(tag, index, false); }); diff --git a/public/app/plugins/datasource/influxdb/influx_series.ts b/public/app/plugins/datasource/influxdb/influx_series.ts index 15b2a89c6f7..96db2633000 100644 --- a/public/app/plugins/datasource/influxdb/influx_series.ts +++ b/public/app/plugins/datasource/influxdb/influx_series.ts @@ -7,14 +7,14 @@ export default class InfluxSeries { alias: any; annotation: any; - constructor(options) { + constructor(options: { series: any; alias?: any; annotation?: any }) { this.series = options.series; this.alias = options.alias; this.annotation = options.annotation; } getTimeSeries() { - const output = []; + const output: any[] = []; let i, j; if (this.series.length === 0) { @@ -54,11 +54,11 @@ export default class InfluxSeries { return output; } - _getSeriesName(series, index) { + _getSeriesName(series: any, index: number) { const regex = /\$(\w+)|\[\[([\s\S]+?)\]\]/g; const segments = series.name.split('.'); - return this.alias.replace(regex, (match, g1, g2) => { + return this.alias.replace(regex, (match: any, g1: any, g2: any) => { const group = g1 || g2; const segIndex = parseInt(group, 10); @@ -84,13 +84,13 @@ export default class InfluxSeries { } getAnnotations() { - const list = []; + const list: any[] = []; _.each(this.series, series => { - let titleCol = null; - let timeCol = null; - const tagsCol = []; - let textCol = null; + let titleCol: any = null; + let timeCol: any = null; + const tagsCol: any = []; + let textCol: any = null; _.each(series.columns, (column, index) => { if (column === 'time') { @@ -126,10 +126,10 @@ export default class InfluxSeries { // Remove empty values, then split in different tags for comma separated values tags: _.flatten( tagsCol - .filter(t => { + .filter((t: any) => { return value[t]; }) - .map(t => { + .map((t: any) => { return value[t].split(','); }) ), diff --git a/public/app/plugins/datasource/influxdb/query_builder.ts b/public/app/plugins/datasource/influxdb/query_builder.ts index 0b3e6f01e74..49e17ab39ba 100644 --- a/public/app/plugins/datasource/influxdb/query_builder.ts +++ b/public/app/plugins/datasource/influxdb/query_builder.ts @@ -1,7 +1,7 @@ import _ from 'lodash'; import kbn from 'app/core/utils/kbn'; -function renderTagCondition(tag, index) { +function renderTagCondition(tag: { operator: any; value: string; condition: any; key: string }, index: number) { let str = ''; let operator = tag.operator; let value = tag.value; @@ -26,7 +26,7 @@ function renderTagCondition(tag, index) { } export class InfluxQueryBuilder { - constructor(private target, private database?) {} + constructor(private target: { measurement: any; tags: any; policy?: any }, private database?: string) {} buildExploreQuery(type: string, withKey?: string, withMeasurementFilter?: string) { let query; diff --git a/public/app/plugins/datasource/influxdb/query_ctrl.ts b/public/app/plugins/datasource/influxdb/query_ctrl.ts index 33656d27ef4..3502ecc5027 100644 --- a/public/app/plugins/datasource/influxdb/query_ctrl.ts +++ b/public/app/plugins/datasource/influxdb/query_ctrl.ts @@ -1,9 +1,10 @@ -import angular from 'angular'; +import angular, { auto, IQService } from 'angular'; import _ from 'lodash'; import { InfluxQueryBuilder } from './query_builder'; import InfluxQueryModel from './influx_query_model'; import queryPart from './query_part'; import { QueryCtrl } from 'app/plugins/sdk'; +import { TemplateSrv } from 'app/features/templating/template_srv'; export class InfluxQueryCtrl extends QueryCtrl { static templateUrl = 'partials/query.editor.html'; @@ -20,7 +21,13 @@ export class InfluxQueryCtrl extends QueryCtrl { removeTagFilterSegment: any; /** @ngInject */ - constructor($scope, $injector, private templateSrv, private $q, private uiSegmentSrv) { + constructor( + $scope: any, + $injector: auto.IInjectorService, + private templateSrv: TemplateSrv, + private $q: IQService, + private uiSegmentSrv: any + ) { super($scope, $injector); this.target = this.target; this.queryModel = new InfluxQueryModel(this.target, templateSrv, this.panel.scopedVars); @@ -73,7 +80,7 @@ export class InfluxQueryCtrl extends QueryCtrl { (memo, cat, key) => { const menu = { text: key, - submenu: cat.map(item => { + submenu: cat.map((item: any) => { return { text: item.type, value: item.type }; }), }; @@ -89,7 +96,7 @@ export class InfluxQueryCtrl extends QueryCtrl { return this.datasource .metricFindQuery(query) - .then(tags => { + .then((tags: any) => { const options = []; if (!this.queryModel.hasFill()) { options.push(this.uiSegmentSrv.newSegment({ value: 'fill(null)' })); @@ -146,12 +153,12 @@ export class InfluxQueryCtrl extends QueryCtrl { this.panelCtrl.refresh(); } - addSelectPart(selectParts, cat, subitem) { + addSelectPart(selectParts: any, cat: any, subitem: { value: any }) { this.queryModel.addSelectPart(selectParts, subitem.value); this.panelCtrl.refresh(); } - handleSelectPartEvent(selectParts, part, evt) { + handleSelectPartEvent(selectParts: any, part: any, evt: { name: any }) { switch (evt.name) { case 'get-param-options': { const fieldsQuery = this.queryBuilder.buildExploreQuery('FIELDS'); @@ -175,7 +182,7 @@ export class InfluxQueryCtrl extends QueryCtrl { } } - handleGroupByPartEvent(part, index, evt) { + handleGroupByPartEvent(part: any, index: any, evt: { name: any }) { switch (evt.name) { case 'get-param-options': { const tagsQuery = this.queryBuilder.buildExploreQuery('TAG_KEYS'); @@ -235,7 +242,7 @@ export class InfluxQueryCtrl extends QueryCtrl { this.target.rawQuery = !this.target.rawQuery; } - getMeasurements(measurementFilter) { + getMeasurements(measurementFilter: any) { const query = this.queryBuilder.buildExploreQuery('MEASUREMENTS', undefined, measurementFilter); return this.datasource .metricFindQuery(query) @@ -243,13 +250,13 @@ export class InfluxQueryCtrl extends QueryCtrl { .catch(this.handleQueryError.bind(this)); } - handleQueryError(err) { + handleQueryError(err: any): any[] { this.error = err.message || 'Failed to issue metric query'; return []; } - transformToSegments(addTemplateVars) { - return results => { + transformToSegments(addTemplateVars: any) { + return (results: any) => { const segments = _.map(results, segment => { return this.uiSegmentSrv.newSegment({ value: segment.text, @@ -273,7 +280,7 @@ export class InfluxQueryCtrl extends QueryCtrl { }; } - getTagsOrValues(segment, index) { + getTagsOrValues(segment: { type: string }, index: number) { if (segment.type === 'condition') { return this.$q.when([this.uiSegmentSrv.newSegment('AND'), this.uiSegmentSrv.newSegment('OR')]); } @@ -298,7 +305,7 @@ export class InfluxQueryCtrl extends QueryCtrl { return this.datasource .metricFindQuery(query) .then(this.transformToSegments(addTemplateVars)) - .then(results => { + .then((results: any) => { if (segment.type === 'key') { results.splice(0, 0, angular.copy(this.removeTagFilterSegment)); } @@ -315,7 +322,7 @@ export class InfluxQueryCtrl extends QueryCtrl { .catch(this.handleQueryError); } - tagSegmentUpdated(segment, index) { + tagSegmentUpdated(segment: { value: any; type: string; cssClass: string }, index: number) { this.tagSegments[index] = segment; // handle remove tag condition @@ -349,7 +356,7 @@ export class InfluxQueryCtrl extends QueryCtrl { } rebuildTargetTagConditions() { - const tags = []; + const tags: any[] = []; let tagIndex = 0; let tagOperator = ''; @@ -378,7 +385,7 @@ export class InfluxQueryCtrl extends QueryCtrl { this.panelCtrl.refresh(); } - getTagValueOperator(tagValue, tagOperator): string { + getTagValueOperator(tagValue: string, tagOperator: string): string { if (tagOperator !== '=~' && tagOperator !== '!~' && /^\/.*\/$/.test(tagValue)) { return '=~'; } else if ((tagOperator === '=~' || tagOperator === '!~') && /^(?!\/.*\/$)/.test(tagValue)) { diff --git a/public/app/plugins/datasource/influxdb/query_part.ts b/public/app/plugins/datasource/influxdb/query_part.ts index 4bc92bcfe72..a3c807d969b 100644 --- a/public/app/plugins/datasource/influxdb/query_part.ts +++ b/public/app/plugins/datasource/influxdb/query_part.ts @@ -1,8 +1,8 @@ import _ from 'lodash'; import { QueryPartDef, QueryPart, functionRenderer, suffixRenderer } from 'app/core/components/query_part/query_part'; -const index = []; -const categories = { +const index: any[] = []; +const categories: any = { Aggregations: [], Selectors: [], Transformations: [], @@ -12,7 +12,7 @@ const categories = { Fields: [], }; -function createPart(part): any { +function createPart(part: any): any { const def = index[part.type]; if (!def) { throw { message: 'Could not find query part ' + part.type }; @@ -26,20 +26,20 @@ function register(options: any) { options.category.push(index[options.type]); } -const groupByTimeFunctions = []; +const groupByTimeFunctions: any[] = []; -function aliasRenderer(part, innerExpr) { +function aliasRenderer(part: { params: string[] }, innerExpr: string) { return innerExpr + ' AS ' + '"' + part.params[0] + '"'; } -function fieldRenderer(part, innerExpr) { +function fieldRenderer(part: { params: string[] }, innerExpr: any) { if (part.params[0] === '*') { return '*'; } return '"' + part.params[0] + '"'; } -function replaceAggregationAddStrategy(selectParts, partModel) { +function replaceAggregationAddStrategy(selectParts: any[], partModel: { def: { type: string } }) { // look for existing aggregation for (let i = 0; i < selectParts.length; i++) { const part = selectParts[i]; @@ -78,7 +78,7 @@ function replaceAggregationAddStrategy(selectParts, partModel) { selectParts.splice(1, 0, partModel); } -function addTransformationStrategy(selectParts, partModel) { +function addTransformationStrategy(selectParts: any[], partModel: any) { let i; // look for index to add transformation for (i = 0; i < selectParts.length; i++) { @@ -91,7 +91,7 @@ function addTransformationStrategy(selectParts, partModel) { selectParts.splice(i, 0, partModel); } -function addMathStrategy(selectParts, partModel) { +function addMathStrategy(selectParts: any[], partModel: any) { const partCount = selectParts.length; if (partCount > 0) { // if last is math, replace it @@ -112,7 +112,7 @@ function addMathStrategy(selectParts, partModel) { selectParts.push(partModel); } -function addAliasStrategy(selectParts, partModel) { +function addAliasStrategy(selectParts: any[], partModel: any) { const partCount = selectParts.length; if (partCount > 0) { // if last is alias, replace it @@ -124,7 +124,7 @@ function addAliasStrategy(selectParts, partModel) { selectParts.push(partModel); } -function addFieldStrategy(selectParts, partModel, query) { +function addFieldStrategy(selectParts: any, partModel: any, query: { selectModels: any[][] }) { // copy all parts const parts = _.map(selectParts, (part: any) => { return createPart({ type: part.def.type, params: _.clone(part.params) }); diff --git a/public/app/plugins/datasource/influxdb/response_parser.ts b/public/app/plugins/datasource/influxdb/response_parser.ts index 5c4fb1fc20e..8bc9717c508 100644 --- a/public/app/plugins/datasource/influxdb/response_parser.ts +++ b/public/app/plugins/datasource/influxdb/response_parser.ts @@ -1,7 +1,7 @@ import _ from 'lodash'; export default class ResponseParser { - parse(query, results) { + parse(query: string, results: { results: any }) { if (!results || results.results.length === 0) { return []; } @@ -52,6 +52,6 @@ export default class ResponseParser { } } -function addUnique(arr, value) { +function addUnique(arr: { [x: string]: any }, value: string | number) { arr[value] = value; } diff --git a/public/app/plugins/datasource/influxdb/specs/datasource.test.ts b/public/app/plugins/datasource/influxdb/specs/datasource.test.ts index 09b438f4aaf..b672aa3802b 100644 --- a/public/app/plugins/datasource/influxdb/specs/datasource.test.ts +++ b/public/app/plugins/datasource/influxdb/specs/datasource.test.ts @@ -1,4 +1,5 @@ import InfluxDatasource from '../datasource'; +//@ts-ignore import $q from 'q'; import { TemplateSrvStub } from 'test/specs/helpers'; @@ -6,6 +7,7 @@ describe('InfluxDataSource', () => { const ctx: any = { backendSrv: {}, $q: $q, + //@ts-ignore templateSrv: new TemplateSrvStub(), instanceSettings: { url: 'url', name: 'influxDb', jsonData: { httpMode: 'GET' } }, }; @@ -23,10 +25,10 @@ describe('InfluxDataSource', () => { to: '2018-01-02T00:00:00Z', }, }; - let requestQuery, requestMethod, requestData; + let requestQuery: any, requestMethod: any, requestData: any; beforeEach(async () => { - ctx.backendSrv.datasourceRequest = req => { + ctx.backendSrv.datasourceRequest = (req: any) => { requestMethod = req.method; requestQuery = req.params.q; requestData = req.data; @@ -45,7 +47,7 @@ describe('InfluxDataSource', () => { }); }; - await ctx.ds.metricFindQuery(query, queryOptions).then(_ => {}); + await ctx.ds.metricFindQuery(query, queryOptions).then(() => {}); }); it('should replace $timefilter', () => { @@ -65,7 +67,8 @@ describe('InfluxDataSource', () => { describe('InfluxDataSource in POST query mode', () => { const ctx: any = { backendSrv: {}, - $q: $q, + $q, + //@ts-ignore templateSrv: new TemplateSrvStub(), instanceSettings: { url: 'url', name: 'influxDb', jsonData: { httpMode: 'POST' } }, }; @@ -78,10 +81,10 @@ describe('InfluxDataSource in POST query mode', () => { describe('When issuing metricFindQuery', () => { const query = 'SELECT max(value) FROM measurement'; const queryOptions: any = {}; - let requestMethod, requestQueryParameter, queryEncoded, requestQuery; + let requestMethod: any, requestQueryParameter: any, queryEncoded: any, requestQuery: any; beforeEach(async () => { - ctx.backendSrv.datasourceRequest = req => { + ctx.backendSrv.datasourceRequest = (req: any) => { requestMethod = req.method; requestQueryParameter = req.params; requestQuery = req.data; @@ -101,7 +104,7 @@ describe('InfluxDataSource in POST query mode', () => { }; queryEncoded = await ctx.ds.serializeParams({ q: query }); - await ctx.ds.metricFindQuery(query, queryOptions).then(_ => {}); + await ctx.ds.metricFindQuery(query, queryOptions).then(() => {}); }); it('should have the query form urlencoded', () => { diff --git a/public/app/plugins/datasource/influxdb/specs/influx_query_model.test.ts b/public/app/plugins/datasource/influxdb/specs/influx_query_model.test.ts index e0e86ecf22c..1c4503bea75 100644 --- a/public/app/plugins/datasource/influxdb/specs/influx_query_model.test.ts +++ b/public/app/plugins/datasource/influxdb/specs/influx_query_model.test.ts @@ -1,7 +1,7 @@ import InfluxQueryModel from '../influx_query_model'; describe('InfluxQuery', () => { - const templateSrv = { replace: val => val }; + const templateSrv: any = { replace: (val: any) => val }; describe('render series with mesurement only', () => { it('should generate correct query', () => { diff --git a/public/app/plugins/datasource/influxdb/specs/query_ctrl.test.ts b/public/app/plugins/datasource/influxdb/specs/query_ctrl.test.ts index b50c7d8cde6..c38135df865 100644 --- a/public/app/plugins/datasource/influxdb/specs/query_ctrl.test.ts +++ b/public/app/plugins/datasource/influxdb/specs/query_ctrl.test.ts @@ -19,10 +19,11 @@ describe('InfluxDBQueryCtrl', () => { ctx.ctrl = new InfluxQueryCtrl( {}, - {}, - {}, - {}, - new uiSegmentSrv({ trustAsHtml: html => html }, { highlightVariablesAsHtml: () => {} }) + {} as any, + {} as any, + {} as any, + //@ts-ignore + new uiSegmentSrv({ trustAsHtml: (html: any) => html }, { highlightVariablesAsHtml: () => {} }) ); }); diff --git a/public/app/plugins/datasource/mssql/config_ctrl.ts b/public/app/plugins/datasource/mssql/config_ctrl.ts index 27e1d59ba24..49b5b4f6676 100644 --- a/public/app/plugins/datasource/mssql/config_ctrl.ts +++ b/public/app/plugins/datasource/mssql/config_ctrl.ts @@ -12,7 +12,7 @@ export class MssqlConfigCtrl { onPasswordChange: ReturnType; /** @ngInject */ - constructor($scope) { + constructor($scope: any) { this.current.jsonData.encrypt = this.current.jsonData.encrypt || 'false'; this.onPasswordReset = createResetHandler(this, PasswordFieldEnum.Password); this.onPasswordChange = createChangeHandler(this, PasswordFieldEnum.Password); diff --git a/public/app/plugins/datasource/mssql/datasource.ts b/public/app/plugins/datasource/mssql/datasource.ts index 9343e0f3860..35178eb575c 100644 --- a/public/app/plugins/datasource/mssql/datasource.ts +++ b/public/app/plugins/datasource/mssql/datasource.ts @@ -1,5 +1,9 @@ import _ from 'lodash'; import ResponseParser from './response_parser'; +import { BackendSrv } from 'app/core/services/backend_srv'; +import { IQService } from 'angular'; +import { TemplateSrv } from 'app/features/templating/template_srv'; +import { TimeSrv } from 'app/features/dashboard/services/TimeSrv'; export class MssqlDatasource { id: any; @@ -8,14 +12,20 @@ export class MssqlDatasource { interval: string; /** @ngInject */ - constructor(instanceSettings, private backendSrv, private $q, private templateSrv, private timeSrv) { + constructor( + instanceSettings: any, + private backendSrv: BackendSrv, + private $q: IQService, + private templateSrv: TemplateSrv, + private timeSrv: TimeSrv + ) { this.name = instanceSettings.name; this.id = instanceSettings.id; this.responseParser = new ResponseParser(this.$q); this.interval = (instanceSettings.jsonData || {}).timeInterval || '1m'; } - interpolateVariable(value, variable) { + interpolateVariable(value: any, variable: any) { if (typeof value === 'string') { if (variable.multi || variable.includeAll) { return "'" + value.replace(/'/g, `''`) + "'"; @@ -38,7 +48,7 @@ export class MssqlDatasource { return quotedValues.join(','); } - query(options) { + query(options: any) { const queries = _.filter(options.targets, item => { return item.hide !== true; }).map(item => { @@ -69,7 +79,7 @@ export class MssqlDatasource { .then(this.responseParser.processQueryResult); } - annotationQuery(options) { + annotationQuery(options: any) { if (!options.annotation.rawQuery) { return this.$q.reject({ message: 'Query missing in annotation definition' }); } @@ -91,10 +101,10 @@ export class MssqlDatasource { queries: [query], }, }) - .then(data => this.responseParser.transformAnnotationResponse(options, data)); + .then((data: any) => this.responseParser.transformAnnotationResponse(options, data)); } - metricFindQuery(query, optionalOptions) { + metricFindQuery(query: string, optionalOptions: { variable: { name: string } }) { let refId = 'tempvar'; if (optionalOptions && optionalOptions.variable && optionalOptions.variable.name) { refId = optionalOptions.variable.name; @@ -120,7 +130,7 @@ export class MssqlDatasource { method: 'POST', data: data, }) - .then(data => this.responseParser.parseMetricFindQueryResult(refId, data)); + .then((data: any) => this.responseParser.parseMetricFindQueryResult(refId, data)); } testDatasource() { @@ -143,10 +153,10 @@ export class MssqlDatasource { ], }, }) - .then(res => { + .then((res: any) => { return { status: 'success', message: 'Database Connection OK' }; }) - .catch(err => { + .catch((err: any) => { console.log(err); if (err.data && err.data.message) { return { status: 'error', message: err.data.message }; diff --git a/public/app/plugins/datasource/mssql/query_ctrl.ts b/public/app/plugins/datasource/mssql/query_ctrl.ts index c3eab93d426..14a5637d9e4 100644 --- a/public/app/plugins/datasource/mssql/query_ctrl.ts +++ b/public/app/plugins/datasource/mssql/query_ctrl.ts @@ -1,5 +1,6 @@ import _ from 'lodash'; import { QueryCtrl } from 'app/plugins/sdk'; +import { auto } from 'angular'; export interface MssqlQuery { refId: string; @@ -34,7 +35,7 @@ export class MssqlQueryCtrl extends QueryCtrl { showHelp: boolean; /** @ngInject */ - constructor($scope, $injector) { + constructor($scope: any, $injector: auto.IInjectorService) { super($scope, $injector); this.target.format = this.target.format || 'time_series'; @@ -55,7 +56,7 @@ export class MssqlQueryCtrl extends QueryCtrl { this.panelCtrl.events.on('data-error', this.onDataError.bind(this), $scope); } - onDataReceived(dataList) { + onDataReceived(dataList: any) { this.lastQueryMeta = null; this.lastQueryError = null; @@ -65,7 +66,7 @@ export class MssqlQueryCtrl extends QueryCtrl { } } - onDataError(err) { + onDataError(err: any) { if (err.data && err.data.results) { const queryRes = err.data.results[this.target.refId]; if (queryRes) {