diff --git a/x-pack/platform/plugins/private/translations/translations/fr-FR.json b/x-pack/platform/plugins/private/translations/translations/fr-FR.json index 0ce339f16a98e..e22f1c2f3e997 100644 --- a/x-pack/platform/plugins/private/translations/translations/fr-FR.json +++ b/x-pack/platform/plugins/private/translations/translations/fr-FR.json @@ -44771,7 +44771,6 @@ "xpack.streams.streamDetailSchemaEditorUnmapSuccessToast": "Le champ {field} a bien été démappé", "xpack.streams.streamDetailView.dashboardsTab": "Tableaux de bord", "xpack.streams.streamDetailView.dataStream": "Flux de données", - "xpack.streams.streamDetailView.enrichmentTab": "Extraire le champ", "xpack.streams.streamDetailView.indexTemplate": "Modèle d'index", "xpack.streams.streamDetailView.ingestPipeline": "Pipeline d'ingestion", "xpack.streams.streamDetailView.managementTab.bottomBar.cancel": "Annuler les modifications", diff --git a/x-pack/platform/plugins/private/translations/translations/ja-JP.json b/x-pack/platform/plugins/private/translations/translations/ja-JP.json index b0bee5043c9c9..dd026757f5cf2 100644 --- a/x-pack/platform/plugins/private/translations/translations/ja-JP.json +++ b/x-pack/platform/plugins/private/translations/translations/ja-JP.json @@ -44727,7 +44727,6 @@ "xpack.streams.streamDetailSchemaEditorUnmapSuccessToast": "{field}は正常にマッピング解除されました", "xpack.streams.streamDetailView.dashboardsTab": "ダッシュボード", "xpack.streams.streamDetailView.dataStream": "データストリーム", - "xpack.streams.streamDetailView.enrichmentTab": "フィールドを抽出", "xpack.streams.streamDetailView.indexTemplate": "インデックステンプレート", "xpack.streams.streamDetailView.ingestPipeline": "パイプラインを投入", "xpack.streams.streamDetailView.managementTab.bottomBar.cancel": "変更をキャンセル", diff --git a/x-pack/platform/plugins/private/translations/translations/zh-CN.json b/x-pack/platform/plugins/private/translations/translations/zh-CN.json index d539570ccca0c..2be6b5ab18cb0 100644 --- a/x-pack/platform/plugins/private/translations/translations/zh-CN.json +++ b/x-pack/platform/plugins/private/translations/translations/zh-CN.json @@ -44812,7 +44812,6 @@ "xpack.streams.streamDetailSchemaEditorUnmapSuccessToast": "已成功对 {field} 取消映射", "xpack.streams.streamDetailView.dashboardsTab": "仪表板", "xpack.streams.streamDetailView.dataStream": "数据流", - "xpack.streams.streamDetailView.enrichmentTab": "提取字段", "xpack.streams.streamDetailView.indexTemplate": "索引模板", "xpack.streams.streamDetailView.ingestPipeline": "采集管道", "xpack.streams.streamDetailView.managementTab.bottomBar.cancel": "取消更改", diff --git a/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx b/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx index 31bafa9cb2144..7b7fcd8a08ab7 100644 --- a/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx +++ b/x-pack/platform/plugins/shared/streams_app/.storybook/get_mock_streams_app_context.tsx @@ -24,6 +24,7 @@ import type { StreamsPluginStart } from '@kbn/streams-plugin/public'; import type { UnifiedSearchPublicPluginStart } from '@kbn/unified-search-plugin/public'; import { DiscoverSharedPublicStart } from '@kbn/discover-shared-plugin/public'; import { ObservabilityAIAssistantPublicStart } from '@kbn/observability-ai-assistant-plugin/public'; +import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks'; import type { StreamsAppKibanaContext } from '../public/hooks/use_kibana'; import { StreamsTelemetryService } from '../public/telemetry/service'; @@ -70,6 +71,7 @@ export function getMockStreamsAppContext(): StreamsAppKibanaContext { share: {} as unknown as SharePublicStart, navigation: {} as unknown as NavigationPublicStart, savedObjectsTagging: {} as unknown as SavedObjectTaggingPluginStart, + fieldFormats: fieldFormatsServiceMock.createStartContract(), fieldsMetadata: fieldsMetadataPluginPublicMock.createStartContract(), licensing: {} as unknown as LicensingPluginStart, indexManagement: {} as unknown as IndexManagementPluginStart, diff --git a/x-pack/platform/plugins/shared/streams_app/kibana.jsonc b/x-pack/platform/plugins/shared/streams_app/kibana.jsonc index 07be06a836c73..8242467462580 100644 --- a/x-pack/platform/plugins/shared/streams_app/kibana.jsonc +++ b/x-pack/platform/plugins/shared/streams_app/kibana.jsonc @@ -16,6 +16,7 @@ "dataViews", "discover", "discoverShared", + "fieldFormats", "fieldsMetadata", "licensing", "indexManagement", diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx index 5deb0991c1eb3..be3f0829b6307 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/index.tsx @@ -5,12 +5,13 @@ * 2.0. */ -import { EuiFlexGroup, EuiFlexItem, EuiPanel, EuiSpacer } from '@elastic/eui'; +import { EuiFlexGroup, EuiFlexItem, EuiPanel } from '@elastic/eui'; import React, { useMemo, useState } from 'react'; import { IngestStreamLifecycle, Streams, isIlmLifecycle, isRoot } from '@kbn/streams-schema'; import { PolicyFromES } from '@kbn/index-lifecycle-management-common-shared'; import { i18n } from '@kbn/i18n'; import { useAbortController } from '@kbn/react-hooks'; +import { css } from '@emotion/react'; import { useKibana } from '../../../hooks/use_kibana'; import { EditLifecycleModal, LifecycleEditAction } from './modal'; import { RetentionSummary } from './summary'; @@ -149,7 +150,7 @@ export function StreamDetailLifecycle({ }; return ( - <> + - - - - - + + + + + + setOpenEditModal(action)} + isLoadingStats={isLoadingStats} + stats={stats} + statsError={statsError} + /> + + + + {definition.privileges.monitor && ( + + + + - - - setOpenEditModal(action)} - isLoadingStats={isLoadingStats} - stats={stats} - statsError={statsError} - /> + )} + {definition.privileges.lifecycle && isIlmLifecycle(definition.effective_lifecycle) ? ( + + + + - - - - - - - - {definition.privileges.monitor && ( - - - - - - )} - - {definition.privileges.lifecycle && isIlmLifecycle(definition.effective_lifecycle) ? ( - - - - - - ) : null} - - - + ) : null} + + ); } + +const flexRowCss = css` + flex-grow: 0; +`; diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/metadata.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/metadata.tsx index 35bf7dfbb2471..f7670e2bcea34 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/metadata.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/metadata.tsx @@ -16,7 +16,7 @@ import React, { ReactNode } from 'react'; import { useBoolean } from '@kbn/react-hooks'; import { EuiBadge, - EuiButton, + EuiButtonEmpty, EuiContextMenuItem, EuiContextMenuPanel, EuiFlexGroup, @@ -25,13 +25,15 @@ import { EuiIconTip, EuiLink, EuiLoadingSpinner, - EuiPanel, EuiPopover, EuiText, EuiToolTip, - formatNumber, + useEuiTheme, } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import { ES_FIELD_TYPES, KBN_FIELD_TYPES } from '@kbn/field-types'; +import { css } from '@emotion/react'; +import { useKibana } from '../../../hooks/use_kibana'; import { LifecycleEditAction } from './modal'; import { IlmLink } from './ilm_link'; import { useStreamsAppRouter } from '../../../hooks/use_streams_app_router'; @@ -54,8 +56,12 @@ export function RetentionMetadata({ isLoadingStats: boolean; statsError?: Error; }) { - const [isMenuOpen, { toggle: toggleMenu, off: closeMenu }] = useBoolean(false); + const { euiTheme } = useEuiTheme(); const router = useStreamsAppRouter(); + const [isMenuOpen, { toggle: toggleMenu, off: closeMenu }] = useBoolean(false); + + const dateFormatter = useDateFormatter(); + const lifecycle = definition.effective_lifecycle; const contextualMenu = @@ -74,17 +80,20 @@ export function RetentionMetadata({ : undefined } > - {i18n.translate('xpack.streams.entityDetailViewWithoutParams.editDataRetention', { defaultMessage: 'Edit data retention', })} - + } isOpen={isMenuOpen} @@ -147,13 +156,13 @@ export function RetentionMetadata({ ); return ( - + <> + {isDslLifecycle(lifecycle) @@ -167,9 +176,9 @@ export function RetentionMetadata({ })} + {contextualMenu} } - button={contextualMenu} dataTestSubj="streamsAppRetentionMetadataRetentionPeriod" /> @@ -186,51 +195,51 @@ export function RetentionMetadata({ /> {statsError ? ( '-' ) : isLoadingStats || !stats ? ( - ) : stats.bytesPerDay ? ( - formatIngestionRate(stats.bytesPerDay) ) : ( - '-' + dateFormatter.convert(stats.lastActivity) )} } /> {statsError ? ( '-' ) : isLoadingStats || !stats ? ( + ) : stats.bytesPerDay ? ( + formatIngestionRate(stats.bytesPerDay) ) : ( - formatNumber(stats.totalDocs, '0,0') + '-' )} } /> - + ); } @@ -238,13 +247,11 @@ function MetadataRow({ metadata, value, tip, - button, dataTestSubj, }: { metadata: string; value: ReactNode; tip?: string; - button?: ReactNode; dataTestSubj?: string; }) { return ( @@ -267,8 +274,13 @@ function MetadataRow({ ) : null} - {value} - {button} + {value} ); } + +const useDateFormatter = () => { + const { fieldFormats } = useKibana().dependencies.start; + + return fieldFormats.getDefaultInstance(KBN_FIELD_TYPES.DATE, [ES_FIELD_TYPES.DATE]); +}; diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/summary.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/summary.tsx index 75b68e3737a60..dabdb8f39d4d8 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/summary.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_lifecycle/summary.tsx @@ -5,61 +5,63 @@ * 2.0. */ -import React, { useMemo } from 'react'; -import { EuiPanel, EuiText } from '@elastic/eui'; +import React from 'react'; +import { EuiFlexGroup, EuiStat, formatNumber } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import { - Streams, - isDslLifecycle, - isIlmLifecycle, - isInheritLifecycle, - isRoot, -} from '@kbn/streams-schema'; +import { Streams } from '@kbn/streams-schema'; +import { css } from '@emotion/react'; +import { PrivilegesWarningIconWrapper } from '../../insufficient_privileges/insufficient_privileges'; +import { DataStreamStats } from './hooks/use_data_stream_stats'; -export function RetentionSummary({ definition }: { definition: Streams.ingest.all.GetResponse }) { - const summary = useMemo(() => summaryText(definition), [definition]); +const statCss = css` + min-width: 200px; +`; +export function RetentionSummary({ + definition, + stats, + isLoadingStats, + statsError, +}: { + definition: Streams.ingest.all.GetResponse; + stats?: DataStreamStats; + isLoadingStats: boolean; + statsError?: Error; +}) { return ( - - -
- {i18n.translate('xpack.streams.streamDetailLifecycle.retentionSummaryLabel', { - defaultMessage: 'Retention summary', - })} -
-

