mirror of
https://github.com/grafana/grafana.git
synced 2025-01-09 23:53:25 -06:00
Merge branch 'tsconfig-no-implicit-this'
This commit is contained in:
commit
36bc8b77fb
@ -1,7 +1,7 @@
|
||||
// Based on underscore.js debounce()
|
||||
export default function debounce(func, wait) {
|
||||
let timeout;
|
||||
return function() {
|
||||
return function(this: any) {
|
||||
const context = this;
|
||||
const args = arguments;
|
||||
const later = function() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Node.closest() polyfill
|
||||
if ('Element' in window && !Element.prototype.closest) {
|
||||
Element.prototype.closest = function(s) {
|
||||
Element.prototype.closest = function(this: any, s) {
|
||||
const matches = (this.document || this.ownerDocument).querySelectorAll(s);
|
||||
let el = this;
|
||||
let i;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import _ from 'lodash';
|
||||
import coreModule from '../../core_module';
|
||||
|
||||
function typeaheadMatcher(item) {
|
||||
function typeaheadMatcher(this: any, item) {
|
||||
let str = this.query;
|
||||
if (str === '') {
|
||||
return true;
|
||||
|
@ -33,7 +33,7 @@ export function queryPartEditorDirective($compile, templateSrv) {
|
||||
|
||||
$scope.partActions = [];
|
||||
|
||||
function clickFuncParam(paramIndex) {
|
||||
function clickFuncParam(this: any, paramIndex) {
|
||||
/*jshint validthis:true */
|
||||
const $link = $(this);
|
||||
const $input = $link.next();
|
||||
@ -53,7 +53,7 @@ export function queryPartEditorDirective($compile, templateSrv) {
|
||||
}
|
||||
}
|
||||
|
||||
function inputBlur(paramIndex) {
|
||||
function inputBlur(this: any, paramIndex) {
|
||||
/*jshint validthis:true */
|
||||
const $input = $(this);
|
||||
const $link = $input.prev();
|
||||
@ -72,14 +72,14 @@ export function queryPartEditorDirective($compile, templateSrv) {
|
||||
$link.show();
|
||||
}
|
||||
|
||||
function inputKeyPress(paramIndex, e) {
|
||||
function inputKeyPress(this: any, paramIndex, e) {
|
||||
/*jshint validthis:true */
|
||||
if (e.which === 13) {
|
||||
inputBlur.call(this, paramIndex);
|
||||
}
|
||||
}
|
||||
|
||||
function inputKeyDown() {
|
||||
function inputKeyDown(this: any) {
|
||||
/*jshint validthis:true */
|
||||
this.style.width = (3 + this.value.length) * 8 + 'px';
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ function bootstrapTagsinput() {
|
||||
},
|
||||
});
|
||||
|
||||
select.on('itemAdded', function(event) {
|
||||
select.on('itemAdded', event => {
|
||||
if (scope.model.indexOf(event.item) === -1) {
|
||||
scope.model.push(event.item);
|
||||
if (scope.onTagsUpdated) {
|
||||
@ -79,7 +79,7 @@ function bootstrapTagsinput() {
|
||||
const tagElement = select
|
||||
.next()
|
||||
.children('span')
|
||||
.filter(function() {
|
||||
.filter(() => {
|
||||
return $(this).text() === event.item;
|
||||
});
|
||||
setColor(event.item, tagElement);
|
||||
|
@ -9,10 +9,10 @@ $.fn.place_tt = (function() {
|
||||
offset: 5,
|
||||
};
|
||||
|
||||
return function(x, y, opts) {
|
||||
return function(this: any, x, y, opts) {
|
||||
opts = $.extend(true, {}, defaults, opts);
|
||||
|
||||
return this.each(function() {
|
||||
return this.each(() => {
|
||||
const $tooltip = $(this);
|
||||
let width, height;
|
||||
|
||||
|
@ -204,7 +204,7 @@ const reactComponent = function($injector) {
|
||||
attrs.props ? watchProps(attrs.watchDepth, scope, [attrs.props], renderMyComponent) : renderMyComponent();
|
||||
|
||||
// cleanup when scope is destroyed
|
||||
scope.$on('$destroy', function() {
|
||||
scope.$on('$destroy', () => {
|
||||
if (!attrs.onScopeDestroy) {
|
||||
ReactDOM.unmountComponentAtNode(elem[0]);
|
||||
} else {
|
||||
@ -280,7 +280,7 @@ const reactDirective = function($injector) {
|
||||
props.length ? watchProps(attrs.watchDepth, scope, propExpressions, renderMyComponent) : renderMyComponent();
|
||||
|
||||
// cleanup when scope is destroyed
|
||||
scope.$on('$destroy', function() {
|
||||
scope.$on('$destroy', () => {
|
||||
if (!attrs.onScopeDestroy) {
|
||||
ReactDOM.unmountComponentAtNode(elem[0]);
|
||||
} else {
|
||||
|
@ -3,7 +3,7 @@ import coreModule from 'app/core/core_module';
|
||||
import Drop from 'tether-drop';
|
||||
|
||||
/** @ngInject **/
|
||||
function popoverSrv($compile, $rootScope, $timeout) {
|
||||
function popoverSrv(this: any, $compile, $rootScope, $timeout) {
|
||||
let openDrop = null;
|
||||
|
||||
this.close = function() {
|
||||
|
@ -2,10 +2,10 @@ import _ from 'lodash';
|
||||
import coreModule from '../core_module';
|
||||
|
||||
/** @ngInject */
|
||||
export function uiSegmentSrv($sce, templateSrv) {
|
||||
export function uiSegmentSrv(this: any, $sce, templateSrv) {
|
||||
const self = this;
|
||||
|
||||
function MetricSegment(options) {
|
||||
function MetricSegment(this: any, options) {
|
||||
if (options === '*' || options.value === '*') {
|
||||
this.value = '*';
|
||||
this.html = $sce.trustAsHtml('<i class="fa fa-asterisk"><i>');
|
||||
|
@ -140,15 +140,12 @@ export class DashboardMigrator {
|
||||
}
|
||||
|
||||
// ensure query refIds
|
||||
panelUpgrades.push(function(panel) {
|
||||
_.each(
|
||||
panel.targets,
|
||||
function(target) {
|
||||
if (!target.refId) {
|
||||
target.refId = this.dashboard.getNextQueryLetter(panel);
|
||||
}
|
||||
}.bind(this)
|
||||
);
|
||||
panelUpgrades.push(panel => {
|
||||
_.each(panel.targets, target => {
|
||||
if (!target.refId) {
|
||||
target.refId = this.dashboard.getNextQueryLetter(panel);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,7 @@ import angular from 'angular';
|
||||
import { ChangeTracker } from './change_tracker';
|
||||
|
||||
/** @ngInject */
|
||||
export function unsavedChangesSrv($rootScope, $q, $location, $timeout, contextSrv, dashboardSrv, $window) {
|
||||
export function unsavedChangesSrv(this: any, $rootScope, $q, $location, $timeout, contextSrv, dashboardSrv, $window) {
|
||||
this.init = function(dashboard, scope) {
|
||||
this.tracker = new ChangeTracker(dashboard, scope, 1000, $location, $window, $timeout, contextSrv, $rootScope);
|
||||
return this.tracker;
|
||||
|
@ -3,7 +3,7 @@ import { VariableSrv } from '../variable_srv';
|
||||
import moment from 'moment';
|
||||
import $q from 'q';
|
||||
|
||||
describe('VariableSrv', function() {
|
||||
describe('VariableSrv', function(this: any) {
|
||||
const ctx = <any>{
|
||||
datasourceSrv: {},
|
||||
timeSrv: {
|
||||
|
@ -4,7 +4,7 @@ import _ from 'lodash';
|
||||
import { VariableSrv } from '../variable_srv';
|
||||
import $q from 'q';
|
||||
|
||||
describe('VariableSrv init', function() {
|
||||
describe('VariableSrv init', function(this: any) {
|
||||
const templateSrv = {
|
||||
init: vars => {
|
||||
this.variables = vars;
|
||||
|
@ -203,7 +203,7 @@ export class ElasticDatasource {
|
||||
this.timeSrv.setTime({ from: 'now-1m', to: 'now' }, true);
|
||||
// validate that the index exist and has date field
|
||||
return this.getFields({ type: 'date' }).then(
|
||||
function(dateFields) {
|
||||
dateFields => {
|
||||
const timeField = _.find(dateFields, { text: this.timeField });
|
||||
if (!timeField) {
|
||||
return {
|
||||
@ -212,7 +212,7 @@ export class ElasticDatasource {
|
||||
};
|
||||
}
|
||||
return { status: 'success', message: 'Index OK. Time field name OK.' };
|
||||
}.bind(this),
|
||||
},
|
||||
function(err) {
|
||||
console.log(err);
|
||||
if (err.data && err.data.error) {
|
||||
|
@ -5,7 +5,7 @@ import { ElasticDatasource } from '../datasource';
|
||||
|
||||
import * as dateMath from 'app/core/utils/datemath';
|
||||
|
||||
describe('ElasticDatasource', function() {
|
||||
describe('ElasticDatasource', function(this: any) {
|
||||
const backendSrv = {
|
||||
datasourceRequest: jest.fn(),
|
||||
};
|
||||
|
@ -90,7 +90,7 @@ export function graphiteAddFunc($compile) {
|
||||
};
|
||||
|
||||
$(elem)
|
||||
.on('mouseenter', 'ul.dropdown-menu li', function() {
|
||||
.on('mouseenter', 'ul.dropdown-menu li', () => {
|
||||
cleanUpDrop();
|
||||
|
||||
let funcDef;
|
||||
|
@ -4,7 +4,7 @@ import { isVersionGtOrEq, SemVersion } from 'app/core/utils/version';
|
||||
import gfunc from './gfunc';
|
||||
|
||||
/** @ngInject */
|
||||
export function GraphiteDatasource(instanceSettings, $q, backendSrv, templateSrv) {
|
||||
export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, templateSrv) {
|
||||
this.basicAuth = instanceSettings.basicAuth;
|
||||
this.url = instanceSettings.url;
|
||||
this.name = instanceSettings.name;
|
||||
|
@ -28,7 +28,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
|
||||
let paramCountAtLink = 0;
|
||||
let cancelBlur = null;
|
||||
|
||||
function clickFuncParam(paramIndex) {
|
||||
function clickFuncParam(this: any, paramIndex) {
|
||||
/*jshint validthis:true */
|
||||
|
||||
const $link = $(this);
|
||||
@ -108,7 +108,7 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
|
||||
}
|
||||
|
||||
// this = input element
|
||||
function inputBlur(paramIndex) {
|
||||
function inputBlur(this: any, paramIndex) {
|
||||
/*jshint validthis:true */
|
||||
const inputElem = this;
|
||||
// happens long before the click event on the typeahead options
|
||||
@ -118,14 +118,14 @@ export function graphiteFuncEditor($compile, templateSrv, popoverSrv) {
|
||||
}, 200);
|
||||
}
|
||||
|
||||
function inputKeyPress(paramIndex, e) {
|
||||
function inputKeyPress(this: any, paramIndex, e) {
|
||||
/*jshint validthis:true */
|
||||
if (e.which === 13) {
|
||||
$(this).blur();
|
||||
}
|
||||
}
|
||||
|
||||
function inputKeyDown() {
|
||||
function inputKeyDown(this: any) {
|
||||
/*jshint validthis:true */
|
||||
this.style.width = (3 + this.value.length) * 8 + 'px';
|
||||
}
|
||||
|
@ -964,26 +964,23 @@ export class FuncInstance {
|
||||
render(metricExp) {
|
||||
const str = this.def.name + '(';
|
||||
|
||||
const parameters = _.map(
|
||||
this.params,
|
||||
function(value, index) {
|
||||
let paramType;
|
||||
if (index < this.def.params.length) {
|
||||
paramType = this.def.params[index].type;
|
||||
} else if (_.get(_.last(this.def.params), 'multiple')) {
|
||||
paramType = _.get(_.last(this.def.params), 'type');
|
||||
}
|
||||
// param types that should never be quoted
|
||||
if (_.includes(['value_or_series', 'boolean', 'int', 'float', 'node'], paramType)) {
|
||||
return value;
|
||||
}
|
||||
// param types that might be quoted
|
||||
if (_.includes(['int_or_interval', 'node_or_tag'], paramType) && _.isFinite(+value)) {
|
||||
return _.toString(+value);
|
||||
}
|
||||
return "'" + value + "'";
|
||||
}.bind(this)
|
||||
);
|
||||
const parameters = _.map(this.params, (value, index) => {
|
||||
let paramType;
|
||||
if (index < this.def.params.length) {
|
||||
paramType = this.def.params[index].type;
|
||||
} else if (_.get(_.last(this.def.params), 'multiple')) {
|
||||
paramType = _.get(_.last(this.def.params), 'type');
|
||||
}
|
||||
// param types that should never be quoted
|
||||
if (_.includes(['value_or_series', 'boolean', 'int', 'float', 'node'], paramType)) {
|
||||
return value;
|
||||
}
|
||||
// param types that might be quoted
|
||||
if (_.includes(['int_or_interval', 'node_or_tag'], paramType) && _.isFinite(+value)) {
|
||||
return _.toString(+value);
|
||||
}
|
||||
return "'" + value + "'";
|
||||
});
|
||||
|
||||
// don't send any blank parameters to graphite
|
||||
while (parameters[parameters.length - 1] === '') {
|
||||
@ -1017,12 +1014,9 @@ export class FuncInstance {
|
||||
// handle optional parameters
|
||||
// if string contains ',' and next param is optional, split and update both
|
||||
if (this._hasMultipleParamsInString(strValue, index)) {
|
||||
_.each(
|
||||
strValue.split(','),
|
||||
function(partVal, idx) {
|
||||
this.updateParam(partVal.trim(), index + idx);
|
||||
}.bind(this)
|
||||
);
|
||||
_.each(strValue.split(','), (partVal, idx) => {
|
||||
this.updateParam(partVal.trim(), index + idx);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -922,7 +922,7 @@ for (let i = 0; i < 128; i++) {
|
||||
|
||||
const identifierPartTable = identifierStartTable;
|
||||
|
||||
export function Lexer(expression) {
|
||||
export function Lexer(this: any, expression) {
|
||||
this.input = expression;
|
||||
this.char = 1;
|
||||
this.from = 1;
|
||||
@ -1037,7 +1037,7 @@ Lexer.prototype = {
|
||||
return /^[0-9a-fA-F]$/.test(str);
|
||||
}
|
||||
|
||||
const readUnicodeEscapeSequence = _.bind(function() {
|
||||
const readUnicodeEscapeSequence = _.bind(function(this: any) {
|
||||
/*jshint validthis:true */
|
||||
index += 1;
|
||||
|
||||
@ -1065,7 +1065,7 @@ Lexer.prototype = {
|
||||
return null;
|
||||
}, this);
|
||||
|
||||
const getIdentifierStart = _.bind(function() {
|
||||
const getIdentifierStart = _.bind(function(this: any) {
|
||||
/*jshint validthis:true */
|
||||
const chr = this.peek(index);
|
||||
const code = chr.charCodeAt(0);
|
||||
@ -1096,7 +1096,7 @@ Lexer.prototype = {
|
||||
return null;
|
||||
}, this);
|
||||
|
||||
const getIdentifierPart = _.bind(function() {
|
||||
const getIdentifierPart = _.bind(function(this: any) {
|
||||
/*jshint validthis:true */
|
||||
const chr = this.peek(index);
|
||||
const code = chr.charCodeAt(0);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Lexer } from './lexer';
|
||||
|
||||
export function Parser(expression) {
|
||||
export function Parser(this: any, expression) {
|
||||
this.expression = expression;
|
||||
this.lexer = new Lexer(expression);
|
||||
this.tokens = this.lexer.tokenize();
|
||||
|
@ -39,15 +39,12 @@ export default class OpenTsDatasource {
|
||||
const end = this.convertToTSDBTime(options.rangeRaw.to, true);
|
||||
const qs = [];
|
||||
|
||||
_.each(
|
||||
options.targets,
|
||||
function(target) {
|
||||
if (!target.metric) {
|
||||
return;
|
||||
}
|
||||
qs.push(this.convertTargetToQuery(target, options, this.tsdbVersion));
|
||||
}.bind(this)
|
||||
);
|
||||
_.each(options.targets, target => {
|
||||
if (!target.metric) {
|
||||
return;
|
||||
}
|
||||
qs.push(this.convertTargetToQuery(target, options, this.tsdbVersion));
|
||||
});
|
||||
|
||||
const queries = _.compact(qs);
|
||||
|
||||
@ -75,30 +72,19 @@ export default class OpenTsDatasource {
|
||||
return query.hide !== true;
|
||||
});
|
||||
|
||||
return this.performTimeSeriesQuery(queries, start, end).then(
|
||||
function(response) {
|
||||
const metricToTargetMapping = this.mapMetricsToTargets(response.data, options, this.tsdbVersion);
|
||||
const result = _.map(
|
||||
response.data,
|
||||
function(metricData, index) {
|
||||
index = metricToTargetMapping[index];
|
||||
if (index === -1) {
|
||||
index = 0;
|
||||
}
|
||||
this._saveTagKeys(metricData);
|
||||
return this.performTimeSeriesQuery(queries, start, end).then(response => {
|
||||
const metricToTargetMapping = this.mapMetricsToTargets(response.data, options, this.tsdbVersion);
|
||||
const result = _.map(response.data, (metricData, index) => {
|
||||
index = metricToTargetMapping[index];
|
||||
if (index === -1) {
|
||||
index = 0;
|
||||
}
|
||||
this._saveTagKeys(metricData);
|
||||
|
||||
return this.transformMetricData(
|
||||
metricData,
|
||||
groupByTags,
|
||||
options.targets[index],
|
||||
options,
|
||||
this.tsdbResolution
|
||||
);
|
||||
}.bind(this)
|
||||
);
|
||||
return { data: result };
|
||||
}.bind(this)
|
||||
);
|
||||
return this.transformMetricData(metricData, groupByTags, options.targets[index], options, this.tsdbResolution);
|
||||
});
|
||||
return { data: result };
|
||||
});
|
||||
}
|
||||
|
||||
annotationQuery(options) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
import $ from 'jquery';
|
||||
import { appEvents } from 'app/core/core';
|
||||
|
||||
export default function GraphTooltip(elem, dashboard, scope, getSeriesFn) {
|
||||
export default function GraphTooltip(this: any, elem, dashboard, scope, getSeriesFn) {
|
||||
const self = this;
|
||||
const ctrl = scope.ctrl;
|
||||
const panel = ctrl.panel;
|
||||
|
@ -420,7 +420,7 @@ export class EventMarkers {
|
||||
event: event,
|
||||
});
|
||||
|
||||
const mouseenter = function() {
|
||||
const mouseenter = function(this: any) {
|
||||
createAnnotationToolip(marker, $(this).data('event'), that._plot);
|
||||
};
|
||||
|
||||
@ -541,7 +541,7 @@ export class EventMarkers {
|
||||
event: event,
|
||||
});
|
||||
|
||||
const mouseenter = function() {
|
||||
const mouseenter = function(this: any) {
|
||||
createAnnotationToolip(region, $(this).data('event'), that._plot);
|
||||
};
|
||||
|
||||
@ -596,7 +596,7 @@ export class EventMarkers {
|
||||
*/
|
||||
|
||||
/** @ngInject */
|
||||
export function init(plot) {
|
||||
export function init(this: any, plot) {
|
||||
/*jshint validthis:true */
|
||||
const that = this;
|
||||
const eventMarkers = new EventMarkers(plot);
|
||||
|
@ -31,7 +31,7 @@ export const TeamModel = types
|
||||
groups: types.optional(types.map(TeamGroupModel), {}),
|
||||
})
|
||||
.views(self => ({
|
||||
get filteredMembers() {
|
||||
get filteredMembers(this: Team) {
|
||||
const members = this.members.values();
|
||||
const regex = new RegExp(self.search, 'i');
|
||||
return members.filter(member => {
|
||||
@ -121,7 +121,7 @@ export const TeamsStore = types
|
||||
search: types.optional(types.string, ''),
|
||||
})
|
||||
.views(self => ({
|
||||
get filteredTeams() {
|
||||
get filteredTeams(this: any) {
|
||||
const teams = this.map.values();
|
||||
const regex = new RegExp(self.search, 'i');
|
||||
return teams.filter(team => {
|
||||
|
@ -4,7 +4,7 @@ import * as dateMath from 'app/core/utils/datemath';
|
||||
import { angularMocks, sinon } from '../lib/common';
|
||||
import { PanelModel } from 'app/features/dashboard/panel_model';
|
||||
|
||||
export function ControllerTestContext() {
|
||||
export function ControllerTestContext(this: any) {
|
||||
const self = this;
|
||||
|
||||
this.datasource = {};
|
||||
@ -106,7 +106,7 @@ export function ControllerTestContext() {
|
||||
};
|
||||
}
|
||||
|
||||
export function ServiceTestContext() {
|
||||
export function ServiceTestContext(this: any) {
|
||||
const self = this;
|
||||
self.templateSrv = new TemplateSrvStub();
|
||||
self.timeSrv = new TimeSrvStub();
|
||||
@ -138,11 +138,11 @@ export function ServiceTestContext() {
|
||||
};
|
||||
}
|
||||
|
||||
export function DashboardViewStateStub() {
|
||||
export function DashboardViewStateStub(this: any) {
|
||||
this.registerPanel = function() {};
|
||||
}
|
||||
|
||||
export function TimeSrvStub() {
|
||||
export function TimeSrvStub(this: any) {
|
||||
this.init = sinon.spy();
|
||||
this.time = { from: 'now-1h', to: 'now' };
|
||||
this.timeRange = function(parse) {
|
||||
@ -164,13 +164,13 @@ export function TimeSrvStub() {
|
||||
};
|
||||
}
|
||||
|
||||
export function ContextSrvStub() {
|
||||
export function ContextSrvStub(this: any) {
|
||||
this.hasRole = function() {
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
export function TemplateSrvStub() {
|
||||
export function TemplateSrvStub(this: any) {
|
||||
this.variables = [];
|
||||
this.templateSettings = { interpolate: /\[\[([\s\S]+?)\]\]/g };
|
||||
this.data = {};
|
||||
|
@ -20,7 +20,7 @@
|
||||
"emitDecoratorMetadata": false,
|
||||
"experimentalDecorators": true,
|
||||
"noImplicitReturns": true,
|
||||
"noImplicitThis": false,
|
||||
"noImplicitThis": true,
|
||||
"noImplicitUseStrict": false,
|
||||
"noImplicitAny": false,
|
||||
"noUnusedLocals": true,
|
||||
|
Loading…
Reference in New Issue
Block a user