[NP] Visualize (#62294) (#63833)

* Move visualize plugin to np

* Refactor plugin services

* Clean up

* Remove legacy style usage

* Fix style imports

* Fix timelion_options context provider

* Fix translations

* Change codeowners for visualize

* Import styles in legacy for BWC in Browser tests

* Get rid of embeddable dependency

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
# Conflicts:
#	.github/CODEOWNERS
#	x-pack/plugins/translations/translations/ja-JP.json
#	x-pack/plugins/translations/translations/zh-CN.json
This commit is contained in:
Daniil Suleiman 2020-04-17 15:22:31 +03:00 committed by GitHub
parent 24cae4356c
commit 334b315848
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
49 changed files with 259 additions and 390 deletions

View file

@ -54,7 +54,8 @@
"visTypeVega": "src/legacy/core_plugins/vis_type_vega",
"visTypeVislib": "src/legacy/core_plugins/vis_type_vislib",
"visTypeXy": "src/legacy/core_plugins/vis_type_xy",
"visualizations": "src/plugins/visualizations"
"visualizations": "src/plugins/visualizations",
"visualize": "src/plugins/visualize"
},
"exclude": [
"src/legacy/ui/ui_render/ui_render_mixin.js"

View file

@ -54,11 +54,7 @@ export default function(kibana) {
},
uiExports: {
hacks: [
'plugins/kibana/discover/legacy',
'plugins/kibana/dev_tools',
'plugins/kibana/visualize/legacy',
],
hacks: ['plugins/kibana/discover/legacy', 'plugins/kibana/dev_tools'],
app: {
id: 'kibana',
title: 'Kibana',

View file

@ -13,8 +13,10 @@
// Discover styles
@import 'discover/index';
// Visualize styles
@import './visualize/index';
// Visualization styles are imported here for running karma Browser tests
// should be somehow included through the "visualizations" plugin initialization
@import '../../../../plugins/visualizations/public/index';
// Has to come after visualize because of some
// bad cascading in the Editor layout
@import '../../../../plugins/maps_legacy/public/index';

View file

@ -43,7 +43,6 @@ import 'uiExports/interpreter';
import 'ui/autoload/all';
import './discover/legacy';
import './visualize/legacy';
import './management';
import './dev_tools';
import { showAppRedirectNotification } from '../../../../plugins/kibana_legacy/public';

View file

@ -1,5 +0,0 @@
// Visualize plugin styles
@import 'np_ready/index';
// should be removed while moving the visualize into NP
@import '../../../../../plugins/vis_default_editor/public/index'

View file

@ -1,28 +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 { PluginInitializerContext } from 'kibana/public';
import { npSetup, npStart } from 'ui/new_platform';
import { plugin } from './index';
const instance = plugin({
env: npSetup.plugins.kibanaLegacy.env,
} as PluginInitializerContext);
instance.setup(npSetup.core, npSetup.plugins);
instance.start(npStart.core, npStart.plugins);

View file

@ -1,36 +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.
*/
/**
* The imports in this file are static functions and types which still live in legacy folders and are used
* within dashboard. To consolidate them all in one place, they are re-exported from this file. Eventually
* this list should become empty. Imports from the top level of shimmed or moved plugins can be imported
* directly where they are needed.
*/
export { DashboardConstants } from '../../../../../plugins/dashboard/public';
export {
VisSavedObject,
VISUALIZE_EMBEDDABLE_TYPE,
} from '../../../../../plugins/visualizations/public/';
export {
configureAppAngularModule,
migrateLegacyQuery,
subscribeWithScope,
} from '../../../../../plugins/kibana_legacy/public';

View file

@ -24,7 +24,9 @@ import { VisOptionsProps } from 'src/plugins/vis_default_editor/public';
import { VisParams } from './timelion_vis_fn';
import { TimelionInterval, TimelionExpressionInput } from './components';
function TimelionOptions({ stateParams, setValue, setValidity }: VisOptionsProps<VisParams>) {
export type TimelionOptionsProps = VisOptionsProps<VisParams>;
function TimelionOptions({ stateParams, setValue, setValidity }: TimelionOptionsProps) {
const setInterval = useCallback((value: VisParams['interval']) => setValue('interval', value), [
setValue,
]);

View file

@ -24,7 +24,7 @@ import { KibanaContextProvider } from '../../../../plugins/kibana_react/public';
import { DefaultEditorSize } from '../../../../plugins/vis_default_editor/public';
import { getTimelionRequestHandler } from './helpers/timelion_request_handler';
import { TimelionVisComponent, TimelionVisComponentProp } from './components';
import { TimelionOptions } from './timelion_options';
import { TimelionOptions, TimelionOptionsProps } from './timelion_options';
import { TimelionVisDependencies } from './plugin';
export const TIMELION_VIS_NAME = 'timelion';
@ -53,7 +53,11 @@ export function getTimelionVisDefinition(dependencies: TimelionVisDependencies)
),
},
editorConfig: {
optionsTemplate: TimelionOptions,
optionsTemplate: (props: TimelionOptionsProps) => (
<KibanaContextProvider services={{ ...dependencies }}>
<TimelionOptions {...props} />
</KibanaContextProvider>
),
defaultSize: DefaultEditorSize.MEDIUM,
},
requestHandler: timelionRequestHandler,

View file

@ -17,9 +17,3 @@
@import './field_editor/index';
@import './style_compile/index';
@import '../../../plugins/management/public/components/index';
// The following are prefixed with "vis"
// Can't import vis folder here because of cascading issues, it's imported in core_plugins/kibana
// @import './vis/index';
@import './visualize/index';

View file

@ -1 +0,0 @@
@import '../../../../plugins/visualizations/public/components/index';

View file

@ -19,7 +19,7 @@
import React, { useEffect, useRef, useState, useCallback } from 'react';
import { EditorRenderProps } from 'src/legacy/core_plugins/kibana/public/visualize/np_ready/types';
import { EditorRenderProps } from 'src/plugins/visualize/public';
import { PanelsContainer, Panel } from '../../kibana_react/public';
import './vis_type_agg_filter';

View file

@ -22,7 +22,7 @@ import { render, unmountComponentAtNode } from 'react-dom';
import { i18n } from '@kbn/i18n';
import { EventEmitter } from 'events';
import { EditorRenderProps } from 'src/legacy/core_plugins/kibana/public/visualize/np_ready/types';
import { EditorRenderProps } from 'src/plugins/visualize/public';
import { Vis, VisualizeEmbeddableContract } from 'src/plugins/visualizations/public';
import { Storage } from '../../kibana_utils/public';
import { KibanaContextProvider } from '../../kibana_react/public';

View file

@ -1,2 +1,3 @@
@import 'wizard/index';
@import 'embeddable/index';
@import 'components/index';

View file

@ -0,0 +1,17 @@
{
"id": "visualize",
"version": "kibana",
"server": false,
"ui": true,
"requiredPlugins": [
"data",
"kibanaLegacy",
"navigation",
"savedObjects",
"visualizations"
],
"optionalPlugins": [
"home",
"share"
]
}

View file

@ -17,16 +17,18 @@
* under the License.
*/
import './index.scss';
import angular, { IModule } from 'angular';
import { i18nDirective, i18nFilter, I18nProvider } from '@kbn/i18n/angular';
import { AppMountContext } from 'kibana/public';
import { configureAppAngularModule } from '../legacy_imports';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../../plugins/navigation/public';
import { NavigationPublicPluginStart as NavigationStart } from 'src/plugins/navigation/public';
import {
configureAppAngularModule,
createTopNavDirective,
createTopNavHelper,
} from '../../../../../../plugins/kibana_legacy/public';
} from '../../../kibana_legacy/public';
// @ts-ignore
import { initVisualizeApp } from './legacy_app';

View file

@ -24,7 +24,7 @@ import { VisualizeConstants } from './visualize_constants';
export function getLandingBreadcrumbs() {
return [
{
text: i18n.translate('kbn.visualize.listing.breadcrumb', {
text: i18n.translate('visualize.listing.breadcrumb', {
defaultMessage: 'Visualize',
}),
href: `#${VisualizeConstants.LANDING_PAGE_PATH}`,
@ -36,7 +36,7 @@ export function getWizardStep1Breadcrumbs() {
return [
...getLandingBreadcrumbs(),
{
text: i18n.translate('kbn.visualize.wizard.step1Breadcrumb', {
text: i18n.translate('visualize.wizard.step1Breadcrumb', {
defaultMessage: 'Create',
}),
},
@ -47,7 +47,7 @@ export function getWizardStep2Breadcrumbs() {
return [
...getLandingBreadcrumbs(),
{
text: i18n.translate('kbn.visualize.wizard.step2Breadcrumb', {
text: i18n.translate('visualize.wizard.step2Breadcrumb', {
defaultMessage: 'Create',
}),
},
@ -58,7 +58,7 @@ export function getCreateBreadcrumbs() {
return [
...getLandingBreadcrumbs(),
{
text: i18n.translate('kbn.visualize.editor.createBreadcrumb', {
text: i18n.translate('visualize.editor.createBreadcrumb', {
defaultMessage: 'Create',
}),
},

View file

@ -80,7 +80,7 @@
<h1
class="euiScreenReaderOnly"
i18n-id="kbn.visualize.pageHeading"
i18n-id="visualize.pageHeading"
i18n-default-message="{chartName} {chartType} visualization"
i18n-values="{
chartName: savedVis.title,

View file

@ -31,22 +31,19 @@ import { VisualizeConstants } from '../visualize_constants';
import { getEditBreadcrumbs } from '../breadcrumbs';
import { addHelpMenuToAppChrome } from '../help_menu/help_menu_util';
import { unhashUrl, removeQueryParam } from '../../../../../../../plugins/kibana_utils/public';
import { MarkdownSimple, toMountPoint } from '../../../../../../../plugins/kibana_react/public';
import { addFatalError } from '../../../../../../../plugins/kibana_legacy/public';
import { unhashUrl, removeQueryParam } from '../../../../kibana_utils/public';
import { MarkdownSimple, toMountPoint } from '../../../../kibana_react/public';
import {
SavedObjectSaveModal,
showSaveModal,
} from '../../../../../../../plugins/saved_objects/public';
import {
esFilters,
connectToQueryState,
syncQueryStateWithUrl,
} from '../../../../../../../plugins/data/public';
addFatalError,
subscribeWithScope,
migrateLegacyQuery,
} from '../../../../kibana_legacy/public';
import { SavedObjectSaveModal, showSaveModal } from '../../../../saved_objects/public';
import { esFilters, connectToQueryState, syncQueryStateWithUrl } from '../../../../data/public';
import { DashboardConstants } from '../../../../dashboard/public';
import { initVisEditorDirective } from './visualization_editor';
import { initVisualizationDirective } from './visualization';
import { subscribeWithScope, migrateLegacyQuery, DashboardConstants } from '../../legacy_imports';
import { getServices } from '../../kibana_services';
@ -65,16 +62,13 @@ export function initEditorDirective(app, deps) {
function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlStateStorage, history) {
const {
indexPatterns,
localStorage,
visualizeCapabilities,
share,
data: { query: queryService },
data: { query: queryService, indexPatterns },
toastNotifications,
chrome,
core: { docLinks, fatalErrors },
savedQueryService,
uiSettings,
core: { docLinks, fatalErrors, uiSettings },
I18nContext,
setActiveUrl,
visualizations,
@ -154,15 +148,12 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
? [
{
id: 'save',
label: i18n.translate('kbn.topNavMenu.saveVisualizationButtonLabel', {
label: i18n.translate('visualize.topNavMenu.saveVisualizationButtonLabel', {
defaultMessage: 'save',
}),
description: i18n.translate(
'kbn.visualize.topNavMenu.saveVisualizationButtonAriaLabel',
{
defaultMessage: 'Save Visualization',
}
),
description: i18n.translate('visualize.topNavMenu.saveVisualizationButtonAriaLabel', {
defaultMessage: 'Save Visualization',
}),
testId: 'visualizeSaveButton',
disableButton() {
return Boolean($scope.dirty);
@ -170,7 +161,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
tooltip() {
if ($scope.dirty) {
return i18n.translate(
'kbn.visualize.topNavMenu.saveVisualizationDisabledButtonTooltip',
'visualize.topNavMenu.saveVisualizationDisabledButtonTooltip',
{
defaultMessage: 'Apply or Discard your changes before saving',
}
@ -205,7 +196,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
const confirmButtonLabel = $scope.isAddToDashMode() ? (
<FormattedMessage
id="kbn.visualize.saveDialog.saveAndAddToDashboardButtonLabel"
id="visualize.saveDialog.saveAndAddToDashboardButtonLabel"
defaultMessage="Save and add to dashboard"
/>
) : null;
@ -229,10 +220,10 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
: []),
{
id: 'share',
label: i18n.translate('kbn.topNavMenu.shareVisualizationButtonLabel', {
label: i18n.translate('visualize.topNavMenu.shareVisualizationButtonLabel', {
defaultMessage: 'share',
}),
description: i18n.translate('kbn.visualize.topNavMenu.shareVisualizationButtonAriaLabel', {
description: i18n.translate('visualize.topNavMenu.shareVisualizationButtonAriaLabel', {
defaultMessage: 'Share Visualization',
}),
testId: 'shareTopNavButton',
@ -252,13 +243,15 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
isDirty: hasUnappliedChanges || hasUnsavedChanges,
});
},
// disable the Share button if no action specified
disableButton: !share,
},
{
id: 'inspector',
label: i18n.translate('kbn.topNavMenu.openInspectorButtonLabel', {
label: i18n.translate('visualize.topNavMenu.openInspectorButtonLabel', {
defaultMessage: 'inspect',
}),
description: i18n.translate('kbn.visualize.topNavMenu.openInspectorButtonAriaLabel', {
description: i18n.translate('visualize.topNavMenu.openInspectorButtonAriaLabel', {
defaultMessage: 'Open Inspector for visualization',
}),
testId: 'openInspectorButton',
@ -274,7 +267,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
},
tooltip() {
if (!embeddableHandler.hasInspector || !embeddableHandler.hasInspector()) {
return i18n.translate('kbn.visualize.topNavMenu.openInspectorDisabledButtonTooltip', {
return i18n.translate('visualize.topNavMenu.openInspectorDisabledButtonTooltip', {
defaultMessage: `This visualization doesn't support any inspectors.`,
});
}
@ -319,7 +312,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
stopAllSyncing();
toastNotifications.addWarning({
title: i18n.translate('kbn.visualize.visualizationTypeInvalidNotificationMessage', {
title: i18n.translate('visualize.visualizationTypeInvalidNotificationMessage', {
defaultMessage: 'Invalid visualization type',
}),
text: toMountPoint(<MarkdownSimple>{error.message}</MarkdownSimple>),
@ -359,7 +352,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
return;
}
savedQueryService.getSavedQuery(savedQueryId).then(savedQuery => {
queryService.savedQueries.getSavedQuery(savedQueryId).then(savedQuery => {
$scope.$evalAsync(() => {
$scope.updateSavedQuery(savedQuery);
});
@ -622,7 +615,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
if (id) {
toastNotifications.addSuccess({
title: i18n.translate(
'kbn.visualize.topNavMenu.saveVisualization.successNotificationText',
'visualize.topNavMenu.saveVisualization.successNotificationText',
{
defaultMessage: `Saved '{visTitle}'`,
values: {
@ -661,15 +654,12 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
// eslint-disable-next-line
console.error(error);
toastNotifications.addDanger({
title: i18n.translate(
'kbn.visualize.topNavMenu.saveVisualization.failureNotificationText',
{
defaultMessage: `Error on saving '{visTitle}'`,
values: {
visTitle: savedVis.title,
},
}
),
title: i18n.translate('visualize.topNavMenu.saveVisualization.failureNotificationText', {
defaultMessage: `Error on saving '{visTitle}'`,
values: {
visTitle: savedVis.title,
},
}),
text: error.message,
'data-test-subj': 'saveVisualizationError',
});
@ -692,7 +682,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
});
toastNotifications.addSuccess(
i18n.translate('kbn.visualize.linkedToSearch.unlinkSuccessNotificationText', {
i18n.translate('visualize.linkedToSearch.unlinkSuccessNotificationText', {
defaultMessage: `Unlinked from saved search '{searchTitle}'`,
values: {
searchTitle: savedSearch.title,
@ -704,7 +694,7 @@ function VisualizeAppController($scope, $route, $injector, $timeout, kbnUrlState
$scope.getAdditionalMessage = () => {
return (
'<i class="kuiIcon fa-flask"></i>' +
i18n.translate('kbn.visualize.experimentalVisInfoText', {
i18n.translate('visualize.experimentalVisInfoText', {
defaultMessage: 'This visualization is marked as experimental.',
}) +
' ' +

View file

@ -17,8 +17,8 @@
* under the License.
*/
import { PersistedState } from '../../../../../../../../plugins/visualizations/public';
import { ReduxLikeStateContainer } from '../../../../../../../../plugins/kibana_utils/public';
import { PersistedState } from '../../../../../visualizations/public';
import { ReduxLikeStateContainer } from '../../../../../kibana_utils/public';
import { VisualizeAppState, VisualizeAppStateTransitions } from '../../types';
/**

View file

@ -19,15 +19,6 @@
import { addEmbeddableToDashboardUrl } from './url_helper';
jest.mock('../../../legacy_imports', () => ({
DashboardConstants: {
ADD_EMBEDDABLE_ID: 'addEmbeddableId',
ADD_EMBEDDABLE_TYPE: 'addEmbeddableType',
CREATE_NEW_DASHBOARD_URL: '/dashboard',
},
VISUALIZE_EMBEDDABLE_TYPE: 'visualization',
}));
describe('', () => {
it('addEmbeddableToDashboardUrl when dashboard is not saved', () => {
const id = '123eb456cd';

View file

@ -18,7 +18,8 @@
*/
import { parseUrl, stringify } from 'query-string';
import { DashboardConstants, VISUALIZE_EMBEDDABLE_TYPE } from '../../../legacy_imports';
import { DashboardConstants } from '../../../../../dashboard/public';
import { VISUALIZE_EMBEDDABLE_TYPE } from '../../../../../visualizations/public';
/** *
* Returns relative dashboard URL with added embeddableType and embeddableId query params

View file

@ -24,7 +24,7 @@ import {
createStateContainer,
syncState,
IKbnUrlStateStorage,
} from '../../../../../../../../plugins/kibana_utils/public';
} from '../../../../../kibana_utils/public';
import { PureVisState, VisualizeAppState, VisualizeAppStateTransitions } from '../../types';
const STATE_STORAGE_KEY = '_a';

View file

@ -44,7 +44,6 @@ export function initVisEditorDirective(app, deps) {
editor.render({
core: deps.core,
data: deps.data,
embeddable: deps.embeddable,
uiState: $scope.uiState,
timeRange: $scope.timeRange,
filters: $scope.filters,

View file

@ -21,7 +21,7 @@ import { i18n } from '@kbn/i18n';
export function addHelpMenuToAppChrome(chrome, docLinks) {
chrome.setHelpExtension({
appName: i18n.translate('kbn.visualize.helpMenu.appName', {
appName: i18n.translate('visualize.helpMenu.appName', {
defaultMessage: 'Visualize',
}),
links: [

View file

@ -25,7 +25,8 @@ import {
createKbnUrlStateStorage,
redirectWhenMissing,
ensureDefaultIndexPattern,
} from '../../../../../../plugins/kibana_utils/public';
} from '../../../kibana_utils/public';
import { createSavedSearchesLoader } from '../../../discover/public';
import editorTemplate from './editor/editor.html';
import visualizeListingTemplate from './listing/visualize_listing.html';
@ -40,7 +41,6 @@ import {
getCreateBreadcrumbs,
getEditBreadcrumbs,
} from './breadcrumbs';
import { createSavedSearchesLoader } from '../../../../../../plugins/discover/public';
const getResolvedResults = deps => {
const { core, data, visualizations, createVisEmbeddableFromObject } = deps;
@ -93,7 +93,7 @@ export function initVisualizeApp(app, deps) {
app.factory('kbnUrlStateStorage', history =>
createKbnUrlStateStorage({
history,
useHash: deps.uiSettings.get('state:storeInSessionStorage'),
useHash: deps.core.uiSettings.get('state:storeInSessionStorage'),
})
);
@ -107,10 +107,10 @@ export function initVisualizeApp(app, deps) {
}
return {
text: i18n.translate('kbn.visualize.badge.readOnly.text', {
text: i18n.translate('visualize.badge.readOnly.text', {
defaultMessage: 'Read only',
}),
tooltip: i18n.translate('kbn.visualize.badge.readOnly.tooltip', {
tooltip: i18n.translate('visualize.badge.readOnly.tooltip', {
defaultMessage: 'Unable to save visualizations',
}),
iconType: 'glasses',
@ -156,7 +156,7 @@ export function initVisualizeApp(app, deps) {
if (shouldHaveIndex && !hasIndex) {
throw new Error(
i18n.translate(
'kbn.visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage',
'visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage',
{
defaultMessage: 'You must provide either an indexPattern or a savedSearchId',
}

View file

@ -24,7 +24,7 @@ import { VisualizeConstants } from '../visualize_constants';
import { i18n } from '@kbn/i18n';
import { getServices } from '../../kibana_services';
import { syncQueryStateWithUrl } from '../../../../../../../plugins/data/public';
import { syncQueryStateWithUrl } from '../../../../data/public';
export function initListingDirective(app, I18nContext) {
app.directive('visualizeListingTable', reactDirective =>
@ -40,9 +40,8 @@ export function VisualizeListingController($scope, createNewVis, kbnUrlStateStor
savedVisualizations,
data: { query },
toastNotifications,
uiSettings,
visualizations,
core: { docLinks, savedObjects },
core: { docLinks, savedObjects, uiSettings },
} = getServices();
// syncs `_g` portion of url with query services
@ -110,7 +109,7 @@ export function VisualizeListingController($scope, createNewVis, kbnUrlStateStor
})
).catch(error => {
toastNotifications.addError(error, {
title: i18n.translate('kbn.visualize.visualizeListingDeleteErrorTitle', {
title: i18n.translate('visualize.visualizeListingDeleteErrorTitle', {
defaultMessage: 'Error deleting visualization',
}),
});
@ -119,7 +118,7 @@ export function VisualizeListingController($scope, createNewVis, kbnUrlStateStor
chrome.setBreadcrumbs([
{
text: i18n.translate('kbn.visualize.visualizeListingBreadcrumbsTitle', {
text: i18n.translate('visualize.visualizeListingBreadcrumbsTitle', {
defaultMessage: 'Visualize',
}),
},

View file

@ -21,7 +21,7 @@ import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { FormattedMessage } from '@kbn/i18n/react';
import { i18n } from '@kbn/i18n';
import { TableListView } from '../../../../../../../plugins/kibana_react/public';
import { TableListView } from '../../../../kibana_react/public';
import { EuiIcon, EuiBetaBadge, EuiLink, EuiButton, EuiEmptyPrompt } from '@elastic/eui';
@ -33,7 +33,7 @@ class VisualizeListingTable extends Component {
}
render() {
const { visualizeCapabilities, uiSettings, toastNotifications } = getServices();
const { visualizeCapabilities, core, toastNotifications } = getServices();
return (
<TableListView
headingId="visualizeListingHeading"
@ -48,17 +48,17 @@ class VisualizeListingTable extends Component {
selectable={item => item.canDelete}
initialFilter={''}
noItemsFragment={this.getNoItemsMessage()}
entityName={i18n.translate('kbn.visualize.listing.table.entityName', {
entityName={i18n.translate('visualize.listing.table.entityName', {
defaultMessage: 'visualization',
})}
entityNamePlural={i18n.translate('kbn.visualize.listing.table.entityNamePlural', {
entityNamePlural={i18n.translate('visualize.listing.table.entityNamePlural', {
defaultMessage: 'visualizations',
})}
tableListTitle={i18n.translate('kbn.visualize.listing.table.listTitle', {
tableListTitle={i18n.translate('visualize.listing.table.listTitle', {
defaultMessage: 'Visualizations',
})}
toastNotifications={toastNotifications}
uiSettings={uiSettings}
uiSettings={core.uiSettings}
/>
);
}
@ -67,7 +67,7 @@ class VisualizeListingTable extends Component {
const tableColumns = [
{
field: 'title',
name: i18n.translate('kbn.visualize.listing.table.titleColumnName', {
name: i18n.translate('visualize.listing.table.titleColumnName', {
defaultMessage: 'Title',
}),
sortable: true,
@ -82,7 +82,7 @@ class VisualizeListingTable extends Component {
},
{
field: 'typeTitle',
name: i18n.translate('kbn.visualize.listing.table.typeColumnName', {
name: i18n.translate('visualize.listing.table.typeColumnName', {
defaultMessage: 'Type',
}),
sortable: true,
@ -96,7 +96,7 @@ class VisualizeListingTable extends Component {
},
{
field: 'description',
name: i18n.translate('kbn.dashboard.listing.table.descriptionColumnName', {
name: i18n.translate('visualize.listing.table.descriptionColumnName', {
defaultMessage: 'Description',
}),
sortable: true,
@ -116,7 +116,7 @@ class VisualizeListingTable extends Component {
title={
<h1 id="visualizeListingHeading">
<FormattedMessage
id="kbn.visualize.listing.noItemsMessage"
id="visualize.listing.noItemsMessage"
defaultMessage="Looks like you don't have any visualizations."
/>
</h1>
@ -133,7 +133,7 @@ class VisualizeListingTable extends Component {
title={
<h1 id="visualizeListingHeading">
<FormattedMessage
id="kbn.visualize.listing.createNew.title"
id="visualize.listing.createNew.title"
defaultMessage="Create your first visualization"
/>
</h1>
@ -142,7 +142,7 @@ class VisualizeListingTable extends Component {
<Fragment>
<p>
<FormattedMessage
id="kbn.visualize.listing.createNew.description"
id="visualize.listing.createNew.description"
defaultMessage="You can create different visualizations, based on your data."
/>
</p>
@ -156,7 +156,7 @@ class VisualizeListingTable extends Component {
data-test-subj="createVisualizationPromptButton"
>
<FormattedMessage
id="kbn.visualize.listing.createNew.createButtonLabel"
id="visualize.listing.createNew.createButtonLabel"
defaultMessage="Create new visualization"
/>
</EuiButton>
@ -192,10 +192,10 @@ class VisualizeListingTable extends Component {
<EuiBetaBadge
className="visListingTable__betaIcon"
label="B"
title={i18n.translate('kbn.visualize.listing.betaTitle', {
title={i18n.translate('visualize.listing.betaTitle', {
defaultMessage: 'Beta',
})}
tooltipContent={i18n.translate('kbn.visualize.listing.betaTooltip', {
tooltipContent={i18n.translate('visualize.listing.betaTooltip', {
defaultMessage:
'This visualization is in beta and is subject to change. The design and code is less mature than official GA ' +
'features and is being provided as-is with no warranties. Beta features are not subject to the support SLA of official GA ' +
@ -208,10 +208,10 @@ class VisualizeListingTable extends Component {
<EuiBetaBadge
className="visListingTable__experimentalIcon"
label="E"
title={i18n.translate('kbn.visualize.listing.experimentalTitle', {
title={i18n.translate('visualize.listing.experimentalTitle', {
defaultMessage: 'Experimental',
})}
tooltipContent={i18n.translate('kbn.visualize.listing.experimentalTooltip', {
tooltipContent={i18n.translate('visualize.listing.experimentalTooltip', {
defaultMessage:
'This visualization might be changed or removed in a future release and is not subject to the support SLA.',
})}

View file

@ -24,12 +24,9 @@ import {
DataPublicPluginStart,
SavedQuery,
} from 'src/plugins/data/public';
import { EmbeddableStart } from 'src/plugins/embeddable/public';
import { PersistedState } from 'src/plugins/visualizations/public';
import { LegacyCoreStart } from 'kibana/public';
import { VisSavedObject } from '../legacy_imports';
import { SavedVisState } from '../../../../../../plugins/visualizations/public';
import { SavedSearch } from '../../../../../../plugins/discover/public';
import { PersistedState, SavedVisState, VisSavedObject } from 'src/plugins/visualizations/public';
import { CoreStart } from 'kibana/public';
import { SavedSearch } from 'src/plugins/discover/public';
export type PureVisState = SavedVisState;
@ -59,7 +56,7 @@ export interface VisualizeAppStateTransitions {
}
export interface EditorRenderProps {
core: LegacyCoreStart;
core: CoreStart;
data: DataPublicPluginStart;
filters: Filter[];
timeRange: TimeRange;

View file

@ -27,5 +27,5 @@ import { initListingDirective } from './listing/visualize_listing';
export function initVisualizeAppDirective(app: IModule, deps: VisualizeKibanaServices) {
initEditorDirective(app, deps);
initListingDirective(app, deps.core.i18n.Context);
initListingDirective(app, deps.I18nContext);
}

View file

@ -20,10 +20,9 @@
import { PluginInitializerContext } from 'kibana/public';
import { VisualizePlugin } from './plugin';
export * from './np_ready/visualize_constants';
export { VisualizeConstants, createVisualizeEditUrl } from './np_ready/visualize_constants';
export { EditorRenderProps } from './application/types';
export { VisualizeConstants, createVisualizeEditUrl } from './application/visualize_constants';
// Core will be looking for this when loading our plugin in the new platform
export const plugin = (context: PluginInitializerContext) => {
return new VisualizePlugin(context);
};

View file

@ -22,21 +22,18 @@ import {
CoreStart,
SavedObjectsClientContract,
ToastsStart,
IUiSettingsClient,
I18nStart,
PluginInitializerContext,
I18nStart,
} from 'kibana/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { Storage } from '../../../../../plugins/kibana_utils/public';
import { EmbeddableStart } from '../../../../../plugins/embeddable/public';
import { SharePluginStart } from '../../../../../plugins/share/public';
import { DataPublicPluginStart, IndexPatternsContract } from '../../../../../plugins/data/public';
import { VisualizationsStart } from '../../../../../plugins/visualizations/public';
import { SavedVisualizations } from './np_ready/types';
import { UsageCollectionSetup } from '../../../../../plugins/usage_collection/public';
import { KibanaLegacyStart } from '../../../../../plugins/kibana_legacy/public';
import { DefaultEditorController } from '../../../../../plugins/vis_default_editor/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../navigation/public';
import { Storage } from '../../kibana_utils/public';
import { SharePluginStart } from '../../share/public';
import { DataPublicPluginStart } from '../../data/public';
import { VisualizationsStart } from '../../visualizations/public';
import { SavedVisualizations } from './application/types';
import { KibanaLegacyStart } from '../../kibana_legacy/public';
import { DefaultEditorController } from '../../vis_default_editor/public';
export interface VisualizeKibanaServices {
pluginInitializerContext: PluginInitializerContext;
@ -44,20 +41,15 @@ export interface VisualizeKibanaServices {
chrome: ChromeStart;
core: CoreStart;
data: DataPublicPluginStart;
embeddable: EmbeddableStart;
indexPatterns: IndexPatternsContract;
localStorage: Storage;
navigation: NavigationStart;
toastNotifications: ToastsStart;
savedObjectsClient: SavedObjectsClientContract;
savedQueryService: DataPublicPluginStart['query']['savedQueries'];
savedVisualizations: SavedVisualizations;
share: SharePluginStart;
uiSettings: IUiSettingsClient;
share?: SharePluginStart;
config: KibanaLegacyStart['config'];
visualizeCapabilities: any;
visualizations: VisualizationsStart;
usageCollection?: UsageCollectionSetup;
I18nContext: I18nStart['Context'];
setActiveUrl: (newUrl: string) => void;
DefaultVisualizationEditor: typeof DefaultEditorController;

View file

@ -27,64 +27,43 @@ import {
CoreStart,
Plugin,
PluginInitializerContext,
SavedObjectsClientContract,
} from 'kibana/public';
import { Storage, createKbnUrlTracker } from '../../../../../plugins/kibana_utils/public';
import {
DataPublicPluginStart,
DataPublicPluginSetup,
esFilters,
} from '../../../../../plugins/data/public';
import { EmbeddableStart } from '../../../../../plugins/embeddable/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../../../../plugins/navigation/public';
import { SharePluginStart } from '../../../../../plugins/share/public';
import {
KibanaLegacySetup,
AngularRenderedAppUpdater,
} from '../../../../../plugins/kibana_legacy/public';
import { VisualizationsStart } from '../../../../../plugins/visualizations/public';
import { VisualizeConstants } from './np_ready/visualize_constants';
import { Storage, createKbnUrlTracker } from '../../kibana_utils/public';
import { DataPublicPluginStart, DataPublicPluginSetup, esFilters } from '../../data/public';
import { NavigationPublicPluginStart as NavigationStart } from '../../navigation/public';
import { SharePluginStart } from '../../share/public';
import { KibanaLegacySetup, AngularRenderedAppUpdater } from '../../kibana_legacy/public';
import { VisualizationsStart } from '../../visualizations/public';
import { VisualizeConstants } from './application/visualize_constants';
import { setServices, VisualizeKibanaServices } from './kibana_services';
import {
FeatureCatalogueCategory,
HomePublicPluginSetup,
} from '../../../../../plugins/home/public';
import { UsageCollectionSetup } from '../../../../../plugins/usage_collection/public';
import { DefaultEditorController } from '../../../../../plugins/vis_default_editor/public';
import { FeatureCatalogueCategory, HomePublicPluginSetup } from '../../home/public';
import { DefaultEditorController } from '../../vis_default_editor/public';
export interface VisualizePluginStartDependencies {
data: DataPublicPluginStart;
embeddable: EmbeddableStart;
navigation: NavigationStart;
share: SharePluginStart;
share?: SharePluginStart;
visualizations: VisualizationsStart;
}
export interface VisualizePluginSetupDependencies {
home: HomePublicPluginSetup;
home?: HomePublicPluginSetup;
kibanaLegacy: KibanaLegacySetup;
usageCollection?: UsageCollectionSetup;
data: DataPublicPluginSetup;
}
export class VisualizePlugin implements Plugin {
private startDependencies: {
data: DataPublicPluginStart;
embeddable: EmbeddableStart;
navigation: NavigationStart;
savedObjectsClient: SavedObjectsClientContract;
share: SharePluginStart;
visualizations: VisualizationsStart;
} | null = null;
export class VisualizePlugin
implements
Plugin<void, void, VisualizePluginSetupDependencies, VisualizePluginStartDependencies> {
private appStateUpdater = new BehaviorSubject<AngularRenderedAppUpdater>(() => ({}));
private stopUrlTracking: (() => void) | undefined = undefined;
constructor(private initializerContext: PluginInitializerContext) {}
public async setup(
core: CoreSetup,
{ home, kibanaLegacy, usageCollection, data }: VisualizePluginSetupDependencies
core: CoreSetup<VisualizePluginStartDependencies>,
{ home, kibanaLegacy, data }: VisualizePluginSetupDependencies
) {
const { appMounted, appUnMounted, stop: stopUrlTracker, setActiveUrl } = createKbnUrlTracker({
baseUrl: core.http.basePath.prepend('/app/kibana'),
@ -117,50 +96,34 @@ export class VisualizePlugin implements Plugin {
updater$: this.appStateUpdater.asObservable(),
navLinkId: 'kibana:visualize',
mount: async (params: AppMountParameters) => {
const [coreStart] = await core.getStartServices();
if (this.startDependencies === null) {
throw new Error('not started yet');
}
const [coreStart, pluginsStart] = await core.getStartServices();
appMounted();
const {
savedObjectsClient,
embeddable,
navigation,
visualizations,
data: dataStart,
share,
} = this.startDependencies;
const deps: VisualizeKibanaServices = {
pluginInitializerContext: this.initializerContext,
addBasePath: coreStart.http.basePath.prepend,
core: coreStart,
chrome: coreStart.chrome,
data: dataStart,
embeddable,
indexPatterns: dataStart.indexPatterns,
localStorage: new Storage(localStorage),
navigation,
savedObjectsClient,
savedVisualizations: visualizations.savedVisualizationsLoader,
savedQueryService: dataStart.query.savedQueries,
share,
toastNotifications: coreStart.notifications.toasts,
uiSettings: coreStart.uiSettings,
config: kibanaLegacy.config,
chrome: coreStart.chrome,
data: pluginsStart.data,
localStorage: new Storage(localStorage),
navigation: pluginsStart.navigation,
savedObjectsClient: coreStart.savedObjects.client,
savedVisualizations: pluginsStart.visualizations.savedVisualizationsLoader,
share: pluginsStart.share,
toastNotifications: coreStart.notifications.toasts,
visualizeCapabilities: coreStart.application.capabilities.visualize,
visualizations,
usageCollection,
visualizations: pluginsStart.visualizations,
I18nContext: coreStart.i18n.Context,
setActiveUrl,
DefaultVisualizationEditor: DefaultEditorController,
createVisEmbeddableFromObject: visualizations.__LEGACY.createVisEmbeddableFromObject,
createVisEmbeddableFromObject:
pluginsStart.visualizations.__LEGACY.createVisEmbeddableFromObject,
};
setServices(deps);
const { renderApp } = await import('./np_ready/application');
const { renderApp } = await import('./application/application');
const unmount = renderApp(params.element, params.appBasePath, deps);
return () => {
unmount();
@ -169,33 +132,23 @@ export class VisualizePlugin implements Plugin {
},
});
home.featureCatalogue.register({
id: 'visualize',
title: 'Visualize',
description: i18n.translate('kbn.visualize.visualizeDescription', {
defaultMessage:
'Create visualizations and aggregate data stores in your Elasticsearch indices.',
}),
icon: 'visualizeApp',
path: `/app/kibana#${VisualizeConstants.LANDING_PAGE_PATH}`,
showOnHomePage: true,
category: FeatureCatalogueCategory.DATA,
});
if (home) {
home.featureCatalogue.register({
id: 'visualize',
title: 'Visualize',
description: i18n.translate('visualize.visualizeDescription', {
defaultMessage:
'Create visualizations and aggregate data stores in your Elasticsearch indices.',
}),
icon: 'visualizeApp',
path: `/app/kibana#${VisualizeConstants.LANDING_PAGE_PATH}`,
showOnHomePage: true,
category: FeatureCatalogueCategory.DATA,
});
}
}
public start(
core: CoreStart,
{ embeddable, navigation, data, share, visualizations }: VisualizePluginStartDependencies
) {
this.startDependencies = {
data,
embeddable,
navigation,
savedObjectsClient: core.savedObjects.client,
share,
visualizations,
};
}
public start(core: CoreStart, plugins: VisualizePluginStartDependencies) {}
stop() {
if (this.stopUrlTracking) {

View file

@ -19,7 +19,7 @@
import expect from '@kbn/expect';
import { VisualizeConstants } from '../../../../src/legacy/core_plugins/kibana/public/visualize/np_ready/visualize_constants';
import { VisualizeConstants } from '../../../../src/plugins/visualize/public/application/visualize_constants';
export default function({ getService, getPageObjects }) {
const retry = getService('retry');

View file

@ -24,7 +24,7 @@ import {
AREA_CHART_VIS_NAME,
LINE_CHART_VIS_NAME,
} from '../../page_objects/dashboard_page';
import { VisualizeConstants } from '../../../../src/legacy/core_plugins/kibana/public/visualize/np_ready/visualize_constants';
import { VisualizeConstants } from '../../../../src/plugins/visualize/public/application/visualize_constants';
export default function({ getService, getPageObjects }) {
const browser = getService('browser');

View file

@ -18,7 +18,7 @@
*/
import { FtrProviderContext } from '../ftr_provider_context';
import { VisualizeConstants } from '../../../src/legacy/core_plugins/kibana/public/visualize/np_ready/visualize_constants';
import { VisualizeConstants } from '../../../src/plugins/visualize/public/application/visualize_constants';
export function VisualizePageProvider({ getService, getPageObjects }: FtrProviderContext) {
const testSubjects = getService('testSubjects');

View file

@ -2007,7 +2007,6 @@
"kbn.context.reloadPageDescription.selectValidAnchorDocumentTextMessage": "にアクセスして有効な別のドキュメントを選択してください。",
"kbn.context.unableToLoadAnchorDocumentDescription": "別のドキュメントが読み込めません",
"kbn.context.unableToLoadDocumentDescription": "ドキュメントが読み込めません",
"kbn.dashboard.listing.table.descriptionColumnName": "説明",
"kbn.dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "「6.1.0」のダッシュボードの互換性のため、パネルデータを移行できませんでした。パネルには想定された列または行フィールドがありません",
"kbn.dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "「6.3.0」のダッシュボードの互換性のため、パネルデータを移行できませんでした。パネルに必要なフィールドがありません: {key}",
"kbn.dashboardTitle": "ダッシュボード",
@ -2308,45 +2307,6 @@
"kbn.management.landing.subhead": "インデックス、インデックスパターン、保存されたオブジェクト、Kibana の設定、その他を管理します。",
"kbn.management.landing.text": "すべてのツールの一覧は、左のメニューにあります。",
"kbn.managementTitle": "管理",
"kbn.topNavMenu.openInspectorButtonLabel": "検査",
"kbn.topNavMenu.saveVisualizationButtonLabel": "保存",
"kbn.topNavMenu.shareVisualizationButtonLabel": "共有",
"kbn.visualize.badge.readOnly.text": "読み込み専用",
"kbn.visualize.badge.readOnly.tooltip": "ビジュアライゼーションを保存できません",
"kbn.visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "indexPattern または savedSearchId が必要です",
"kbn.visualize.editor.createBreadcrumb": "作成",
"kbn.visualize.experimentalVisInfoText": "このビジュアライゼーションは実験的なものです。",
"kbn.visualize.helpMenu.appName": "可視化",
"kbn.visualize.linkedToSearch.unlinkSuccessNotificationText": "保存された検索「{searchTitle}」からリンクが解除されました",
"kbn.visualize.listing.betaTitle": "ベータ",
"kbn.visualize.listing.betaTooltip": "このビジュアライゼーションはベータ段階で、変更される可能性があります。デザインとコードはオフィシャル GA 機能よりも完成度が低く、現状のまま保証なしで提供されています。ベータ機能にはオフィシャル GA 機能の SLA が適用されません",
"kbn.visualize.listing.breadcrumb": "可視化",
"kbn.visualize.listing.createNew.createButtonLabel": "新規ビジュアライゼーションを追加",
"kbn.visualize.listing.createNew.description": "データに基づき異なるビジュアライゼーションを作成できます。",
"kbn.visualize.listing.createNew.title": "最初のビジュアライゼーションの作成",
"kbn.visualize.listing.experimentalTitle": "実験的",
"kbn.visualize.listing.experimentalTooltip": "このビジュアライゼーションは今後のリリースで変更または削除される可能性があり、SLA のサポート対象になりません。",
"kbn.visualize.listing.noItemsMessage": "ビジュアライゼーションがないようです。",
"kbn.visualize.listing.table.entityName": "ビジュアライゼーション",
"kbn.visualize.listing.table.entityNamePlural": "ビジュアライゼーション",
"kbn.visualize.listing.table.listTitle": "ビジュアライゼーション",
"kbn.visualize.listing.table.titleColumnName": "タイトル",
"kbn.visualize.listing.table.typeColumnName": "タイプ",
"kbn.visualize.pageHeading": "{chartName} {chartType} ビジュアライゼーション",
"kbn.visualize.saveDialog.saveAndAddToDashboardButtonLabel": "保存してダッシュボードに追加",
"kbn.visualize.topNavMenu.openInspectorButtonAriaLabel": "ビジュアライゼーションのインスペクターを開く",
"kbn.visualize.topNavMenu.openInspectorDisabledButtonTooltip": "このビジュアライゼーションはインスペクターをサポートしていません。",
"kbn.visualize.topNavMenu.saveVisualization.failureNotificationText": "「{visTitle}」の保存中にエラーが発生しました",
"kbn.visualize.topNavMenu.saveVisualization.successNotificationText": "「{visTitle}」が保存されました",
"kbn.visualize.topNavMenu.saveVisualizationButtonAriaLabel": "ビジュアライゼーションを保存",
"kbn.visualize.topNavMenu.saveVisualizationDisabledButtonTooltip": "保存する前に変更を適用または破棄",
"kbn.visualize.topNavMenu.shareVisualizationButtonAriaLabel": "ビジュアライゼーションを共有",
"kbn.visualize.visualizationTypeInvalidNotificationMessage": "無効なビジュアライゼーションタイプ",
"kbn.visualize.visualizeDescription": "ビジュアライゼーションを作成して Elasticsearch インデックスに保存されたデータを集約します。",
"kbn.visualize.visualizeListingBreadcrumbsTitle": "可視化",
"kbn.visualize.visualizeListingDeleteErrorTitle": "ビジュアライゼーションの削除中にエラーが発生",
"kbn.visualize.wizard.step1Breadcrumb": "作成",
"kbn.visualize.wizard.step2Breadcrumb": "作成",
"kbn.visualizeTitle": "可視化",
"savedObjectsManagement.indexPattern.confirmOverwriteButton": "上書き",
"savedObjectsManagement.indexPattern.confirmOverwriteLabel": "「{title}」に上書きしてよろしいですか?",
@ -4029,6 +3989,46 @@
"visualizations.newVisWizard.visTypeAliasDescription": "Visualize 外で Kibana アプリケーションを開きます。",
"visualizations.newVisWizard.visTypeAliasTitle": "Kibana アプリケーション",
"visualizations.savedObjectName": "ビジュアライゼーション",
"visualize.listing.table.descriptionColumnName": "説明",
"visualize.topNavMenu.openInspectorButtonLabel": "検査",
"visualize.topNavMenu.saveVisualizationButtonLabel": "保存",
"visualize.topNavMenu.shareVisualizationButtonLabel": "共有",
"visualize.badge.readOnly.text": "読み込み専用",
"visualize.badge.readOnly.tooltip": "ビジュアライゼーションを保存できません",
"visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "indexPattern または savedSearchId が必要です",
"visualize.editor.createBreadcrumb": "作成",
"visualize.experimentalVisInfoText": "このビジュアライゼーションは実験的なものです。",
"visualize.helpMenu.appName": "可視化",
"visualize.linkedToSearch.unlinkSuccessNotificationText": "保存された検索「{searchTitle}」からリンクが解除されました",
"visualize.listing.betaTitle": "ベータ",
"visualize.listing.betaTooltip": "このビジュアライゼーションはベータ段階で、変更される可能性があります。デザインとコードはオフィシャル GA 機能よりも完成度が低く、現状のまま保証なしで提供されています。ベータ機能にはオフィシャル GA 機能の SLA が適用されません",
"visualize.listing.breadcrumb": "可視化",
"visualize.listing.createNew.createButtonLabel": "新規ビジュアライゼーションを追加",
"visualize.listing.createNew.description": "データに基づき異なるビジュアライゼーションを作成できます。",
"visualize.listing.createNew.title": "最初のビジュアライゼーションの作成",
"visualize.listing.experimentalTitle": "実験的",
"visualize.listing.experimentalTooltip": "このビジュアライゼーションは今後のリリースで変更または削除される可能性があり、SLA のサポート対象になりません。",
"visualize.listing.noItemsMessage": "ビジュアライゼーションがないようです。",
"visualize.listing.table.entityName": "ビジュアライゼーション",
"visualize.listing.table.entityNamePlural": "ビジュアライゼーション",
"visualize.listing.table.listTitle": "ビジュアライゼーション",
"visualize.listing.table.titleColumnName": "タイトル",
"visualize.listing.table.typeColumnName": "タイプ",
"visualize.pageHeading": "{chartName} {chartType} ビジュアライゼーション",
"visualize.saveDialog.saveAndAddToDashboardButtonLabel": "保存してダッシュボードに追加",
"visualize.topNavMenu.openInspectorButtonAriaLabel": "ビジュアライゼーションのインスペクターを開く",
"visualize.topNavMenu.openInspectorDisabledButtonTooltip": "このビジュアライゼーションはインスペクターをサポートしていません。",
"visualize.topNavMenu.saveVisualization.failureNotificationText": "「{visTitle}」の保存中にエラーが発生しました",
"visualize.topNavMenu.saveVisualization.successNotificationText": "「{visTitle}」が保存されました",
"visualize.topNavMenu.saveVisualizationButtonAriaLabel": "ビジュアライゼーションを保存",
"visualize.topNavMenu.saveVisualizationDisabledButtonTooltip": "保存する前に変更を適用または破棄",
"visualize.topNavMenu.shareVisualizationButtonAriaLabel": "ビジュアライゼーションを共有",
"visualize.visualizationTypeInvalidNotificationMessage": "無効なビジュアライゼーションタイプ",
"visualize.visualizeDescription": "ビジュアライゼーションを作成して Elasticsearch インデックスに保存されたデータを集約します。",
"visualize.visualizeListingBreadcrumbsTitle": "可視化",
"visualize.visualizeListingDeleteErrorTitle": "ビジュアライゼーションの削除中にエラーが発生",
"visualize.wizard.step1Breadcrumb": "作成",
"visualize.wizard.step2Breadcrumb": "作成",
"xpack.actions.actionTypeRegistry.get.missingActionTypeErrorMessage": "アクションタイプ \"{id}\" は登録されていません。",
"xpack.actions.actionTypeRegistry.register.duplicateActionTypeErrorMessage": "アクションタイプ \"{id}\" は既に登録されています。",
"xpack.actions.appName": "アクション",

View file

@ -2008,7 +2008,6 @@
"kbn.context.reloadPageDescription.selectValidAnchorDocumentTextMessage": "以选择有效地定位点文档。",
"kbn.context.unableToLoadAnchorDocumentDescription": "无法加载该定位点文档",
"kbn.context.unableToLoadDocumentDescription": "无法加载文档",
"kbn.dashboard.listing.table.descriptionColumnName": "描述",
"kbn.dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "无法迁移用于“6.1.0”向后兼容的面板数据,面板不包含所需的列和/或行字段",
"kbn.dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "无法迁移用于“6.3.0”向后兼容的面板数据,面板不包含预期字段:{key}",
"kbn.dashboardTitle": "仪表板",
@ -2309,45 +2308,6 @@
"kbn.management.landing.subhead": "管理您的索引、索引模式、已保存对象、Kibana 设置等等。",
"kbn.management.landing.text": "应用的完整列表位于左侧菜单中。",
"kbn.managementTitle": "管理",
"kbn.topNavMenu.openInspectorButtonLabel": "检查",
"kbn.topNavMenu.saveVisualizationButtonLabel": "保存",
"kbn.topNavMenu.shareVisualizationButtonLabel": "共享",
"kbn.visualize.badge.readOnly.text": "只读",
"kbn.visualize.badge.readOnly.tooltip": "无法保存可视化",
"kbn.visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "必须提供 indexPattern 或 savedSearchId",
"kbn.visualize.editor.createBreadcrumb": "创建",
"kbn.visualize.experimentalVisInfoText": "此可视化标记为“实验”。",
"kbn.visualize.helpMenu.appName": "Visualize",
"kbn.visualize.linkedToSearch.unlinkSuccessNotificationText": "取消与已保存搜索 “{searchTitle}” 的链接",
"kbn.visualize.listing.betaTitle": "公测版",
"kbn.visualize.listing.betaTooltip": "此可视化为公测版,可能会进行更改。设计和代码相对于正式发行版功能还不够成熟,将按原样提供,且不提供任何保证。公测版功能不受正式发行版功能支持 SLA 的约束",
"kbn.visualize.listing.breadcrumb": "可视化",
"kbn.visualize.listing.createNew.createButtonLabel": "新建可视化",
"kbn.visualize.listing.createNew.description": "可以根据您的数据创建不同的可视化。",
"kbn.visualize.listing.createNew.title": "创建首个可视化",
"kbn.visualize.listing.experimentalTitle": "实验性",
"kbn.visualize.listing.experimentalTooltip": "未来版本可能会更改或删除此可视化,其不受支持 SLA 的约束。",
"kbn.visualize.listing.noItemsMessage": "看起来您还没有任何可视化。",
"kbn.visualize.listing.table.entityName": "可视化",
"kbn.visualize.listing.table.entityNamePlural": "可视化",
"kbn.visualize.listing.table.listTitle": "可视化",
"kbn.visualize.listing.table.titleColumnName": "标题",
"kbn.visualize.listing.table.typeColumnName": "类型",
"kbn.visualize.pageHeading": "{chartName} {chartType}可视化",
"kbn.visualize.saveDialog.saveAndAddToDashboardButtonLabel": "保存并添加到仪表板",
"kbn.visualize.topNavMenu.openInspectorButtonAriaLabel": "打开检查器查看可视化",
"kbn.visualize.topNavMenu.openInspectorDisabledButtonTooltip": "此可视化不支持任何检查器。",
"kbn.visualize.topNavMenu.saveVisualization.failureNotificationText": "保存 “{visTitle}” 时出错",
"kbn.visualize.topNavMenu.saveVisualization.successNotificationText": "已保存“{visTitle}”",
"kbn.visualize.topNavMenu.saveVisualizationButtonAriaLabel": "保存可视化",
"kbn.visualize.topNavMenu.saveVisualizationDisabledButtonTooltip": "应用或放弃所做更改,然后保存",
"kbn.visualize.topNavMenu.shareVisualizationButtonAriaLabel": "共享可视化",
"kbn.visualize.visualizationTypeInvalidNotificationMessage": "无效的可视化类型",
"kbn.visualize.visualizeDescription": "创建可视化并聚合存储在 Elasticsearch 索引中的数据。",
"kbn.visualize.visualizeListingBreadcrumbsTitle": "可视化",
"kbn.visualize.visualizeListingDeleteErrorTitle": "删除可视化时出错",
"kbn.visualize.wizard.step1Breadcrumb": "创建",
"kbn.visualize.wizard.step2Breadcrumb": "创建",
"kbn.visualizeTitle": "可视化",
"savedObjectsManagement.indexPattern.confirmOverwriteButton": "覆盖",
"savedObjectsManagement.indexPattern.confirmOverwriteLabel": "确定要覆盖 “{title}”?",
@ -4030,6 +3990,46 @@
"visualizations.newVisWizard.visTypeAliasDescription": "打开 Visualize 外部的 Kibana 应用程序。",
"visualizations.newVisWizard.visTypeAliasTitle": "Kibana 应用程序",
"visualizations.savedObjectName": "可视化",
"visualize.listing.table.descriptionColumnName": "描述",
"visualize.topNavMenu.openInspectorButtonLabel": "检查",
"visualize.topNavMenu.saveVisualizationButtonLabel": "保存",
"visualize.topNavMenu.shareVisualizationButtonLabel": "共享",
"visualize.badge.readOnly.text": "只读",
"visualize.badge.readOnly.tooltip": "无法保存可视化",
"visualize.createVisualization.noIndexPatternOrSavedSearchIdErrorMessage": "必须提供 indexPattern 或 savedSearchId",
"visualize.editor.createBreadcrumb": "创建",
"visualize.experimentalVisInfoText": "此可视化标记为“实验”。",
"visualize.helpMenu.appName": "Visualize",
"visualize.linkedToSearch.unlinkSuccessNotificationText": "取消与已保存搜索 “{searchTitle}” 的链接",
"visualize.listing.betaTitle": "公测版",
"visualize.listing.betaTooltip": "此可视化为公测版,可能会进行更改。设计和代码相对于正式发行版功能还不够成熟,将按原样提供,且不提供任何保证。公测版功能不受正式发行版功能支持 SLA 的约束",
"visualize.listing.breadcrumb": "可视化",
"visualize.listing.createNew.createButtonLabel": "新建可视化",
"visualize.listing.createNew.description": "可以根据您的数据创建不同的可视化。",
"visualize.listing.createNew.title": "创建首个可视化",
"visualize.listing.experimentalTitle": "实验性",
"visualize.listing.experimentalTooltip": "未来版本可能会更改或删除此可视化,其不受支持 SLA 的约束。",
"visualize.listing.noItemsMessage": "看起来您还没有任何可视化。",
"visualize.listing.table.entityName": "可视化",
"visualize.listing.table.entityNamePlural": "可视化",
"visualize.listing.table.listTitle": "可视化",
"visualize.listing.table.titleColumnName": "标题",
"visualize.listing.table.typeColumnName": "类型",
"visualize.pageHeading": "{chartName} {chartType}可视化",
"visualize.saveDialog.saveAndAddToDashboardButtonLabel": "保存并添加到仪表板",
"visualize.topNavMenu.openInspectorButtonAriaLabel": "打开检查器查看可视化",
"visualize.topNavMenu.openInspectorDisabledButtonTooltip": "此可视化不支持任何检查器。",
"visualize.topNavMenu.saveVisualization.failureNotificationText": "保存 “{visTitle}” 时出错",
"visualize.topNavMenu.saveVisualization.successNotificationText": "已保存“{visTitle}”",
"visualize.topNavMenu.saveVisualizationButtonAriaLabel": "保存可视化",
"visualize.topNavMenu.saveVisualizationDisabledButtonTooltip": "应用或放弃所做更改,然后保存",
"visualize.topNavMenu.shareVisualizationButtonAriaLabel": "共享可视化",
"visualize.visualizationTypeInvalidNotificationMessage": "无效的可视化类型",
"visualize.visualizeDescription": "创建可视化并聚合存储在 Elasticsearch 索引中的数据。",
"visualize.visualizeListingBreadcrumbsTitle": "可视化",
"visualize.visualizeListingDeleteErrorTitle": "删除可视化时出错",
"visualize.wizard.step1Breadcrumb": "创建",
"visualize.wizard.step2Breadcrumb": "创建",
"xpack.actions.actionTypeRegistry.get.missingActionTypeErrorMessage": "未注册操作类型“{id}”。",
"xpack.actions.actionTypeRegistry.register.duplicateActionTypeErrorMessage": "操作类型“{id}”已注册。",
"xpack.actions.appName": "操作",

View file

@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import expect from '@kbn/expect';
import { VisualizeConstants } from '../../../../../../src/legacy/core_plugins/kibana/public/visualize/np_ready/visualize_constants';
import { VisualizeConstants } from '../../../../../../src/plugins/visualize/public/application/visualize_constants';
import { FtrProviderContext } from '../../../ftr_provider_context';
export default function({ getPageObjects, getService }: FtrProviderContext) {