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"
]
}