[NP] Move visTypeXy plugin (#63449)

* Move vis_type_xy into NP

* Substitute usage in vis_type_vislib

* Disable plugin by default
This commit is contained in:
Daniil Suleiman 2020-04-15 18:03:17 +03:00 committed by GitHub
parent 02bcc8e78b
commit afb48bceca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 34 additions and 94 deletions

2
.github/CODEOWNERS vendored
View file

@ -13,7 +13,7 @@
/src/legacy/core_plugins/kibana/public/local_application_service/ @elastic/kibana-app
/src/legacy/core_plugins/kibana/public/dev_tools/ @elastic/kibana-app
/src/legacy/core_plugins/vis_type_vislib/ @elastic/kibana-app
/src/legacy/core_plugins/vis_type_xy/ @elastic/kibana-app
/src/plugins/vis_type_xy/ @elastic/kibana-app
/src/plugins/kibana_legacy/ @elastic/kibana-app
/src/plugins/timelion/ @elastic/kibana-app
/src/plugins/dashboard/ @elastic/kibana-app

View file

@ -30,6 +30,7 @@ const setupPlugins: Readonly<VisTypeVislibPluginSetupDependencies> = {
expressions: npSetup.plugins.expressions,
visualizations: npSetup.plugins.visualizations,
charts: npSetup.plugins.charts,
visTypeXy: npSetup.plugins.visTypeXy,
};
const startPlugins: Readonly<VisTypeVislibPluginStartDependencies> = {

View file

@ -24,6 +24,7 @@ import {
PluginInitializerContext,
} from 'kibana/public';
import { VisTypeXyPluginSetup } from 'src/plugins/vis_type_xy/public';
import { Plugin as ExpressionsPublicPlugin } from '../../../../plugins/expressions/public';
import { VisualizationsSetup } from '../../../../plugins/visualizations/public';
import { createVisTypeVislibVisFn } from './vis_type_vislib_vis_fn';
@ -39,7 +40,6 @@ import {
createGoalVisTypeDefinition,
} from './vis_type_vislib_vis_types';
import { ChartsPluginSetup } from '../../../../plugins/charts/public';
import { ConfigSchema as VisTypeXyConfigSchema } from '../../vis_type_xy';
import { DataPublicPluginStart } from '../../../../plugins/data/public';
import { setFormatService, setDataActions } from './services';
@ -53,6 +53,7 @@ export interface VisTypeVislibPluginSetupDependencies {
expressions: ReturnType<ExpressionsPublicPlugin['setup']>;
visualizations: VisualizationsSetup;
charts: ChartsPluginSetup;
visTypeXy?: VisTypeXyPluginSetup;
}
/** @internal */
@ -68,7 +69,7 @@ export class VisTypeVislibPlugin implements Plugin<void, void> {
public async setup(
core: VisTypeVislibCoreSetup,
{ expressions, visualizations, charts }: VisTypeVislibPluginSetupDependencies
{ expressions, visualizations, charts, visTypeXy }: VisTypeVislibPluginSetupDependencies
) {
const visualizationDependencies: Readonly<VisTypeVislibDependencies> = {
uiSettings: core.uiSettings,
@ -86,12 +87,8 @@ export class VisTypeVislibPlugin implements Plugin<void, void> {
];
const vislibFns = [createVisTypeVislibVisFn(), createPieVisFn()];
const visTypeXy = core.injectedMetadata.getInjectedVar('visTypeXy') as
| VisTypeXyConfigSchema['visTypeXy']
| undefined;
// if visTypeXy plugin is disabled it's config will be undefined
if (!visTypeXy || !visTypeXy.enabled) {
if (!visTypeXy) {
const convertedTypes: any[] = [];
const convertedFns: any[] = [];

View file

@ -1,56 +0,0 @@
/*
* 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 { resolve } from 'path';
import { Legacy } from 'kibana';
import { LegacyPluginApi, LegacyPluginInitializer } from '../../types';
export interface ConfigSchema {
visTypeXy: {
enabled: boolean;
};
}
const visTypeXyPluginInitializer: LegacyPluginInitializer = ({ Plugin }: LegacyPluginApi) =>
new Plugin({
id: 'visTypeXy',
require: ['kibana', 'elasticsearch', 'visualizations', 'interpreter'],
publicDir: resolve(__dirname, 'public'),
uiExports: {
hacks: [resolve(__dirname, 'public/legacy')],
injectDefaultVars(server): ConfigSchema {
const config = server.config();
return {
visTypeXy: {
enabled: config.get('visTypeXy.enabled') as boolean,
},
};
},
},
config(Joi: any) {
return Joi.object({
enabled: Joi.boolean().default(false),
}).default();
},
} as Legacy.PluginSpecOptions);
// eslint-disable-next-line import/no-default-export
export default visTypeXyPluginInitializer;

View file

@ -1,4 +0,0 @@
{
"name": "visTypeXy",
"version": "kibana"
}

View file

@ -22,6 +22,7 @@ import { IScope } from 'angular';
import { UiActionsStart, UiActionsSetup } from 'src/plugins/ui_actions/public';
import { EmbeddableStart, EmbeddableSetup } from 'src/plugins/embeddable/public';
import { createBrowserHistory } from 'history';
import { VisTypeXyPluginSetup } from 'src/plugins/vis_type_xy/public';
import { DashboardStart } from '../../../../plugins/dashboard/public';
import { setSetupServices, setStartServices } from './set_services';
import {
@ -93,6 +94,7 @@ export interface PluginsSetup {
savedObjectsManagement: SavedObjectsManagementPluginSetup;
mapsLegacy: MapsLegacyPluginSetup;
indexPatternManagement: IndexPatternManagementSetup;
visTypeXy?: VisTypeXyPluginSetup;
}
export interface PluginsStart {

View file

@ -0,0 +1,7 @@
{
"id": "visTypeXy",
"version": "kibana",
"server": true,
"ui": true,
"requiredPlugins": ["charts", "expressions", "visualizations"]
}

View file

@ -17,9 +17,11 @@
* under the License.
*/
import { PluginInitializerContext } from '../../../../core/public';
import { PluginInitializerContext } from '../../../core/public';
import { VisTypeXyPlugin as Plugin } from './plugin';
export { VisTypeXyPluginSetup } from './plugin';
export function plugin(initializerContext: PluginInitializerContext) {
return new Plugin(initializerContext);
}

View file

@ -25,18 +25,18 @@ import {
PluginInitializerContext,
} from 'kibana/public';
import { Plugin as ExpressionsPublicPlugin } from '../../../../plugins/expressions/public';
import {
VisualizationsSetup,
VisualizationsStart,
} from '../../../../plugins/visualizations/public';
import { ChartsPluginSetup } from '../../../../plugins/charts/public';
import { Plugin as ExpressionsPublicPlugin } from '../../expressions/public';
import { VisualizationsSetup, VisualizationsStart } from '../../visualizations/public';
import { ChartsPluginSetup } from '../../charts/public';
export interface VisTypeXyDependencies {
uiSettings: IUiSettingsClient;
charts: ChartsPluginSetup;
}
// eslint-disable-next-line @typescript-eslint/no-empty-interface
export interface VisTypeXyPluginSetup {}
/** @internal */
export interface VisTypeXyPluginSetupDependencies {
expressions: ReturnType<ExpressionsPublicPlugin['setup']>;
@ -53,7 +53,7 @@ export interface VisTypeXyPluginStartDependencies {
type VisTypeXyCoreSetup = CoreSetup<VisTypeXyPluginStartDependencies, void>;
/** @internal */
export class VisTypeXyPlugin implements Plugin<void, void> {
export class VisTypeXyPlugin implements Plugin<VisTypeXyPluginSetup, void> {
constructor(public initializerContext: PluginInitializerContext) {}
public async setup(
@ -77,6 +77,8 @@ export class VisTypeXyPlugin implements Plugin<void, void> {
visTypeDefinitions.forEach((vis: any) =>
visualizations.createBaseVisualization(vis(visualizationDependencies))
);
return {};
}
public start(core: CoreStart, deps: VisTypeXyPluginStartDependencies) {

View file

@ -17,24 +17,13 @@
* under the License.
*/
import { npSetup, npStart } from 'ui/new_platform';
import { PluginInitializerContext } from 'kibana/public';
import { schema } from '@kbn/config-schema';
import { plugin } from '.';
import { VisTypeXyPluginSetupDependencies, VisTypeXyPluginStartDependencies } from './plugin';
const setupPlugins: Readonly<VisTypeXyPluginSetupDependencies> = {
expressions: npSetup.plugins.expressions,
visualizations: npSetup.plugins.visualizations,
charts: npSetup.plugins.charts,
export const config = {
schema: schema.object({ enabled: schema.boolean({ defaultValue: false }) }),
};
const startPlugins: Readonly<VisTypeXyPluginStartDependencies> = {
expressions: npStart.plugins.expressions,
visualizations: npStart.plugins.visualizations,
};
const pluginInstance = plugin({} as PluginInitializerContext);
export const setup = pluginInstance.setup(npSetup.core, setupPlugins);
export const start = pluginInstance.start(npStart.core, startPlugins);
export const plugin = () => ({
setup() {},
start() {},
});