/
get_inner_angular.ts
76 lines (68 loc) · 2.43 KB
/
get_inner_angular.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// inner angular imports
// these are necessary to bootstrap the local angular.
// They can stay even after NP cutover
import angular from 'angular';
// required for `ngSanitize` angular module
import 'angular-sanitize';
import 'angular-recursion';
import { CoreStart, IUiSettingsClient } from '@kbn/core/public';
import { i18nDirective, i18nFilter, I18nProvider } from './angular/i18n';
import { watchMultiDecorator } from './angular/watch_multi';
import { PaginateDirectiveProvider, PaginateControlsDirectiveProvider} from './paginate/paginate';
import { KbnAccessibleClickProvider, PrivateProvider } from './angular/utils';
const thirdPartyAngularDependencies = ['ngSanitize', 'ui.bootstrap', 'RecursionHelper'];
export function getAngularModule(name: string, core: CoreStart) {
const uiModule = getInnerAngular(name, core);
return uiModule;
}
let initialized = false;
export function getInnerAngular(name = 'kibana/enhanced_table_vis', core: CoreStart) {
if (!initialized) {
createLocalPrivateModule();
createLocalI18nModule();
createLocalConfigModule(core.uiSettings);
createLocalPaginateModule();
initialized = true;
}
return angular
.module(name, [
...thirdPartyAngularDependencies,
'tableVisPaginate',
'tableVisConfig',
'tableVisPrivate',
'tableVisI18n',
])
.config(['$provide',watchMultiDecorator])
.directive('kbnAccessibleClick', KbnAccessibleClickProvider);
}
function createLocalPrivateModule() {
angular.module('tableVisPrivate', []).provider('Private', PrivateProvider);
}
function createLocalConfigModule(uiSettings: IUiSettingsClient) {
angular.module('tableVisConfig', []).provider('tableConfig', function () {
return {
$get: () => ({
get: (value: string) => {
return uiSettings ? uiSettings.get(value) : undefined;
},
// set method is used in agg_table mocha test
set: (key: string, value: string) => {
return uiSettings ? uiSettings.set(key, value) : undefined;
},
}),
};
});
}
function createLocalI18nModule() {
angular
.module('tableVisI18n', [])
.provider('i18n', I18nProvider)
.filter('i18n', i18nFilter)
.directive('i18nId', i18nDirective);
}
function createLocalPaginateModule() {
angular
.module('tableVisPaginate', [])
.directive('paginate', ['$parse','$compile',PaginateDirectiveProvider])
.directive('paginateControls', PaginateControlsDirectiveProvider);
}