visualize embeddable to visualizations plugin (#54840)

This commit is contained in:
Peter Pisljar 2020-01-15 13:53:56 -05:00 committed by GitHub
parent 63ad7a9cb2
commit 297aa7bd23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 200 additions and 191 deletions

View file

@ -61,10 +61,7 @@ export default function(kibana) {
uiExports: {
hacks: ['plugins/kibana/discover', 'plugins/kibana/dev_tools', 'plugins/kibana/visualize'],
savedObjectTypes: [
'plugins/kibana/visualize/saved_visualizations/saved_visualization_register',
'plugins/kibana/dashboard/saved_dashboard/saved_dashboard_register',
],
savedObjectTypes: ['plugins/kibana/dashboard/saved_dashboard/saved_dashboard_register'],
app: {
id: 'kibana',
title: 'Kibana',

View file

@ -65,6 +65,6 @@ export { ensureDefaultIndexPattern } from 'ui/legacy_compat';
export { unhashUrl } from '../../../../../plugins/kibana_utils/public';
export { IInjector } from 'ui/chrome';
export { SavedObjectLoader } from 'ui/saved_objects';
export { VISUALIZE_EMBEDDABLE_TYPE } from '../visualize_embeddable';
export { VISUALIZE_EMBEDDABLE_TYPE } from '../../../visualizations/public/embeddable';
export { registerTimefilterWithGlobalStateFactory } from 'ui/timefilter/setup_router';
export { absoluteToParsedUrl } from 'ui/url/absolute_to_parsed_url';

View file

@ -18,7 +18,6 @@
// Visualize styles
@import './visualize/index';
@import './visualize_embeddable/index';
// Has to come after visualize because of some
// bad cascading in the Editor layout
@import 'src/legacy/ui/public/vis/index';

View file

@ -72,6 +72,5 @@ export { VisType } from 'ui/vis';
export { wrapInI18nContext } from 'ui/i18n';
export { DashboardConstants } from '../dashboard/np_ready/dashboard_constants';
export { VisSavedObject } from '../visualize_embeddable/visualize_embeddable';
export { VISUALIZE_EMBEDDABLE_TYPE } from '../visualize_embeddable';
export { VisualizeEmbeddableFactory } from '../visualize_embeddable/visualize_embeddable_factory';
export { VisSavedObject } from '../../../visualizations/public/embeddable/visualize_embeddable';
export { VISUALIZE_EMBEDDABLE_TYPE } from '../../../visualizations/public/embeddable';

View file

@ -27,6 +27,9 @@ import {
SavedObjectsClientContract,
} from 'kibana/public';
// @ts-ignore
import { uiModules } from 'ui/modules';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { DataPublicPluginStart } from '../../../../../plugins/data/public';
import { IEmbeddableStart } from '../../../../../plugins/embeddable/public';
@ -40,14 +43,11 @@ import {
FeatureCatalogueCategory,
HomePublicPluginSetup,
} from '../../../../../plugins/home/public';
import {
defaultEditor,
VisEditorTypesRegistryProvider,
VisualizeEmbeddableFactory,
VISUALIZE_EMBEDDABLE_TYPE,
} from './legacy_imports';
import { defaultEditor, VisEditorTypesRegistryProvider } from './legacy_imports';
import { UsageCollectionSetup } from '../../../../../plugins/usage_collection/public';
import { createSavedVisLoader } from './saved_visualizations/saved_visualizations';
// @ts-ignore
import { savedObjectManagementRegistry } from '../management/saved_object_registry';
export interface LegacyAngularInjectedDependencies {
legacyChrome: any;
@ -113,6 +113,7 @@ export class VisualizePlugin implements Plugin {
indexPatterns: data.indexPatterns,
chrome: contextCore.chrome,
overlays: contextCore.overlays,
visualizations,
});
const deps: VisualizeKibanaServices = {
...angularDependencies,
@ -159,19 +160,32 @@ export class VisualizePlugin implements Plugin {
}
public start(
{ savedObjects: { client: savedObjectsClient } }: CoreStart,
core: CoreStart,
{ embeddables, navigation, data, share, visualizations }: VisualizePluginStartDependencies
) {
this.startDependencies = {
data,
embeddables,
navigation,
savedObjectsClient,
savedObjectsClient: core.savedObjects.client,
share,
visualizations,
};
const embeddableFactory = new VisualizeEmbeddableFactory(visualizations.types);
embeddables.registerEmbeddableFactory(VISUALIZE_EMBEDDABLE_TYPE, embeddableFactory);
const savedVisualizations = createSavedVisLoader({
savedObjectsClient: core.savedObjects.client,
indexPatterns: data.indexPatterns,
chrome: core.chrome,
overlays: core.overlays,
visualizations,
});
// TODO: remove once savedobjectregistry is refactored
savedObjectManagementRegistry.register({
service: 'savedVisualizations',
title: 'visualizations',
});
uiModules.get('app/visualize').service('savedVisualizations', () => savedVisualizations);
}
}

View file

@ -34,7 +34,7 @@ import { IIndexPattern } from '../../../../../../plugins/data/public';
import { VisSavedObject } from '../legacy_imports';
import { createSavedSearchesService } from '../../discover';
import { VisualizeConstants } from '..';
import { VisualizeConstants } from '../np_ready/visualize_constants';
async function _afterEsResp(savedVis: VisSavedObject, services: any) {
await _getLinkedSavedSearch(savedVis, services);

View file

@ -18,7 +18,7 @@
*/
import { extractReferences, injectReferences } from './saved_visualization_references';
import { VisSavedObject } from '../../visualize_embeddable/visualize_embeddable';
import { VisSavedObject } from '../../../../visualizations/public/embeddable/visualize_embeddable';
describe('extractReferences', () => {
test('extracts nothing if savedSearchId is empty', () => {

View file

@ -17,7 +17,7 @@
* under the License.
*/
import { SavedObjectAttributes, SavedObjectReference } from 'kibana/server';
import { VisSavedObject } from '../../visualize_embeddable/visualize_embeddable';
import { VisSavedObject } from '../../../../visualizations/public/embeddable/visualize_embeddable';
export function extractReferences({
attributes,

View file

@ -1,43 +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 { npStart } from 'ui/new_platform';
// @ts-ignore
import { uiModules } from 'ui/modules';
// @ts-ignore
import { savedObjectManagementRegistry } from '../../management/saved_object_registry';
import './saved_visualizations';
import { createSavedVisLoader } from './saved_visualizations';
const services = {
savedObjectsClient: npStart.core.savedObjects.client,
indexPatterns: npStart.plugins.data.indexPatterns,
chrome: npStart.core.chrome,
overlays: npStart.core.overlays,
};
const savedObjectLoaderVisualize = createSavedVisLoader(services);
// Register this service with the saved object registry so it can be
// edited by the object editor.
savedObjectManagementRegistry.register({
service: 'savedVisualizations',
title: 'visualizations',
});
uiModules.get('app/visualize').service('savedVisualizations', () => savedObjectLoaderVisualize);

View file

@ -19,14 +19,18 @@
import { SavedObjectLoader } from 'ui/saved_objects';
import { SavedObjectKibanaServices } from 'ui/saved_objects/types';
import { start as visualizations } from '../../../../visualizations/public/np_ready/public/legacy';
// @ts-ignore
import { findListItems } from './find_list_items';
import { createSavedVisClass } from './_saved_vis';
import { createVisualizeEditUrl } from '..';
import { createVisualizeEditUrl } from '../np_ready/visualize_constants';
import { VisualizationsStart } from '../../../../visualizations/public/np_ready/public';
export function createSavedVisLoader(services: SavedObjectKibanaServices) {
const { savedObjectsClient } = services;
interface SavedObjectKibanaServicesWithVisualizations extends SavedObjectKibanaServices {
visualizations: VisualizationsStart;
}
export function createSavedVisLoader(services: SavedObjectKibanaServicesWithVisualizations) {
const { savedObjectsClient, visualizations } = services;
class SavedObjectLoaderVisualize extends SavedObjectLoader {
mapHitSource = (source: Record<string, any>, id: string) => {

View file

@ -26,7 +26,7 @@ export const visualizations: LegacyPluginInitializer = kibana =>
publicDir: resolve(__dirname, 'public'),
require: [],
uiExports: {
interpreter: ['plugins/visualizations/expressions/boot'],
styleSheetPaths: resolve(__dirname, 'public/index.scss'),
},
});

View file

@ -29,14 +29,14 @@ export function DisabledLabVisualization({ title }: { title: string }) {
/>
<div className="kuiVerticalRhythm">
<FormattedMessage
id="kbn.visualize.disabledLabVisualizationTitle"
id="visualizations.disabledLabVisualizationTitle"
defaultMessage="{title} is a lab visualization."
values={{ title: <em className="visDisabledLabVisualization__title">{title}</em> }}
/>
</div>
<div className="kuiVerticalRhythm">
<FormattedMessage
id="kbn.visualize.disabledLabVisualizationMessage"
id="visualizations.disabledLabVisualizationMessage"
defaultMessage="Please turn on lab-mode in the advanced settings to see lab visualizations."
/>
</div>

View file

@ -17,10 +17,9 @@
* under the License.
*/
import { npStart } from 'ui/new_platform';
import { VisSavedObject } from './visualize_embeddable';
import { indexPatterns, IIndexPattern } from '../../../../../plugins/data/public';
import { getUISettings, getSavedObjects } from '../np_ready/public/services';
export async function getIndexPattern(
savedVis: VisSavedObject
@ -29,8 +28,8 @@ export async function getIndexPattern(
return savedVis.vis.indexPattern;
}
const savedObjectsClient = npStart.core.savedObjects.client;
const defaultIndex = npStart.core.uiSettings.get('defaultIndex');
const savedObjectsClient = getSavedObjects().client;
const defaultIndex = getUISettings().get('defaultIndex');
if (savedVis.vis.params.index_pattern) {
const indexPatternObjects = await savedObjectsClient.find({

View file

@ -47,7 +47,7 @@ import {
APPLY_FILTER_TRIGGER,
} from '../../../../../plugins/embeddable/public';
import { dispatchRenderComplete } from '../../../../../plugins/kibana_utils/public';
import { SavedSearch } from '../discover/np_ready/types';
import { SavedSearch } from '../../../kibana/public/discover/np_ready/types';
const getKeys = <T extends {}>(o: T): Array<keyof T> => Object.keys(o) as Array<keyof T>;

View file

@ -17,26 +17,9 @@
* under the License.
*/
import 'uiExports/contextMenuActions';
import 'uiExports/devTools';
import 'uiExports/docViews';
import 'uiExports/embeddableActions';
import 'uiExports/fieldFormatEditors';
import 'uiExports/fieldFormats';
import 'uiExports/indexManagement';
import 'uiExports/inspectorViews';
import 'uiExports/savedObjectTypes';
import 'uiExports/search';
import 'uiExports/shareContextMenuExtensions';
import 'uiExports/visTypes';
import 'uiExports/visualize';
import { i18n } from '@kbn/i18n';
import chrome from 'ui/chrome';
import { npSetup, npStart } from 'ui/new_platform';
import { Legacy } from 'kibana';
import { SavedObjectAttributes } from 'kibana/server';
import {
@ -45,9 +28,8 @@ import {
Container,
EmbeddableOutput,
} from '../../../../../plugins/embeddable/public';
import { start as visualizations } from '../../../visualizations/public/np_ready/public/legacy';
import { showNewVisModal } from '../visualize';
import { SavedVisualizations } from '../visualize/np_ready/types';
import { showNewVisModal } from '../../../kibana/public/visualize/np_ready/wizard/show_new_vis';
import { SavedVisualizations } from '../../../kibana/public/visualize/np_ready/types';
import { DisabledLabEmbeddable } from './disabled_lab_embeddable';
import { getIndexPattern } from './get_index_pattern';
import {
@ -57,7 +39,15 @@ import {
VisSavedObject,
} from './visualize_embeddable';
import { VISUALIZE_EMBEDDABLE_TYPE } from './constants';
import { TypesStart } from '../../../visualizations/public/np_ready/public/types';
import {
getUISettings,
getCapabilities,
getHttp,
getTypes,
getSavedObjects,
getUsageCollector,
} from '../np_ready/public/services';
interface VisualizationAttributes extends SavedObjectAttributes {
visState: string;
@ -70,60 +60,48 @@ export class VisualizeEmbeddableFactory extends EmbeddableFactory<
VisualizationAttributes
> {
public readonly type = VISUALIZE_EMBEDDABLE_TYPE;
private readonly visTypes: TypesStart;
static async createVisualizeEmbeddableFactory(): Promise<VisualizeEmbeddableFactory> {
return new VisualizeEmbeddableFactory(visualizations.types);
return new VisualizeEmbeddableFactory();
}
constructor(visTypes: TypesStart) {
constructor() {
super({
savedObjectMetaData: {
name: i18n.translate('kbn.visualize.savedObjectName', { defaultMessage: 'Visualization' }),
name: i18n.translate('visualizations.savedObjectName', { defaultMessage: 'Visualization' }),
includeFields: ['visState'],
type: 'visualization',
getIconForSavedObject: savedObject => {
if (!visTypes) {
return 'visualizeApp';
}
return (
visTypes.get(JSON.parse(savedObject.attributes.visState).type).icon || 'visualizeApp'
getTypes().get(JSON.parse(savedObject.attributes.visState).type).icon || 'visualizeApp'
);
},
getTooltipForSavedObject: savedObject => {
if (!visTypes) {
return '';
}
return `${savedObject.attributes.title} (${
visTypes.get(JSON.parse(savedObject.attributes.visState).type).title
getTypes().get(JSON.parse(savedObject.attributes.visState).type).title
})`;
},
showSavedObject: savedObject => {
if (!visTypes) {
return false;
}
const typeName: string = JSON.parse(savedObject.attributes.visState).type;
const visType = visTypes.get(typeName);
const visType = getTypes().get(typeName);
if (!visType) {
return false;
}
if (npStart.core.uiSettings.get('visualize:enableLabs')) {
if (getUISettings().get('visualize:enableLabs')) {
return true;
}
return visType.stage !== 'experimental';
},
},
});
this.visTypes = visTypes;
}
public isEditable() {
return npStart.core.application.capabilities.visualize.save as boolean;
return getCapabilities().visualize.save as boolean;
}
public getDisplayName() {
return i18n.translate('kbn.embeddable.visualizations.displayName', {
return i18n.translate('visualizations.displayName', {
defaultMessage: 'visualization',
});
}
@ -134,16 +112,15 @@ export class VisualizeEmbeddableFactory extends EmbeddableFactory<
parent?: Container
): Promise<VisualizeEmbeddable | ErrorEmbeddable | DisabledLabEmbeddable> {
const $injector = await chrome.dangerouslyGetActiveInjector();
const config = $injector.get<Legacy.KibanaConfig>('config');
const savedVisualizations = $injector.get<SavedVisualizations>('savedVisualizations');
try {
const visId = savedObject.id as string;
const editUrl = visId
? npStart.core.http.basePath.prepend(`/app/kibana${savedVisualizations.urlFor(visId)}`)
? getHttp().basePath.prepend(`/app/kibana${savedVisualizations.urlFor(visId)}`)
: '';
const isLabsEnabled = config.get<boolean>('visualize:enableLabs');
const isLabsEnabled = getUISettings().get<boolean>('visualize:enableLabs');
if (!isLabsEnabled && savedObject.vis.type.stage === 'experimental') {
return new DisabledLabEmbeddable(savedObject.title, input);
@ -191,18 +168,16 @@ export class VisualizeEmbeddableFactory extends EmbeddableFactory<
public async create() {
// TODO: This is a bit of a hack to preserve the original functionality. Ideally we will clean this up
// to allow for in place creation of visualizations without having to navigate away to a new URL.
if (this.visTypes) {
showNewVisModal(
this.visTypes,
{
editorParams: ['addToDashboard'],
},
npStart.core.http.basePath.prepend,
npStart.core.uiSettings,
npStart.core.savedObjects,
npSetup.plugins.usageCollection
);
}
showNewVisModal(
getTypes(),
{
editorParams: ['addToDashboard'],
},
getHttp().basePath.prepend,
getUISettings(),
getSavedObjects(),
getUsageCollector()
);
return undefined;
}
}

View file

@ -1,25 +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 { npSetup } from 'ui/new_platform';
import { visualization as visualizationFunction } from './visualization_function';
import { visualization as visualizationRenderer } from './visualization_renderer';
npSetup.plugins.expressions.registerFunction(visualizationFunction);
npSetup.plugins.expressions.registerRenderer(visualizationRenderer);

View file

@ -29,11 +29,8 @@
import { EventEmitter } from 'events';
import _ from 'lodash';
import { PersistedState } from '../../persisted_state';
import { start as visualizations } from '../../../../core_plugins/visualizations/public/np_ready/public/legacy';
const visTypes = visualizations.types;
import { PersistedState } from '../../../../ui/public/persisted_state';
import { getTypes } from '../np_ready/public/services';
export class Vis extends EventEmitter {
constructor(visState = { type: 'histogram' }) {
@ -64,7 +61,7 @@ export class Vis extends EventEmitter {
this.title = state.title || '';
const type = state.type || this.type;
if (_.isString(type)) {
this.type = visTypes.get(type);
this.type = getTypes().get(type);
if (!this.type) {
throw new Error(`Invalid type "${type}"`);
}

View file

@ -25,7 +25,7 @@ import { PersistedState } from 'ui/persisted_state';
import { VisResponseValue } from 'src/plugins/visualizations/public';
import { ExpressionFunction, Render } from 'src/plugins/expressions/public';
import { npStart } from 'ui/new_platform';
import { start as visualizations } from '../np_ready/public/legacy';
import { getTypes } from '../np_ready/public/services';
interface Arguments {
index?: string | null;
@ -97,7 +97,7 @@ export const visualization = (): ExpressionFunctionVisualization => ({
const visConfigParams = args.visConfig ? JSON.parse(args.visConfig) : {};
const schemas = args.schemas ? JSON.parse(args.schemas) : {};
const visType = visualizations.types.get(args.type || 'histogram') as any;
const visType = getTypes().get(args.type || 'histogram') as any;
const indexPattern = args.index ? await indexPatterns.get(args.index) : null;
const uiStateParams = args.uiState ? JSON.parse(args.uiState) : {};

View file

@ -21,8 +21,8 @@ import chrome from 'ui/chrome';
import React from 'react';
import { render, unmountComponentAtNode } from 'react-dom';
// @ts-ignore
import { Vis } from '../../../../ui/public/visualize/loader/vis';
import { Visualization } from '../../../visualizations/public/np_ready/public/components';
import { Vis } from './vis';
import { Visualization } from '../np_ready/public/components';
export const visualization = () => ({
name: 'visualization',

View file

@ -0,0 +1,3 @@
@import 'src/legacy/ui/public/styles/styling_constants';
@import './embeddable/_index';

View file

@ -27,5 +27,5 @@ import { plugin } from '.';
const pluginInstance = plugin({} as PluginInitializerContext);
export const setup = pluginInstance.setup(npSetup.core);
export const start = pluginInstance.start(npStart.core);
export const setup = pluginInstance.setup(npSetup.core, npSetup.plugins);
export const start = pluginInstance.start(npStart.core, npStart.plugins);

View file

@ -28,6 +28,10 @@ import { PluginInitializerContext } from 'src/core/public';
import { VisualizationsSetup, VisualizationsStart } from './';
import { VisualizationsPlugin } from './plugin';
import { coreMock } from '../../../../../../core/public/mocks';
import { embeddablePluginMock } from '../../../../../../plugins/embeddable/public/mocks';
import { expressionsPluginMock } from '../../../../../../plugins/expressions/public/mocks';
import { dataPluginMock } from '../../../../../../plugins/data/public/mocks';
import { usageCollectionPluginMock } from '../../../../../../plugins/usage_collection/public/mocks';
const createSetupContract = (): VisualizationsSetup => ({
types: {
@ -49,8 +53,15 @@ const createStartContract = (): VisualizationsStart => ({
const createInstance = async () => {
const plugin = new VisualizationsPlugin({} as PluginInitializerContext);
const setup = plugin.setup(coreMock.createSetup());
const doStart = () => plugin.start(coreMock.createStart());
const setup = plugin.setup(coreMock.createSetup(), {
expressions: expressionsPluginMock.createSetupContract(),
embeddable: embeddablePluginMock.createStartContract(),
usageCollection: usageCollectionPluginMock.createSetupContract(),
});
const doStart = () =>
plugin.start(coreMock.createStart(), {
data: dataPluginMock.createStartContract(),
});
return {
plugin,

View file

@ -18,8 +18,24 @@
*/
import { PluginInitializerContext, CoreSetup, CoreStart, Plugin } from 'src/core/public';
import { TypesService, TypesSetup, TypesStart } from './types';
import { setUISettings, setTypes, setI18n } from './services';
import {
setUISettings,
setTypes,
setI18n,
setCapabilities,
setHttp,
setIndexPatterns,
setSavedObjects,
setUsageCollector,
} from './services';
import { VisualizeEmbeddableFactory } from '../../embeddable/visualize_embeddable_factory';
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../embeddable';
import { ExpressionsSetup } from '../../../../../../plugins/expressions/public';
import { IEmbeddableSetup } from '../../../../../../plugins/embeddable/public';
import { visualization as visualizationFunction } from '../../expressions/visualization_function';
import { visualization as visualizationRenderer } from '../../expressions/visualization_renderer';
import { DataPublicPluginStart } from '../../../../../../plugins/data/public';
import { UsageCollectionSetup } from '../../../../../../plugins/usage_collection/public';
/**
* Interface for this plugin's returned setup/start contracts.
*
@ -34,6 +50,16 @@ export interface VisualizationsStart {
types: TypesStart;
}
export interface VisualizationsSetupDeps {
expressions: ExpressionsSetup;
embeddable: IEmbeddableSetup;
usageCollection: UsageCollectionSetup;
}
export interface VisualizationsStartDeps {
data: DataPublicPluginStart;
}
/**
* Visualizations Plugin - public
*
@ -42,22 +68,45 @@ export interface VisualizationsStart {
*
* @internal
*/
export class VisualizationsPlugin implements Plugin<VisualizationsSetup, VisualizationsStart> {
export class VisualizationsPlugin
implements
Plugin<
VisualizationsSetup,
VisualizationsStart,
VisualizationsSetupDeps,
VisualizationsStartDeps
> {
private readonly types: TypesService = new TypesService();
constructor(initializerContext: PluginInitializerContext) {}
public setup(core: CoreSetup) {
public setup(
core: CoreSetup,
{ expressions, embeddable, usageCollection }: VisualizationsSetupDeps
) {
setUISettings(core.uiSettings);
setUsageCollector(usageCollection);
expressions.registerFunction(visualizationFunction);
expressions.registerRenderer(visualizationRenderer);
const embeddableFactory = new VisualizeEmbeddableFactory();
embeddable.registerEmbeddableFactory(VISUALIZE_EMBEDDABLE_TYPE, embeddableFactory);
return {
types: this.types.setup(),
};
}
public start(core: CoreStart) {
setI18n(core.i18n);
public start(core: CoreStart, { data }: VisualizationsStartDeps) {
const types = this.types.start();
setI18n(core.i18n);
setTypes(types);
setCapabilities(core.application.capabilities);
setHttp(core.http);
setSavedObjects(core.savedObjects);
setIndexPatterns(data.indexPatterns);
return {
types,
};

View file

@ -17,12 +17,36 @@
* under the License.
*/
import { I18nStart, IUiSettingsClient } from 'src/core/public';
import {
Capabilities,
HttpStart,
I18nStart,
IUiSettingsClient,
SavedObjectsStart,
} from 'src/core/public';
import { TypesStart } from './types';
import { createGetterSetter } from '../../../../../../plugins/kibana_utils/public';
import { IndexPatternsContract } from '../../../../../../plugins/data/public';
import { UsageCollectionSetup } from '../../../../../../plugins/usage_collection/public';
export const [getUISettings, setUISettings] = createGetterSetter<IUiSettingsClient>('UISettings');
export const [getCapabilities, setCapabilities] = createGetterSetter<Capabilities>('Capabilities');
export const [getHttp, setHttp] = createGetterSetter<HttpStart>('Http');
export const [getSavedObjects, setSavedObjects] = createGetterSetter<SavedObjectsStart>(
'SavedObjects'
);
export const [getTypes, setTypes] = createGetterSetter<TypesStart>('Types');
export const [getI18n, setI18n] = createGetterSetter<I18nStart>('I18n');
export const [getIndexPatterns, setIndexPatterns] = createGetterSetter<IndexPatternsContract>(
'IndexPatterns'
);
export const [getUsageCollector, setUsageCollector] = createGetterSetter<UsageCollectionSetup>(
'UsageCollection'
);

View file

@ -39,7 +39,7 @@ import { FormattedMessage } from '@kbn/i18n/react';
import React from 'react';
import { EuiText } from '@elastic/eui';
import { i18n } from '@kbn/i18n';
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../../../legacy/core_plugins/kibana/public/visualize_embeddable/constants';
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../../../legacy/core_plugins/visualizations/public/embeddable/constants';
export interface OnSaveProps {
newTitle: string;

View file

@ -22,6 +22,20 @@ import 'ui/autoload/all';
import 'uiExports/interpreter';
import 'uiExports/embeddableFactories';
import 'uiExports/embeddableActions';
import 'uiExports/contextMenuActions';
import 'uiExports/devTools';
import 'uiExports/docViews';
import 'uiExports/embeddableActions';
import 'uiExports/fieldFormatEditors';
import 'uiExports/fieldFormats';
import 'uiExports/home';
import 'uiExports/indexManagement';
import 'uiExports/inspectorViews';
import 'uiExports/savedObjectTypes';
import 'uiExports/search';
import 'uiExports/shareContextMenuExtensions';
import 'uiExports/visTypes';
import 'uiExports/visualize';
import { npSetup, npStart } from 'ui/new_platform';
import { ExitFullScreenButton } from 'ui/exit_full_screen';

View file

@ -6,7 +6,7 @@
// @ts-ignore
import { MAP_SAVED_OBJECT_TYPE } from '../../../maps/common/constants';
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../../../../../src/legacy/core_plugins/kibana/public/visualize_embeddable/constants';
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../../../../../src/legacy/core_plugins/visualizations/public/embeddable/constants';
import { SEARCH_EMBEDDABLE_TYPE } from '../../../../../../src/legacy/core_plugins/kibana/public/discover/np_ready/embeddable/constants';
export const EmbeddableTypes: { map: string; search: string; visualization: string } = {

View file

@ -5,7 +5,7 @@
*/
import { ExpressionFunction } from 'src/plugins/expressions/common/types';
import { VisualizeInput } from 'src/legacy/core_plugins/kibana/public/visualize_embeddable';
import { VisualizeInput } from 'src/legacy/core_plugins/visualizations/public/embeddable';
import {
EmbeddableTypes,
EmbeddableExpressionType,

View file

@ -1636,7 +1636,6 @@
"kbn.embeddable.inspectorRequestDataTitle": "データ",
"kbn.embeddable.inspectorRequestDescription": "このリクエストは Elasticsearch にクエリをかけ、検索データを取得します。",
"kbn.embeddable.search.displayName": "検索",
"kbn.embeddable.visualizations.displayName": "ビジュアライゼーション",
"kbn.home.addData.addDataToKibanaDescription": "これらのソリューションで、データを作成済みのダッシュボードと監視システムへとすぐに変えることができます。",
"kbn.home.addData.addDataToKibanaTitle": "Kibana にデータを追加",
"kbn.home.addData.apm.addApmButtonLabel": "APM を追加",
@ -2440,8 +2439,6 @@
"kbn.visualize.badge.readOnly.text": "読み込み専用",
"kbn.visualize.badge.readOnly.tooltip": "ビジュアライゼーションを保存できません",
"kbn.visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "indexPattern または savedSearchId が必要です",
"kbn.visualize.disabledLabVisualizationMessage": "ラボビジュアライゼーションを表示するには、高度な設定でラボモードをオンにしてください。",
"kbn.visualize.disabledLabVisualizationTitle": "{title} はラボビジュアライゼーションです。",
"kbn.visualize.editor.createBreadcrumb": "作成",
"kbn.visualize.experimentalVisInfoText": "このビジュアライゼーションは実験的なものです。",
"kbn.visualize.linkedToSearch.unlinkButtonTooltip": "保存された検索からリンクを解除するにはダブルクリックします",
@ -2481,7 +2478,6 @@
"kbn.visualize.newVisWizard.visTypeAliasTitle": "Kibanaアプリケーション",
"kbn.visualize.pageHeading": "{chartName} {chartType} ビジュアライゼーション",
"kbn.visualize.saveDialog.saveAndAddToDashboardButtonLabel": "保存してダッシュボードに追加",
"kbn.visualize.savedObjectName": "ビジュアライゼーション",
"kbn.visualize.topNavMenu.openInspectorButtonAriaLabel": "ビジュアライゼーションのインスペクターを開く",
"kbn.visualize.topNavMenu.openInspectorDisabledButtonTooltip": "このビジュアライゼーションはインスペクターをサポートしていません。",
"kbn.visualize.topNavMenu.refreshButtonAriaLabel": "更新",

View file

@ -1636,7 +1636,6 @@
"kbn.embeddable.inspectorRequestDataTitle": "数据",
"kbn.embeddable.inspectorRequestDescription": "此请求将查询 Elasticsearch 以获取搜索的数据。",
"kbn.embeddable.search.displayName": "搜索",
"kbn.embeddable.visualizations.displayName": "可视化",
"kbn.home.addData.addDataToKibanaDescription": "使用这些解决方案可快速将您的数据转换成预建仪表板和监测系统。",
"kbn.home.addData.addDataToKibanaTitle": "将数据添加到 Kibana",
"kbn.home.addData.apm.addApmButtonLabel": "添加 APM",
@ -2440,8 +2439,6 @@
"kbn.visualize.badge.readOnly.text": "只读",
"kbn.visualize.badge.readOnly.tooltip": "无法保存可视化",
"kbn.visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "必须提供 indexPattern 或 savedSearchId",
"kbn.visualize.disabledLabVisualizationMessage": "请在高级设置中打开实验室模式,以查看实验室可视化。",
"kbn.visualize.disabledLabVisualizationTitle": "{title} 为实验室可视化。",
"kbn.visualize.editor.createBreadcrumb": "创建",
"kbn.visualize.experimentalVisInfoText": "此可视化标记为“实验”。",
"kbn.visualize.linkedToSearch.unlinkButtonTooltip": "双击可取消与“已保存搜索”的链接",
@ -2481,7 +2478,6 @@
"kbn.visualize.newVisWizard.visTypeAliasTitle": "Kibana 应用程序",
"kbn.visualize.pageHeading": "{chartName} {chartType}可视化",
"kbn.visualize.saveDialog.saveAndAddToDashboardButtonLabel": "保存并添加到仪表板",
"kbn.visualize.savedObjectName": "可视化",
"kbn.visualize.topNavMenu.openInspectorButtonAriaLabel": "打开检查器查看可视化",
"kbn.visualize.topNavMenu.openInspectorDisabledButtonTooltip": "此可视化不支持任何检查器。",
"kbn.visualize.topNavMenu.refreshButtonAriaLabel": "刷新",