{summary}

-
-
+ + + {statsError || !stats ? '-' : stats.size} + + } + description={i18n.translate('xpack.streams.streamDetailLifecycle.storageSize', { + defaultMessage: 'Storage size', + })} + /> + + {statsError || !stats ? '-' : formatNumber(stats.totalDocs, '0,0')} + + } + description={i18n.translate('xpack.streams.streamDetailLifecycle.totalDocs', { + defaultMessage: 'Total doc count', + })} + /> + ); } - -function summaryText(definition: Streams.ingest.all.GetResponse) { - const lifecycle = definition.stream.ingest.lifecycle; - - if (isInheritLifecycle(lifecycle)) { - return i18n.translate('xpack.streams.streamDetailLifecycle.inheritLifecycleNote', { - defaultMessage: 'This data stream is inheriting its lifecycle configuration.', - }); - } else if (isDslLifecycle(lifecycle)) { - return isRoot(definition.stream.name) || Streams.UnwiredStream.GetResponse.is(definition) - ? i18n.translate('xpack.streams.streamDetailLifecycle.dslLifecycleRootNote', { - defaultMessage: 'This data stream is using a custom data retention.', - }) - : i18n.translate('xpack.streams.streamDetailLifecycle.dslLifecycleNonRootNote', { - defaultMessage: - 'This data stream is using a custom data retention as an override at this level.', - }); - } else if (isIlmLifecycle(lifecycle)) { - return isRoot(definition.stream.name) || Streams.UnwiredStream.GetResponse.is(definition) - ? i18n.translate('xpack.streams.streamDetailLifecycle.ilmPolicyRootNote', { - defaultMessage: 'This data stream is using an ILM policy.', - }) - : i18n.translate('xpack.streams.streamDetailLifecycle.ilmPolicyNonRootNote', { - defaultMessage: 'This data stream is using an ILM policy as an override at this level.', - }); - } - - return i18n.translate('xpack.streams.streamDetailLifecycle.disabledPolicyNote', { - defaultMessage: 'The retention for this data stream is disabled.', - }); -} diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/classic.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/classic.tsx index c14d118b0b0ef..68bcd9bf8f21f 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/classic.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/classic.tsx @@ -80,15 +80,6 @@ export function ClassicStreamDetailManagement({ const tabs: ManagementTabs = {}; if (definition.data_stream_exists) { - tabs.enrich = { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.enrichmentTab', { - defaultMessage: 'Extract field', - }), - }; - tabs.lifecycle = { content: ( @@ -97,6 +88,14 @@ export function ClassicStreamDetailManagement({ defaultMessage: 'Data retention', }), }; + tabs.enrich = { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.processingTab', { + defaultMessage: 'Processing', + }), + }; } if (definition.privileges.manage) { diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx index 3ee7541d75dbd..6a67ad0234dc6 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx @@ -35,6 +35,14 @@ export function WiredStreamDetailManagement({ } = useStreamsAppParams('/{key}/management/{tab}'); const tabs = { + lifecycle: { + content: ( + + ), + label: i18n.translate('xpack.streams.streamDetailView.lifecycleTab', { + defaultMessage: 'Data retention', + }), + }, route: { content: ( @@ -47,8 +55,8 @@ export function WiredStreamDetailManagement({ content: ( ), - label: i18n.translate('xpack.streams.streamDetailView.enrichmentTab', { - defaultMessage: 'Extract field', + label: i18n.translate('xpack.streams.streamDetailView.processingTab', { + defaultMessage: 'Processing', }), }, schemaEditor: { @@ -59,14 +67,6 @@ export function WiredStreamDetailManagement({ defaultMessage: 'Schema editor', }), }, - lifecycle: { - content: ( - - ), - label: i18n.translate('xpack.streams.streamDetailView.lifecycleTab', { - defaultMessage: 'Data retention', - }), - }, }; if (!isValidManagementSubTab(tab)) { diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wrapper.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wrapper.tsx index 5dfcbf469690e..02fa707b8be1e 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wrapper.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wrapper.tsx @@ -5,14 +5,14 @@ * 2.0. */ -import { EuiBadgeGroup, EuiFlexGroup } from '@elastic/eui'; +import { EuiButtonEmpty, EuiFlexGroup } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; import { Streams } from '@kbn/streams-schema'; import { useStreamDetail } from '../../../hooks/use_stream_detail'; import { useStreamsAppRouter } from '../../../hooks/use_streams_app_router'; import { StreamsAppPageTemplate } from '../../streams_app_page_template'; -import { ClassicStreamBadge, LifecycleBadge } from '../../stream_badges'; +import { ClassicStreamBadge, DiscoverBadgeButton, LifecycleBadge } from '../../stream_badges'; export type ManagementTabs = Record< string, @@ -53,16 +53,29 @@ export function Wrapper({ <> + {i18n.translate('xpack.streams.entityDetailViewWithoutParams.breadcrumb', { + defaultMessage: 'Streams', + })} + + ), + }, + ]} pageTitle={ - + {i18n.translate('xpack.streams.entityDetailViewWithoutParams.manageStreamTitle', { defaultMessage: 'Manage stream {streamId}', values: { streamId }, })} - + + {Streams.UnwiredStream.GetResponse.is(definition) && } - + } tabs={Object.entries(tabMap).map(([tabKey, { label, href }]) => { diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/stream_badges/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/stream_badges/index.tsx index 8af099e85ea90..76d29ddd63d08 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/stream_badges/index.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/stream_badges/index.tsx @@ -5,7 +5,7 @@ * 2.0. */ -import { EuiBadge, EuiLink } from '@elastic/eui'; +import { EuiBadge, EuiButtonIcon, EuiLink } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { IlmLocatorParams, ILM_LOCATOR_ID } from '@kbn/index-lifecycle-management-common-shared'; import { @@ -13,9 +13,12 @@ import { isIlmLifecycle, isErrorLifecycle, isDslLifecycle, + Streams, } from '@kbn/streams-schema'; import React from 'react'; +import { DISCOVER_APP_LOCATOR, DiscoverAppLocatorParams } from '@kbn/discover-plugin/common'; import { useKibana } from '../../hooks/use_kibana'; +import { getIndexPatterns } from '../../util/hierarchy_helpers'; export function ClassicStreamBadge() { return ( @@ -84,3 +87,39 @@ export function LifecycleBadge({ lifecycle }: { lifecycle: IngestStreamEffective ); } + +export function DiscoverBadgeButton({ + definition, +}: { + definition: Streams.ingest.all.GetResponse; +}) { + const { + dependencies: { + start: { share }, + }, + } = useKibana(); + const discoverLocator = share.url.locators.get(DISCOVER_APP_LOCATOR); + const dataStreamExists = + Streams.WiredStream.GetResponse.is(definition) || definition.data_stream_exists; + const indexPatterns = getIndexPatterns(definition.stream); + const esqlQuery = indexPatterns ? `FROM ${indexPatterns.join(', ')}` : undefined; + + if (!discoverLocator || !dataStreamExists || !esqlQuery) { + return null; + } + + const discoverLink = discoverLocator.useUrl({ + query: { + esql: esqlQuery, + }, + }); + + return ( + + ); +} diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_view/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_view/index.tsx index b388306a15688..39041af1638b6 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_view/index.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/components/stream_detail_view/index.tsx @@ -63,7 +63,7 @@ export function StreamDetailView() { const { definition } = useStreamDetail(); if (tab === 'management') { - return ; + return ; } if (!isValidStreamDetailTab(tab)) { diff --git a/x-pack/platform/plugins/shared/streams_app/public/components/stream_management_view/index.tsx b/x-pack/platform/plugins/shared/streams_app/public/components/stream_management_view/index.tsx deleted file mode 100644 index 90284a1b9e312..0000000000000 --- a/x-pack/platform/plugins/shared/streams_app/public/components/stream_management_view/index.tsx +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React from 'react'; -import { i18n } from '@kbn/i18n'; -import { useStreamsAppParams } from '../../hooks/use_streams_app_params'; -import { StreamDetailManagement } from '../data_management/stream_detail_management'; -import { useStreamsAppBreadcrumbs } from '../../hooks/use_streams_app_breadcrumbs'; - -export function StreamManagementView() { - const { - path: { key, tab }, - } = useStreamsAppParams('/{key}/management/{tab}', true); - - useStreamsAppBreadcrumbs(() => { - return [ - { - title: i18n.translate('xpack.streams.streamManagementView.title', { - defaultMessage: 'Manage stream', - }), - path: `/{key}/management/{tab}`, - params: { path: { key, tab } }, - } as const, - ]; - }, [key, tab]); - - return ; -} diff --git a/x-pack/platform/plugins/shared/streams_app/public/routes/config.tsx b/x-pack/platform/plugins/shared/streams_app/public/routes/config.tsx index f21f34e693a57..5a7d58b3619a9 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/routes/config.tsx +++ b/x-pack/platform/plugins/shared/streams_app/public/routes/config.tsx @@ -8,13 +8,12 @@ import { i18n } from '@kbn/i18n'; import { createRouter, Outlet, RouteMap } from '@kbn/typed-react-router-config'; import * as t from 'io-ts'; import React from 'react'; -import { StreamDetailView } from '../components/stream_detail_view'; import { StreamsAppPageTemplate } from '../components/streams_app_page_template'; import { StreamsAppRouterBreadcrumb } from '../components/streams_app_router_breadcrumb'; import { RedirectTo } from '../components/redirect_to'; import { StreamListView } from '../components/stream_list_view'; -import { StreamManagementView } from '../components/stream_management_view'; import { StreamDetailRoot } from '../components/stream_root'; +import { StreamDetailManagement } from '../components/data_management/stream_detail_management'; /** * The array of route definitions to be used when the application @@ -51,10 +50,28 @@ const streamsAppRoutes = { }), children: { '/{key}': { - element: , + element: ( + + ), }, + /** + * This route matching the StreamDetailView will be temporarily disable as it does not provide additional value than the stream list and lifecycle view + */ + // '/{key}/{tab}': { + // element: , + // params: t.type({ + // path: t.type({ + // tab: t.string, + // }), + // }), + // }, + /** + * This route is added as a replacement of the old StreamDetailView routing to redirect from existing overview/dashboard links into the management page + */ '/{key}/{tab}': { - element: , + element: ( + + ), params: t.type({ path: t.type({ tab: t.string, @@ -62,7 +79,7 @@ const streamsAppRoutes = { }), }, '/{key}/management/{tab}': { - element: , + element: , params: t.type({ path: t.type({ tab: t.string, diff --git a/x-pack/platform/plugins/shared/streams_app/public/types.ts b/x-pack/platform/plugins/shared/streams_app/public/types.ts index d52e9487361a4..e94a34a610809 100644 --- a/x-pack/platform/plugins/shared/streams_app/public/types.ts +++ b/x-pack/platform/plugins/shared/streams_app/public/types.ts @@ -16,6 +16,7 @@ import { DiscoverSharedPublicSetup, DiscoverSharedPublicStart, } from '@kbn/discover-shared-plugin/public'; +import { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import { FieldsMetadataPublicStart } from '@kbn/fields-metadata-plugin/public'; import { IndexManagementPluginStart } from '@kbn/index-management-shared-types'; import { IngestPipelinesPluginStart } from '@kbn/ingest-pipelines-plugin/public'; @@ -55,6 +56,7 @@ export interface StreamsAppStartDependencies { dataViews: DataViewsPublicPluginStart; discover: DiscoverStart; discoverShared: DiscoverSharedPublicStart; + fieldFormats: FieldFormatsStart; fieldsMetadata: FieldsMetadataPublicStart; indexManagement: IndexManagementPluginStart; ingestPipelines: IngestPipelinesPluginStart; diff --git a/x-pack/platform/plugins/shared/streams_app/tsconfig.json b/x-pack/platform/plugins/shared/streams_app/tsconfig.json index d37564635c35f..4cc47821da53c 100644 --- a/x-pack/platform/plugins/shared/streams_app/tsconfig.json +++ b/x-pack/platform/plugins/shared/streams_app/tsconfig.json @@ -70,6 +70,8 @@ "@kbn/content-packs-schema", "@kbn/charts-theme", "@kbn/grok-ui", - "@kbn/scout" + "@kbn/scout", + "@kbn/field-types", + "@kbn/field-formats-plugin" ] }