diff --git a/package.json b/package.json
index bf7bb807a8b..3fe794c119a 100644
--- a/package.json
+++ b/package.json
@@ -179,6 +179,7 @@
"@types/d3-scale-chromatic": "1.3.1",
"@types/enzyme-adapter-react-16": "1.0.5",
"@types/marked": "0.6.5",
+ "@types/prismjs": "1.16.0",
"@types/react-redux": "^7.0.8",
"@types/react-test-renderer": "16.8.2",
"@types/redux-logger": "3.0.7",
diff --git a/packages/grafana-ui/src/types/panel.ts b/packages/grafana-ui/src/types/panel.ts
index bb7e03c572d..e50bfd77e76 100644
--- a/packages/grafana-ui/src/types/panel.ts
+++ b/packages/grafana-ui/src/types/panel.ts
@@ -123,6 +123,16 @@ export interface PanelMenuItem {
subMenu?: PanelMenuItem[];
}
+export interface AngularPanelMenuItem {
+ click: Function;
+ icon: string;
+ href: string;
+ divider: boolean;
+ text: string;
+ shortcut: string;
+ submenu: any[];
+}
+
export enum VizOrientation {
Auto = 'auto',
Vertical = 'vertical',
diff --git a/public/app/features/explore/state/reducers.ts b/public/app/features/explore/state/reducers.ts
index ad294669989..4c1c5070e8f 100644
--- a/public/app/features/explore/state/reducers.ts
+++ b/public/app/features/explore/state/reducers.ts
@@ -667,6 +667,7 @@ export const exploreReducer = (state = initialExploreState, action: HigherOrderA
if (action.payload) {
const { exploreId } = action.payload as any;
if (exploreId !== undefined) {
+ // @ts-ignore
const exploreItemState = state[exploreId];
return { ...state, [exploreId]: itemReducer(exploreItemState, action) };
}
diff --git a/public/app/features/explore/state/selectors.test.ts b/public/app/features/explore/state/selectors.test.ts
index 10ce6135221..45c81436885 100644
--- a/public/app/features/explore/state/selectors.test.ts
+++ b/public/app/features/explore/state/selectors.test.ts
@@ -2,7 +2,7 @@ import { deduplicatedLogsSelector } from './selectors';
import { LogsDedupStrategy } from '@grafana/data';
import { ExploreItemState } from 'app/types';
-const state = {
+const state: any = {
logsResult: {
rows: [
{
diff --git a/public/app/features/folders/CreateFolderCtrl.ts b/public/app/features/folders/CreateFolderCtrl.ts
index 9152dbca66e..5b3872c2532 100644
--- a/public/app/features/folders/CreateFolderCtrl.ts
+++ b/public/app/features/folders/CreateFolderCtrl.ts
@@ -1,5 +1,9 @@
import appEvents from 'app/core/app_events';
import locationUtil from 'app/core/utils/location_util';
+import { BackendSrv } from 'app/core/services/backend_srv';
+import { ILocationService } from 'angular';
+import { ValidationSrv } from 'app/features/manage-dashboards';
+import { NavModelSrv } from 'app/core/nav_model_srv';
export default class CreateFolderCtrl {
title = '';
@@ -9,7 +13,12 @@ export default class CreateFolderCtrl {
validationError: any;
/** @ngInject */
- constructor(private backendSrv, private $location, private validationSrv, navModelSrv) {
+ constructor(
+ private backendSrv: BackendSrv,
+ private $location: ILocationService,
+ private validationSrv: ValidationSrv,
+ navModelSrv: NavModelSrv
+ ) {
this.navModel = navModelSrv.getNav('dashboards', 'manage-dashboards', 0);
}
@@ -18,7 +27,7 @@ export default class CreateFolderCtrl {
return;
}
- return this.backendSrv.createFolder({ title: this.title }).then(result => {
+ return this.backendSrv.createFolder({ title: this.title }).then((result: any) => {
appEvents.emit('alert-success', ['Folder Created', 'OK']);
this.$location.url(locationUtil.stripBaseFromUrl(result.url));
});
diff --git a/public/app/features/folders/FolderDashboardsCtrl.ts b/public/app/features/folders/FolderDashboardsCtrl.ts
index 94370900893..619dced9fa1 100644
--- a/public/app/features/folders/FolderDashboardsCtrl.ts
+++ b/public/app/features/folders/FolderDashboardsCtrl.ts
@@ -1,5 +1,7 @@
import { FolderPageLoader } from './services/FolderPageLoader';
import locationUtil from 'app/core/utils/location_util';
+import { NavModelSrv } from 'app/core/core';
+import { ILocationService } from 'angular';
export default class FolderDashboardsCtrl {
navModel: any;
@@ -7,13 +9,18 @@ export default class FolderDashboardsCtrl {
uid: string;
/** @ngInject */
- constructor(private backendSrv, navModelSrv, private $routeParams, $location) {
+ constructor(
+ private backendSrv: any,
+ navModelSrv: NavModelSrv,
+ private $routeParams: any,
+ $location: ILocationService
+ ) {
if (this.$routeParams.uid) {
this.uid = $routeParams.uid;
const loader = new FolderPageLoader(this.backendSrv);
- loader.load(this, this.uid, 'manage-folder-dashboards').then(folder => {
+ loader.load(this, this.uid, 'manage-folder-dashboards').then((folder: any) => {
const url = locationUtil.stripBaseFromUrl(folder.url);
if (url !== $location.path()) {
diff --git a/public/app/features/folders/services/FolderPageLoader.ts b/public/app/features/folders/services/FolderPageLoader.ts
index f0b6a61c4fc..3f353d0f63c 100644
--- a/public/app/features/folders/services/FolderPageLoader.ts
+++ b/public/app/features/folders/services/FolderPageLoader.ts
@@ -1,7 +1,9 @@
-export class FolderPageLoader {
- constructor(private backendSrv) {}
+import { BackendSrv } from 'app/core/services/backend_srv';
- load(ctrl, uid, activeChildId) {
+export class FolderPageLoader {
+ constructor(private backendSrv: BackendSrv) {}
+
+ load(ctrl: any, uid: any, activeChildId: any) {
ctrl.navModel = {
main: {
icon: 'fa fa-folder-open',
@@ -36,20 +38,20 @@ export class FolderPageLoader {
},
};
- return this.backendSrv.getFolderByUid(uid).then(folder => {
+ return this.backendSrv.getFolderByUid(uid).then((folder: any) => {
ctrl.folderId = folder.id;
const folderTitle = folder.title;
const folderUrl = folder.url;
ctrl.navModel.main.text = folderTitle;
- const dashTab = ctrl.navModel.main.children.find(child => child.id === 'manage-folder-dashboards');
+ const dashTab = ctrl.navModel.main.children.find((child: any) => child.id === 'manage-folder-dashboards');
dashTab.url = folderUrl;
if (folder.canAdmin) {
- const permTab = ctrl.navModel.main.children.find(child => child.id === 'manage-folder-permissions');
+ const permTab = ctrl.navModel.main.children.find((child: any) => child.id === 'manage-folder-permissions');
permTab.url = folderUrl + '/permissions';
- const settingsTab = ctrl.navModel.main.children.find(child => child.id === 'manage-folder-settings');
+ const settingsTab = ctrl.navModel.main.children.find((child: any) => child.id === 'manage-folder-settings');
settingsTab.url = folderUrl + '/settings';
} else {
ctrl.navModel.main.children = [dashTab];
diff --git a/public/app/features/manage-dashboards/DashboardImportCtrl.test.ts b/public/app/features/manage-dashboards/DashboardImportCtrl.test.ts
index 5a47972e316..1664afa1fe1 100644
--- a/public/app/features/manage-dashboards/DashboardImportCtrl.test.ts
+++ b/public/app/features/manage-dashboards/DashboardImportCtrl.test.ts
@@ -4,9 +4,9 @@ import config from 'app/core/config';
describe('DashboardImportCtrl', () => {
const ctx: any = {};
- let navModelSrv;
- let backendSrv;
- let validationSrv;
+ let navModelSrv: any;
+ let backendSrv: any;
+ let validationSrv: any;
beforeEach(() => {
navModelSrv = {
@@ -23,7 +23,7 @@ describe('DashboardImportCtrl', () => {
validateNewDashboardName: jest.fn().mockReturnValue(Promise.resolve()),
};
- ctx.ctrl = new DashboardImportCtrl(backendSrv, validationSrv, navModelSrv, {}, {});
+ ctx.ctrl = new DashboardImportCtrl(backendSrv, validationSrv, navModelSrv, {} as any, {} as any);
});
describe('when uploading json', () => {
diff --git a/public/app/features/manage-dashboards/DashboardImportCtrl.ts b/public/app/features/manage-dashboards/DashboardImportCtrl.ts
index d2c6584d13d..48bfda7de11 100644
--- a/public/app/features/manage-dashboards/DashboardImportCtrl.ts
+++ b/public/app/features/manage-dashboards/DashboardImportCtrl.ts
@@ -1,6 +1,10 @@
import _ from 'lodash';
import config from 'app/core/config';
import locationUtil from 'app/core/utils/location_util';
+import { BackendSrv } from '@grafana/runtime';
+import { ValidationSrv } from './services/ValidationSrv';
+import { NavModelSrv } from 'app/core/core';
+import { ILocationService } from 'angular';
export class DashboardImportCtrl {
navModel: any;
@@ -27,7 +31,13 @@ export class DashboardImportCtrl {
isValidFolderSelection: boolean;
/** @ngInject */
- constructor(private backendSrv, private validationSrv, navModelSrv, private $location, $routeParams) {
+ constructor(
+ private backendSrv: BackendSrv,
+ private validationSrv: ValidationSrv,
+ navModelSrv: NavModelSrv,
+ private $location: ILocationService,
+ $routeParams: any
+ ) {
this.navModel = navModelSrv.getNav('create', 'import');
this.step = 1;
@@ -45,7 +55,7 @@ export class DashboardImportCtrl {
}
}
- onUpload(dash) {
+ onUpload(dash: any) {
this.dash = dash;
this.dash.id = null;
this.step = 2;
@@ -53,7 +63,7 @@ export class DashboardImportCtrl {
if (this.dash.__inputs) {
for (const input of this.dash.__inputs) {
- const inputModel = {
+ const inputModel: any = {
name: input.name,
label: input.label,
info: input.description,
@@ -78,7 +88,7 @@ export class DashboardImportCtrl {
this.uidChanged(true);
}
- setDatasourceOptions(input, inputModel) {
+ setDatasourceOptions(input: { pluginId: string; pluginName: string }, inputModel: any) {
const sources = _.filter(config.datasources, val => {
return val.type === input.pluginId;
});
@@ -123,7 +133,7 @@ export class DashboardImportCtrl {
});
}
- uidChanged(initial) {
+ uidChanged(initial: boolean) {
this.uidExists = false;
this.hasUidValidationError = false;
@@ -132,20 +142,21 @@ export class DashboardImportCtrl {
}
this.backendSrv
+ // @ts-ignore
.getDashboardByUid(this.dash.uid)
- .then(res => {
+ .then((res: any) => {
this.uidExists = true;
this.hasUidValidationError = true;
this.uidValidationError = `Dashboard named '${res.dashboard.title}' in folder '${
res.meta.folderTitle
}' has the same uid`;
})
- .catch(err => {
+ .catch((err: any) => {
err.isHandled = true;
});
}
- onFolderChange(folder) {
+ onFolderChange(folder: any) {
this.folderId = folder.id;
this.titleChanged();
}
diff --git a/public/app/features/manage-dashboards/DashboardListCtrl.ts b/public/app/features/manage-dashboards/DashboardListCtrl.ts
index b5f5cb8e0dc..7e8142c8390 100644
--- a/public/app/features/manage-dashboards/DashboardListCtrl.ts
+++ b/public/app/features/manage-dashboards/DashboardListCtrl.ts
@@ -1,8 +1,10 @@
+import { NavModelSrv } from 'app/core/core';
+
export class DashboardListCtrl {
navModel: any;
/** @ngInject */
- constructor(navModelSrv) {
+ constructor(navModelSrv: NavModelSrv) {
this.navModel = navModelSrv.getNav('dashboards', 'manage-dashboards', 0);
}
}
diff --git a/public/app/features/manage-dashboards/SnapshotListCtrl.ts b/public/app/features/manage-dashboards/SnapshotListCtrl.ts
index 4d6dc006d47..4ccb629412c 100644
--- a/public/app/features/manage-dashboards/SnapshotListCtrl.ts
+++ b/public/app/features/manage-dashboards/SnapshotListCtrl.ts
@@ -1,22 +1,30 @@
import _ from 'lodash';
+import { NavModelSrv } from 'app/core/core';
+import { ILocationService } from 'angular';
+import { BackendSrv } from '@grafana/runtime';
export class SnapshotListCtrl {
navModel: any;
snapshots: any;
/** @ngInject */
- constructor(private $rootScope, private backendSrv, navModelSrv, private $location) {
+ constructor(
+ private $rootScope: any,
+ private backendSrv: BackendSrv,
+ navModelSrv: NavModelSrv,
+ private $location: ILocationService
+ ) {
this.navModel = navModelSrv.getNav('dashboards', 'snapshots', 0);
- this.backendSrv.get('/api/dashboard/snapshots').then(result => {
+ this.backendSrv.get('/api/dashboard/snapshots').then((result: any) => {
const baseUrl = this.$location.absUrl().replace($location.url(), '');
- this.snapshots = result.map(snapshot => ({
+ this.snapshots = result.map((snapshot: any) => ({
...snapshot,
url: snapshot.externalUrl || `${baseUrl}/dashboard/snapshot/${snapshot.key}`,
}));
});
}
- removeSnapshotConfirmed(snapshot) {
+ removeSnapshotConfirmed(snapshot: any) {
_.remove(this.snapshots, { key: snapshot.key });
this.backendSrv.delete('/api/snapshots/' + snapshot.key).then(
() => {},
@@ -26,7 +34,7 @@ export class SnapshotListCtrl {
);
}
- removeSnapshot(snapshot) {
+ removeSnapshot(snapshot: any) {
this.$rootScope.appEvent('confirm-modal', {
title: 'Delete',
text: 'Are you sure you want to delete snapshot ' + snapshot.name + '?',
diff --git a/public/app/features/manage-dashboards/components/MoveToFolderModal/MoveToFolderCtrl.ts b/public/app/features/manage-dashboards/components/MoveToFolderModal/MoveToFolderCtrl.ts
index c183f38d92a..543a58b848d 100644
--- a/public/app/features/manage-dashboards/components/MoveToFolderModal/MoveToFolderCtrl.ts
+++ b/public/app/features/manage-dashboards/components/MoveToFolderModal/MoveToFolderCtrl.ts
@@ -1,5 +1,6 @@
import coreModule from 'app/core/core_module';
import appEvents from 'app/core/app_events';
+import { BackendSrv } from 'app/core/services/backend_srv';
export class MoveToFolderCtrl {
dashboards: any;
@@ -9,14 +10,14 @@ export class MoveToFolderCtrl {
isValidFolderSelection = true;
/** @ngInject */
- constructor(private backendSrv) {}
+ constructor(private backendSrv: BackendSrv) {}
- onFolderChange(folder) {
+ onFolderChange(folder: any) {
this.folder = folder;
}
save() {
- return this.backendSrv.moveDashboards(this.dashboards, this.folder).then(result => {
+ return this.backendSrv.moveDashboards(this.dashboards, this.folder).then((result: any) => {
if (result.successCount > 0) {
const header = `Dashboard${result.successCount === 1 ? '' : 's'} Moved`;
const msg = `${result.successCount} dashboard${result.successCount === 1 ? '' : 's'} moved to ${
diff --git a/public/app/features/manage-dashboards/components/UploadDashboard/uploadDashboardDirective.ts b/public/app/features/manage-dashboards/components/UploadDashboard/uploadDashboardDirective.ts
index 58ad4d8aac9..6dae44598a2 100644
--- a/public/app/features/manage-dashboards/components/UploadDashboard/uploadDashboardDirective.ts
+++ b/public/app/features/manage-dashboards/components/UploadDashboard/uploadDashboardDirective.ts
@@ -1,6 +1,6 @@
import coreModule from 'app/core/core_module';
import appEvents from 'app/core/app_events';
-import angular from 'angular';
+import angular, { ILocationService } from 'angular';
const template = `
@@ -10,7 +10,7 @@ const template = `
`;
/** @ngInject */
-export function uploadDashboardDirective(timer, $location) {
+export function uploadDashboardDirective(timer: any, $location: ILocationService) {
return {
restrict: 'E',
template: template,
@@ -18,14 +18,14 @@ export function uploadDashboardDirective(timer, $location) {
onUpload: '&',
btnText: '@?',
},
- link: (scope, elem) => {
+ link: (scope: any, elem: JQuery) => {
scope.btnText = angular.isDefined(scope.btnText) ? scope.btnText : 'Upload .json file';
- function file_selected(evt) {
+ function file_selected(evt: any) {
const files = evt.target.files; // FileList object
const readerOnload = () => {
- return e => {
- let dash;
+ return (e: any) => {
+ let dash: any;
try {
dash = JSON.parse(e.target.result);
} catch (err) {
@@ -35,7 +35,7 @@ export function uploadDashboardDirective(timer, $location) {
}
scope.$apply(() => {
- scope.onUpload({ dash: dash });
+ scope.onUpload({ dash });
});
};
};
diff --git a/public/app/features/manage-dashboards/services/ValidationSrv.ts b/public/app/features/manage-dashboards/services/ValidationSrv.ts
index 3e8306039d7..506dc893941 100644
--- a/public/app/features/manage-dashboards/services/ValidationSrv.ts
+++ b/public/app/features/manage-dashboards/services/ValidationSrv.ts
@@ -1,4 +1,6 @@
import coreModule from 'app/core/core_module';
+import { IQService } from 'angular';
+import { BackendSrv } from 'app/core/services/backend_srv';
const hitTypes = {
FOLDER: 'dash-folder',
@@ -9,17 +11,17 @@ export class ValidationSrv {
rootName = 'general';
/** @ngInject */
- constructor(private $q, private backendSrv) {}
+ constructor(private $q: IQService, private backendSrv: BackendSrv) {}
- validateNewDashboardName(folderId, name) {
+ validateNewDashboardName(folderId: any, name: string) {
return this.validate(folderId, name, 'A dashboard in this folder with the same name already exists');
}
- validateNewFolderName(name) {
+ validateNewFolderName(name: string) {
return this.validate(0, name, 'A folder or dashboard in the general folder with the same name already exists');
}
- private validate(folderId, name, existingErrorMessage) {
+ private validate(folderId: any, name: string, existingErrorMessage: string) {
name = (name || '').trim();
const nameLowerCased = name.toLowerCase();
@@ -44,7 +46,7 @@ export class ValidationSrv {
promises.push(this.backendSrv.search({ type: hitTypes.DASHBOARD, folderIds: [folderId], query: name }));
this.$q.all(promises).then(res => {
- let hits = [];
+ let hits: any[] = [];
if (res.length > 0 && res[0].length > 0) {
hits = res[0];
diff --git a/public/app/features/org/NewOrgCtrl.ts b/public/app/features/org/NewOrgCtrl.ts
index 46c12b1d5d5..5d1a42c455e 100644
--- a/public/app/features/org/NewOrgCtrl.ts
+++ b/public/app/features/org/NewOrgCtrl.ts
@@ -1,14 +1,16 @@
import angular from 'angular';
import config from 'app/core/config';
+import { BackendSrv } from 'app/core/services/backend_srv';
+import { NavModelSrv } from 'app/core/core';
export class NewOrgCtrl {
/** @ngInject */
- constructor($scope, $http, backendSrv, navModelSrv) {
+ constructor($scope: any, $http: any, backendSrv: BackendSrv, navModelSrv: NavModelSrv) {
$scope.navModel = navModelSrv.getNav('admin', 'global-orgs', 0);
$scope.newOrg = { name: '' };
$scope.createOrg = () => {
- backendSrv.post('/api/orgs/', $scope.newOrg).then(result => {
+ backendSrv.post('/api/orgs/', $scope.newOrg).then((result: any) => {
backendSrv.post('/api/user/using/' + result.orgId).then(() => {
window.location.href = config.appSubUrl + '/org';
});
diff --git a/public/app/features/org/OrgDetailsPage.tsx b/public/app/features/org/OrgDetailsPage.tsx
index cc995501f98..ae51e683719 100644
--- a/public/app/features/org/OrgDetailsPage.tsx
+++ b/public/app/features/org/OrgDetailsPage.tsx
@@ -22,7 +22,7 @@ export class OrgDetailsPage extends PureComponent {
await this.props.loadOrganization();
}
- onOrgNameChange = name => {
+ onOrgNameChange = (name: string) => {
this.props.setOrganizationName(name);
};
diff --git a/public/app/features/org/SelectOrgCtrl.ts b/public/app/features/org/SelectOrgCtrl.ts
index cd5166771ac..5d56baf3152 100644
--- a/public/app/features/org/SelectOrgCtrl.ts
+++ b/public/app/features/org/SelectOrgCtrl.ts
@@ -1,9 +1,10 @@
import angular from 'angular';
import config from 'app/core/config';
+import { BackendSrv } from 'app/core/services/backend_srv';
export class SelectOrgCtrl {
/** @ngInject */
- constructor($scope, backendSrv, contextSrv) {
+ constructor($scope: any, backendSrv: BackendSrv, contextSrv: any) {
contextSrv.sidemenu = false;
$scope.navModel = {
@@ -19,12 +20,12 @@ export class SelectOrgCtrl {
};
$scope.getUserOrgs = () => {
- backendSrv.get('/api/user/orgs').then(orgs => {
+ backendSrv.get('/api/user/orgs').then((orgs: any) => {
$scope.orgs = orgs;
});
};
- $scope.setUsingOrg = org => {
+ $scope.setUsingOrg = (org: any) => {
backendSrv.post('/api/user/using/' + org.orgId).then(() => {
window.location.href = config.appSubUrl + '/';
});
diff --git a/public/app/features/org/UserInviteCtrl.ts b/public/app/features/org/UserInviteCtrl.ts
index 9f3b641035a..d86a8716a3d 100644
--- a/public/app/features/org/UserInviteCtrl.ts
+++ b/public/app/features/org/UserInviteCtrl.ts
@@ -1,4 +1,7 @@
import coreModule from 'app/core/core_module';
+import { BackendSrv } from 'app/core/services/backend_srv';
+import { NavModelSrv } from 'app/core/core';
+import { ILocationService } from 'angular';
export class UserInviteCtrl {
navModel: any;
@@ -6,7 +9,7 @@ export class UserInviteCtrl {
inviteForm: any;
/** @ngInject */
- constructor(private backendSrv, navModelSrv, private $location) {
+ constructor(private backendSrv: BackendSrv, navModelSrv: NavModelSrv, private $location: ILocationService) {
this.navModel = navModelSrv.getNav('cfg', 'users', 0);
this.invite = {
diff --git a/public/app/features/panel/GeneralTabCtrl.ts b/public/app/features/panel/GeneralTabCtrl.ts
index 9db13713ce1..a97e2536b3a 100644
--- a/public/app/features/panel/GeneralTabCtrl.ts
+++ b/public/app/features/panel/GeneralTabCtrl.ts
@@ -1,6 +1,6 @@
import coreModule from 'app/core/core_module';
-const obj2string = obj => {
+const obj2string = (obj: any) => {
return Object.keys(obj)
.reduce((acc, curr) => acc.concat(curr + '=' + obj[curr]), [])
.join();
@@ -10,7 +10,7 @@ export class GeneralTabCtrl {
panelCtrl: any;
/** @ngInject */
- constructor($scope) {
+ constructor($scope: any) {
this.panelCtrl = $scope.ctrl;
const updatePanel = () => {
@@ -18,7 +18,7 @@ export class GeneralTabCtrl {
this.panelCtrl.panel.render();
};
- const generateValueFromPanel = scope => {
+ const generateValueFromPanel = (scope: any) => {
const { panel } = scope.ctrl;
const panelPropsToTrack = ['title', 'description', 'transparent', 'repeat', 'repeatDirection', 'minSpan'];
const panelPropsString = panelPropsToTrack
diff --git a/public/app/features/panel/panel_directive.ts b/public/app/features/panel/panel_directive.ts
index 8cfc627b424..16126bb809f 100644
--- a/public/app/features/panel/panel_directive.ts
+++ b/public/app/features/panel/panel_directive.ts
@@ -1,6 +1,8 @@
import angular from 'angular';
import $ from 'jquery';
+// @ts-ignore
import Drop from 'tether-drop';
+// @ts-ignore
import baron from 'baron';
const module = angular.module('grafana.directives');
@@ -38,14 +40,14 @@ module.directive('grafanaPanel', ($rootScope, $document, $timeout) => {
const panelContent = elem.find('.panel-content');
const cornerInfoElem = elem.find('.panel-info-corner');
const ctrl = scope.ctrl;
- let infoDrop;
- let panelScrollbar;
+ let infoDrop: any;
+ let panelScrollbar: any;
// the reason for handling these classes this way is for performance
// limit the watchers on panels etc
let transparentLastState = false;
let lastHasAlertRule = false;
- let lastAlertState;
+ let lastAlertState: boolean;
let hasAlertRule;
function mouseEnter() {
diff --git a/public/app/features/panel/panel_editor_tab.ts b/public/app/features/panel/panel_editor_tab.ts
index 52d427c54bf..3a66d8d9f74 100644
--- a/public/app/features/panel/panel_editor_tab.ts
+++ b/public/app/features/panel/panel_editor_tab.ts
@@ -1,16 +1,16 @@
import angular from 'angular';
const directiveModule = angular.module('grafana.directives');
-const directiveCache = {};
+const directiveCache: any = {};
/** @ngInject */
-function panelEditorTab(dynamicDirectiveSrv) {
+function panelEditorTab(dynamicDirectiveSrv: any) {
return dynamicDirectiveSrv.create({
scope: {
ctrl: '=',
editorTab: '=',
},
- directive: scope => {
+ directive: (scope: any) => {
const pluginId = scope.ctrl.pluginId;
const tabName = scope.editorTab.title
.toLowerCase()
diff --git a/public/app/features/panel/panel_header.ts b/public/app/features/panel/panel_header.ts
index 26139e23ac8..c24154c11b6 100644
--- a/public/app/features/panel/panel_header.ts
+++ b/public/app/features/panel/panel_header.ts
@@ -1,4 +1,5 @@
import { coreModule } from 'app/core/core';
+import { AngularPanelMenuItem } from '@grafana/ui';
const template = `
@@ -12,7 +13,7 @@ const template = `
{{ctrl.timeInfo}}
`;
-function renderMenuItem(item, ctrl) {
+function renderMenuItem(item: AngularPanelMenuItem, ctrl: any) {
let html = '';
let listItemClass = '';
@@ -54,7 +55,7 @@ function renderMenuItem(item, ctrl) {
return html;
}
-function createMenuTemplate(ctrl) {
+function createMenuTemplate(ctrl: any) {
let html = '';
for (const item of ctrl.getMenu()) {
@@ -65,16 +66,16 @@ function createMenuTemplate(ctrl) {
}
/** @ngInject */
-function panelHeader($compile) {
+function panelHeader($compile: any) {
return {
restrict: 'E',
template: template,
- link: (scope, elem, attrs) => {
+ link: (scope: any, elem: any, attrs: any) => {
const menuElem = elem.find('.panel-menu');
- let menuScope;
- let isDragged;
+ let menuScope: any;
+ let isDragged: boolean;
- elem.click(evt => {
+ elem.click((evt: any) => {
const targetClass = evt.target.className;
// remove existing scope
@@ -92,20 +93,20 @@ function panelHeader($compile) {
}
});
- function togglePanelMenu(e) {
+ function togglePanelMenu(e: any) {
if (!isDragged) {
e.stopPropagation();
elem.find('[data-toggle=dropdown]').dropdown('toggle');
}
}
- let mouseX, mouseY;
- elem.mousedown(e => {
+ let mouseX: number, mouseY: number;
+ elem.mousedown((e: any) => {
mouseX = e.pageX;
mouseY = e.pageY;
});
- elem.mouseup(e => {
+ elem.mouseup((e: any) => {
if (mouseX === e.pageX && mouseY === e.pageY) {
isDragged = false;
} else {
diff --git a/public/app/features/panel/panellinks/link_srv.ts b/public/app/features/panel/panellinks/link_srv.ts
index dc85e13d7fe..a9d8c399fe0 100644
--- a/public/app/features/panel/panellinks/link_srv.ts
+++ b/public/app/features/panel/panellinks/link_srv.ts
@@ -55,6 +55,7 @@ interface LinkModel {
interface LinkDataPoint {
datapoint: TimeSeriesValue[];
seriesName: string;
+ [key: number]: any;
}
export interface LinkService {
getDataLinkUIModel: (link: DataLink, scopedVars: ScopedVars, dataPoint?: LinkDataPoint) => LinkModel;
diff --git a/public/app/features/panel/panellinks/module.ts b/public/app/features/panel/panellinks/module.ts
index 5fdb30748e5..06ced91eb1d 100644
--- a/public/app/features/panel/panellinks/module.ts
+++ b/public/app/features/panel/panellinks/module.ts
@@ -1,6 +1,7 @@
import angular from 'angular';
import _ from 'lodash';
import './link_srv';
+import { BackendSrv } from 'app/core/services/backend_srv';
function panelLinksEditor() {
return {
@@ -16,7 +17,7 @@ function panelLinksEditor() {
export class PanelLinksEditorCtrl {
/** @ngInject */
- constructor($scope, backendSrv) {
+ constructor($scope: any, backendSrv: BackendSrv) {
$scope.panel.links = $scope.panel.links || [];
$scope.addLink = () => {
@@ -25,7 +26,7 @@ export class PanelLinksEditorCtrl {
});
};
- $scope.searchDashboards = (queryStr, callback) => {
+ $scope.searchDashboards = (queryStr: string, callback: Function) => {
backendSrv.search({ query: queryStr }).then(hits => {
const dashboards = _.map(hits, dash => {
return dash.title;
@@ -35,7 +36,7 @@ export class PanelLinksEditorCtrl {
});
};
- $scope.dashboardChanged = link => {
+ $scope.dashboardChanged = (link: any) => {
backendSrv.search({ query: link.dashboard }).then(hits => {
const dashboard: any = _.find(hits, { title: link.dashboard });
if (dashboard) {
@@ -50,7 +51,7 @@ export class PanelLinksEditorCtrl {
});
};
- $scope.deleteLink = link => {
+ $scope.deleteLink = (link: any) => {
$scope.panel.links = _.without($scope.panel.links, link);
};
}
diff --git a/public/app/features/panel/query_ctrl.ts b/public/app/features/panel/query_ctrl.ts
index 371d2852659..86dac19d9d2 100644
--- a/public/app/features/panel/query_ctrl.ts
+++ b/public/app/features/panel/query_ctrl.ts
@@ -1,4 +1,5 @@
import _ from 'lodash';
+import { auto } from 'angular';
export class QueryCtrl {
target: any;
@@ -9,7 +10,7 @@ export class QueryCtrl {
error: string;
isLastQuery: boolean;
- constructor(public $scope, public $injector) {
+ constructor(public $scope: any, public $injector: auto.IInjectorService) {
this.panel = this.panelCtrl.panel;
this.isLastQuery = _.indexOf(this.panel.targets, this.target) === this.panel.targets.length - 1;
}
diff --git a/public/app/features/panel/repeat_option.ts b/public/app/features/panel/repeat_option.ts
index 4e04a7b3ecc..addb241bcd5 100644
--- a/public/app/features/panel/repeat_option.ts
+++ b/public/app/features/panel/repeat_option.ts
@@ -1,5 +1,5 @@
import { coreModule } from 'app/core/core';
-
+import { VariableSrv } from 'app/features/templating/variable_srv';
const template = `