-
Notifications
You must be signed in to change notification settings - Fork 981
/
Copy pathplugin.ts
111 lines (97 loc) · 3.88 KB
/
plugin.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
* SPDX-License-Identifier: Apache-2.0
*
* The OpenSearch Contributors require contributions made to
* this file be licensed under the Apache-2.0 license or a
* compatible open source license.
*
* Any modifications Copyright OpenSearch Contributors. See
* GitHub history for details.
*/
/*
* Licensed to Elasticsearch B.V. under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch B.V. licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { i18n } from '@osd/i18n';
import { schema } from '@osd/config-schema';
import { Observable } from 'rxjs';
import { UsageCollectionSetup } from 'src/plugins/usage_collection/server';
import {
PluginInitializerContext,
CoreSetup,
CoreStart,
Plugin,
Logger,
} from '../../../core/server';
import {
VISUALIZE_ENABLE_LABS_SETTING,
VISUALIZE_DISABLE_BUCKET_AGG_SETTING,
} from '../common/constants';
import { visualizationSavedObjectType } from './saved_objects';
import { VisualizationsPluginSetup, VisualizationsPluginStart } from './types';
import { registerVisualizationsCollector } from './usage_collector';
export class VisualizationsPlugin
implements Plugin<VisualizationsPluginSetup, VisualizationsPluginStart> {
private readonly logger: Logger;
private readonly config: Observable<{ opensearchDashboards: { index: string } }>;
constructor(initializerContext: PluginInitializerContext) {
this.logger = initializerContext.logger.get();
this.config = initializerContext.config.legacy.globalConfig$;
}
public setup(core: CoreSetup, plugins: { usageCollection?: UsageCollectionSetup }) {
this.logger.debug('visualizations: Setup');
core.savedObjects.registerType(visualizationSavedObjectType);
core.uiSettings.register({
[VISUALIZE_ENABLE_LABS_SETTING]: {
name: i18n.translate('visualizations.advancedSettings.visualizeEnableLabsTitle', {
defaultMessage: 'Enable experimental visualizations',
}),
value: true,
description: i18n.translate('visualizations.advancedSettings.visualizeEnableLabsText', {
defaultMessage: `Allows users to create, view, and edit experimental visualizations. If disabled,
only visualizations that are considered production-ready are available to the user.`,
}),
category: ['visualization'],
schema: schema.boolean(),
},
[VISUALIZE_DISABLE_BUCKET_AGG_SETTING]: {
name: i18n.translate('visualizations.advancedSettings.visualizeDisableBucketAgg', {
defaultMessage: 'Disable visualizations bucket aggregation types',
}),
value: [],
description: i18n.translate(
'visualizations.advancedSettings.visualizeDisableBucketAgg.description',
{
defaultMessage: `A comma-separated list of bucket aggregations' names. e.g. significant_terms, terms.
Deactivates the specified bucket aggregations from visualizations.`,
}
),
category: ['visualization'],
schema: schema.arrayOf(schema.string()),
},
});
if (plugins.usageCollection) {
registerVisualizationsCollector(plugins.usageCollection, this.config);
}
return {};
}
public start(core: CoreStart) {
this.logger.debug('visualizations: Started');
return {};
}
public stop() {}
}