mirror of
https://github.com/grafana/grafana.git
synced 2024-11-28 19:54:10 -06:00
93 lines
3.0 KiB
TypeScript
93 lines
3.0 KiB
TypeScript
import { deprecationWarning } from '@grafana/data';
|
|
import {
|
|
config,
|
|
setAngularLoader,
|
|
setLegacyAngularInjector,
|
|
getDataSourceSrv,
|
|
getBackendSrv,
|
|
getTemplateSrv,
|
|
} from '@grafana/runtime';
|
|
import { contextSrv } from 'app/core/core';
|
|
import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';
|
|
import { getTimeSrv } from 'app/features/dashboard/services/TimeSrv';
|
|
import { validationSrv } from 'app/features/manage-dashboards/services/ValidationSrv';
|
|
import { getLinkSrv } from 'app/features/panel/panellinks/link_srv';
|
|
|
|
export async function loadAndInitAngularIfEnabled() {
|
|
if (config.angularSupportEnabled) {
|
|
const { AngularApp } = await import(/* webpackChunkName: "AngularApp" */ './index');
|
|
const app = new AngularApp();
|
|
app.init();
|
|
app.bootstrap();
|
|
} else {
|
|
// Register a dummy loader that does nothing
|
|
setAngularLoader({
|
|
load: (elem, scopeProps, template) => {
|
|
return {
|
|
destroy: () => {},
|
|
digest: () => {},
|
|
getScope: () => {
|
|
return {};
|
|
},
|
|
};
|
|
},
|
|
});
|
|
|
|
// Temporary path to allow access to services exposed directly by the angular injector
|
|
setLegacyAngularInjector({
|
|
get: (key: string) => {
|
|
switch (key) {
|
|
case 'backendSrv': {
|
|
deprecationWarning('getLegacyAngularInjector', 'backendSrv', 'use getBackendSrv() in @grafana/runtime');
|
|
return getBackendSrv();
|
|
}
|
|
|
|
case 'contextSrv': {
|
|
deprecationWarning('getLegacyAngularInjector', 'contextSrv');
|
|
return contextSrv;
|
|
}
|
|
|
|
case 'dashboardSrv': {
|
|
// we do not yet have a public interface for this
|
|
deprecationWarning('getLegacyAngularInjector', 'getDashboardSrv');
|
|
return getDashboardSrv();
|
|
}
|
|
|
|
case 'datasourceSrv': {
|
|
deprecationWarning(
|
|
'getLegacyAngularInjector',
|
|
'datasourceSrv',
|
|
'use getDataSourceSrv() in @grafana/runtime'
|
|
);
|
|
return getDataSourceSrv();
|
|
}
|
|
|
|
case 'linkSrv': {
|
|
// we do not yet have a public interface for this
|
|
deprecationWarning('getLegacyAngularInjector', 'linkSrv');
|
|
return getLinkSrv();
|
|
}
|
|
|
|
case 'validationSrv': {
|
|
// we do not yet have a public interface for this
|
|
deprecationWarning('getLegacyAngularInjector', 'validationSrv');
|
|
return validationSrv;
|
|
}
|
|
|
|
case 'timeSrv': {
|
|
// we do not yet have a public interface for this
|
|
deprecationWarning('getLegacyAngularInjector', 'timeSrv');
|
|
return getTimeSrv();
|
|
}
|
|
|
|
case 'templateSrv': {
|
|
deprecationWarning('getLegacyAngularInjector', 'templateSrv', 'use getTemplateSrv() in @grafana/runtime');
|
|
return getTemplateSrv();
|
|
}
|
|
}
|
|
throw 'Angular is disabled. Unable to expose: ' + key;
|
|
},
|
|
} as angular.auto.IInjectorService);
|
|
}
|
|
}
|