mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
[Search] Navigation Updates (#224755)
## Summary Updates to streamline the search solution navigation:  Classic Nav: <img width="700" alt="image" src="https://github.com/user-attachments/assets/530c1f22-b69d-46f7-89ce-053f85f13d8a" /> Classic Global Flyout <img width="295" alt="image" src="https://github.com/user-attachments/assets/c9822f47-b9e4-4fad-997c-13356b2fc46a" /> ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md) - [ ] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios - [ ] [Flaky Test Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was used on any tests changed - [x] The PR description includes the appropriate Release Notes section, and the correct `release_note:*` label is applied per the [guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process) ## Release note Updated the Elasticsearch solution navigations items.
This commit is contained in:
parent
ea7d174e3c
commit
1faad6856c
20 changed files with 166 additions and 392 deletions
|
@ -17747,7 +17747,6 @@
|
|||
"xpack.enterpriseSearch.searchNav.management": "Gestion",
|
||||
"xpack.enterpriseSearch.searchNav.management.trainedModels": "Modèles entraînés",
|
||||
"xpack.enterpriseSearch.searchNav.mngt": "Gestion de la Suite",
|
||||
"xpack.enterpriseSearch.searchNav.otherTools": "Autres outils",
|
||||
"xpack.enterpriseSearch.searchNav.relevance": "Pertinence",
|
||||
"xpack.enterpriseSearch.searchProvider.aiSearch.name": "Intelligence artificielle de recherche",
|
||||
"xpack.enterpriseSearch.SemanticSearch.description": "Ajoutez facilement une recherche sémantique à Elasticsearch avec des points de terminaison d'inférence et le type de champ semantic_text, cela permettra d'améliorer la pertinence de la recherche.",
|
||||
|
@ -34841,9 +34840,6 @@
|
|||
"xpack.securitySolution.agentStatus.actionStatus.multiplePendingActions": "{count} {count, plural, one {action} other {actions}} en attente",
|
||||
"xpack.securitySolution.agentStatus.actionStatus.tooltipPendingActions": "Actions en attente :",
|
||||
"xpack.securitySolution.agentTypeIntegration.integrationSectionLabel": "Intégration",
|
||||
|
||||
|
||||
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.alertsByRule": "Alertes par règle",
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.count": "compte",
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.noRuleAlerts": "Aucune alerte à afficher",
|
||||
|
@ -35062,14 +35058,6 @@
|
|||
"xpack.securitySolution.assistant.content.promptContexts.viewTitle": "vue",
|
||||
"xpack.securitySolution.assistant.content.prompts.user.finallySuggestInvestigationGuideAndFormatAsMarkdown": "Ajoutez votre description, les actions que vous recommandez ainsi que les étapes de triage à puces. Utilisez les données \"MITRE ATT&CK\" fournies pour ajouter du contexte et des recommandations de MITRE ainsi que des liens hypertexte vers les pages pertinentes sur le site web de MITRE. Assurez-vous d'inclure les scores de risque de l'utilisateur et de l'hôte du contexte. Votre réponse doit inclure des étapes qui pointent vers les fonctionnalités spécifiques d'Elastic Security, y compris les actions de réponse du terminal, l'intégration OSQuery Manager d'Elastic Agent (avec des exemples de requêtes OSQuery), des analyses de timeline et d'entités, ainsi qu'un lien pour toute la documentation Elastic Security pertinente.",
|
||||
"xpack.securitySolution.assistant.content.prompts.user.thenSummarizeSuggestedKqlAndEqlQueries": "Évaluer l’événement depuis le contexte ci-dessus et formater soigneusement la sortie en syntaxe Markdown pour mon cas Elastic Security.",
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"xpack.securitySolution.assistant.quickPrompts.alertSummarizationPrompt": "En tant qu’expert en opérations de sécurité et en réponses aux incidents, décomposer l’alerte jointe et résumer ce qu’elle peut impliquer pour mon organisation.",
|
||||
"xpack.securitySolution.assistant.quickPrompts.alertSummarizationTitle": "Synthèse de l’alerte",
|
||||
"xpack.securitySolution.assistant.quickPrompts.AutomationPrompt": "Quelle intégration d’Elastic Agent activée par Fleet dois-je utiliser pour collecter des logs et des évènements de :",
|
||||
|
|
|
@ -17765,7 +17765,6 @@
|
|||
"xpack.enterpriseSearch.searchNav.management": "管理",
|
||||
"xpack.enterpriseSearch.searchNav.management.trainedModels": "学習済みモデル",
|
||||
"xpack.enterpriseSearch.searchNav.mngt": "スタック管理",
|
||||
"xpack.enterpriseSearch.searchNav.otherTools": "その他のツール",
|
||||
"xpack.enterpriseSearch.searchNav.relevance": "関連性",
|
||||
"xpack.enterpriseSearch.searchProvider.aiSearch.name": "検索AI",
|
||||
"xpack.enterpriseSearch.SemanticSearch.description": "推論エンドポイントとsemantic_textフィールド型を使用して、簡単にElasticsearchにセマンティック検索を追加し、検索の関連性を強化できます。",
|
||||
|
@ -34875,9 +34874,6 @@
|
|||
"xpack.securitySolution.agentStatus.actionStatus.multiplePendingActions": "{count}{count, plural, one {action} other {件のアクション}}が保留中です。",
|
||||
"xpack.securitySolution.agentStatus.actionStatus.tooltipPendingActions": "保留中のアクション:",
|
||||
"xpack.securitySolution.agentTypeIntegration.integrationSectionLabel": "統合",
|
||||
|
||||
|
||||
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.alertsByRule": "ルール別アラート",
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.count": "カウント",
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.noRuleAlerts": "表示するアラートがありません",
|
||||
|
@ -35096,14 +35092,6 @@
|
|||
"xpack.securitySolution.assistant.content.promptContexts.viewTitle": "表示",
|
||||
"xpack.securitySolution.assistant.content.prompts.user.finallySuggestInvestigationGuideAndFormatAsMarkdown": "説明、推奨されるアクション、箇条書きのトリアージステップを追加します。提供されたMITRE ATT&CKデータを使用して、MITREからのコンテキストや推奨事項を追加し、MITREのWebサイトの関連ページにハイパーリンクを貼ります。コンテキストのユーザーとホストのリスクスコアデータを必ず含めてください。回答には、エンドポイント対応アクション、ElasticエージェントOSQueryマネージャー統合(osqueryクエリーの例を付けて)、タイムライン、エンティティ分析など、Elasticセキュリティ固有の機能を指す手順を含め、関連するElasticセキュリティのドキュメントすべてにリンクしてください。",
|
||||
"xpack.securitySolution.assistant.content.prompts.user.thenSummarizeSuggestedKqlAndEqlQueries": "上記のコンテキストからイベントを評価し、Elasticセキュリティのケース用に、出力をマークダウン構文で正しく書式設定してください。",
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"xpack.securitySolution.assistant.quickPrompts.alertSummarizationPrompt": "セキュリティ運用とインシデント対応のエキスパートとして、添付されたアラートの内訳を説明し、それが私の組織にとって何を意味するのかを要約してください。",
|
||||
"xpack.securitySolution.assistant.quickPrompts.alertSummarizationTitle": "アラート要約",
|
||||
"xpack.securitySolution.assistant.quickPrompts.AutomationPrompt": "ログやイベントの収集には、どのFleet対応Elasticエージェント統合を使用すべきですか。",
|
||||
|
@ -35120,7 +35108,6 @@
|
|||
"xpack.securitySolution.assistant.settings.breadcrumb.security": "セキュリティ",
|
||||
"xpack.securitySolution.assistant.settings.breadcrumb.serverless.security": "AI Assistant for Security設定",
|
||||
"xpack.securitySolution.assistant.settings.breadcrumb.stackManagement": "スタック管理",
|
||||
|
||||
"xpack.securitySolution.assistant.updateQueryInFormTooltip": "フォームでクエリーを更新",
|
||||
"xpack.securitySolution.attackDiscovery.alertSelection.alertSelection.selectFewerAlertsLabel": "モデルのコンテキストウィンドウが小さい場合は送信されるアラート数が少なくなり、大きい場合は送信されるアラート数が多くなります。",
|
||||
"xpack.securitySolution.attackDiscovery.attackDiscoveryPanel.actions.takeAction.addToExistingCaseButtonLabel": "既存のケースに追加",
|
||||
|
|
|
@ -17761,7 +17761,6 @@
|
|||
"xpack.enterpriseSearch.searchNav.management": "管理",
|
||||
"xpack.enterpriseSearch.searchNav.management.trainedModels": "已训练模型",
|
||||
"xpack.enterpriseSearch.searchNav.mngt": "堆栈管理",
|
||||
"xpack.enterpriseSearch.searchNav.otherTools": "其他工具",
|
||||
"xpack.enterpriseSearch.searchNav.relevance": "相关性",
|
||||
"xpack.enterpriseSearch.searchProvider.aiSearch.name": "搜索 AI",
|
||||
"xpack.enterpriseSearch.SemanticSearch.description": "使用推理终端和 semantic_text 字段类型将语义搜索轻松添加到 Elasticsearch,以提高搜索相关性。",
|
||||
|
@ -34864,9 +34863,6 @@
|
|||
"xpack.securitySolution.agentStatus.actionStatus.multiplePendingActions": "{count} 个{count, plural, one {操作} other {操作}}待处理",
|
||||
"xpack.securitySolution.agentStatus.actionStatus.tooltipPendingActions": "未决操作:",
|
||||
"xpack.securitySolution.agentTypeIntegration.integrationSectionLabel": "集成",
|
||||
|
||||
|
||||
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.alertsByRule": "按规则排列的告警",
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.count": "计数",
|
||||
"xpack.securitySolution.alertCountByRuleByStatus.noRuleAlerts": "没有可显示的告警",
|
||||
|
@ -35085,14 +35081,6 @@
|
|||
"xpack.securitySolution.assistant.content.promptContexts.viewTitle": "视图",
|
||||
"xpack.securitySolution.assistant.content.prompts.user.finallySuggestInvestigationGuideAndFormatAsMarkdown": "添加描述、建议操作和带项目符号的分类步骤。使用提供的 MITRE ATT&CK 数据以从 MITRE 添加更多上下文和建议,以及指向 MITRE 网站上的相关页面的超链接。确保包括上下文中的用户和主机风险分数数据。您的响应应包含指向 Elastic Security 特定功能的步骤,包括终端响应操作、Elastic 代理 OSQuery 管理器集成(带示例 osquery 查询)、时间线和实体分析,以及所有相关 Elastic Security 文档的链接。",
|
||||
"xpack.securitySolution.assistant.content.prompts.user.thenSummarizeSuggestedKqlAndEqlQueries": "评估来自上述上下文的事件,并以用于我的 Elastic Security 案例的 Markdown 语法对您的输出进行全面格式化。",
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"xpack.securitySolution.assistant.quickPrompts.alertSummarizationPrompt": "作为安全运营和事件响应领域的专家,提供附加告警的细目并简要说明它对我所在组织可能的影响。",
|
||||
"xpack.securitySolution.assistant.quickPrompts.alertSummarizationTitle": "告警汇总",
|
||||
"xpack.securitySolution.assistant.quickPrompts.AutomationPrompt": "我应使用哪个启用 Fleet 的 Elastic 代理集成从以下项中收集日志和事件:",
|
||||
|
@ -35109,7 +35097,6 @@
|
|||
"xpack.securitySolution.assistant.settings.breadcrumb.security": "安全",
|
||||
"xpack.securitySolution.assistant.settings.breadcrumb.serverless.security": "适用于 Security 的 AI 助手设置",
|
||||
"xpack.securitySolution.assistant.settings.breadcrumb.stackManagement": "Stack Management",
|
||||
|
||||
"xpack.securitySolution.assistant.updateQueryInFormTooltip": "在表单中更新查询",
|
||||
"xpack.securitySolution.attackDiscovery.alertSelection.alertSelection.selectFewerAlertsLabel": "如果此模型的上下文窗口较小,则发送更少告警;或者如果窗口更大,则发送更多告警。",
|
||||
"xpack.securitySolution.attackDiscovery.attackDiscoveryPanel.actions.takeAction.addToExistingCaseButtonLabel": "添加到现有案例",
|
||||
|
|
|
@ -18,6 +18,7 @@ import {
|
|||
SEARCH_AI_SEARCH,
|
||||
SEARCH_INDICES,
|
||||
SEARCH_INDICES_START,
|
||||
SEARCH_INDEX_MANAGEMENT,
|
||||
} from '@kbn/deeplinks-search';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
|
@ -32,7 +33,7 @@ export const ENTERPRISE_SEARCH_PRODUCT_NAME = i18n.translate('xpack.enterpriseSe
|
|||
defaultMessage: 'Enterprise Search',
|
||||
});
|
||||
|
||||
export { SEARCH_INDICES_START, SEARCH_INDICES };
|
||||
export { SEARCH_INDICES_START, SEARCH_INDICES, SEARCH_INDEX_MANAGEMENT };
|
||||
|
||||
export const ENTERPRISE_SEARCH_HOME_PLUGIN = {
|
||||
ID: ENTERPRISE_SEARCH_APP_ID,
|
||||
|
@ -50,8 +51,8 @@ export const ENTERPRISE_SEARCH_HOME_PLUGIN = {
|
|||
export const ENTERPRISE_SEARCH_DATA_PLUGIN = {
|
||||
ID: ENTERPRISE_SEARCH_CONTENT_APP_ID,
|
||||
NAME: SEARCH_PRODUCT_NAME,
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.data.navTitle', {
|
||||
defaultMessage: 'Data',
|
||||
NAV_TITLE: i18n.translate('xpack.enterpriseSearch.build.navTitle', {
|
||||
defaultMessage: 'Build',
|
||||
}),
|
||||
DESCRIPTION: i18n.translate('xpack.enterpriseSearch.data.description', {
|
||||
defaultMessage:
|
||||
|
|
|
@ -29,8 +29,8 @@ const baseNavItems = [
|
|||
items: undefined,
|
||||
}),
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Data',
|
||||
id: 'data',
|
||||
'data-test-subj': 'searchSideNav-Build',
|
||||
id: 'build',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Indices',
|
||||
|
@ -39,27 +39,6 @@ const baseNavItems = [
|
|||
items: undefined,
|
||||
name: 'Index Management',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Connectors',
|
||||
href: '/app/elasticsearch/content/connectors',
|
||||
id: 'connectors',
|
||||
items: undefined,
|
||||
name: 'Connectors',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Crawlers',
|
||||
href: '/app/elasticsearch/content/crawlers',
|
||||
id: 'crawlers',
|
||||
items: undefined,
|
||||
name: 'Web Crawlers',
|
||||
},
|
||||
],
|
||||
name: 'Data',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Build',
|
||||
id: 'build',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Playground',
|
||||
href: '/app/search_playground',
|
||||
|
@ -67,6 +46,13 @@ const baseNavItems = [
|
|||
items: undefined,
|
||||
name: 'Playground',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Connectors',
|
||||
href: '/app/elasticsearch/content/connectors',
|
||||
id: 'connectors',
|
||||
items: undefined,
|
||||
name: 'Connectors',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-SearchApplications',
|
||||
href: '/app/elasticsearch/applications/search_applications',
|
||||
|
@ -81,6 +67,20 @@ const baseNavItems = [
|
|||
'data-test-subj': 'searchSideNav-Relevance',
|
||||
id: 'relevance',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Synonyms',
|
||||
href: '/app/elasticsearch/synonyms/',
|
||||
id: 'synonyms',
|
||||
items: undefined,
|
||||
name: 'Synonyms',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-QueryRules',
|
||||
href: '/app/elasticsearch/query_rules',
|
||||
id: 'searchQueryRules',
|
||||
items: undefined,
|
||||
name: 'Query Rules',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-InferenceEndpoints',
|
||||
href: '/app/elasticsearch/relevance/inference_endpoints',
|
||||
|
@ -91,41 +91,6 @@ const baseNavItems = [
|
|||
],
|
||||
name: 'Relevance',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-GettingStarted',
|
||||
id: 'es_getting_started',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Elasticsearch',
|
||||
href: '/app/elasticsearch/elasticsearch',
|
||||
id: 'elasticsearch',
|
||||
items: undefined,
|
||||
name: 'Elasticsearch',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-VectorSearch',
|
||||
href: '/app/elasticsearch/vector_search',
|
||||
id: 'vectorSearch',
|
||||
items: undefined,
|
||||
name: 'Vector Search',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-SemanticSearch',
|
||||
href: '/app/elasticsearch/semantic_search',
|
||||
id: 'semanticSearch',
|
||||
items: undefined,
|
||||
name: 'Semantic Search',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-AISearch',
|
||||
href: '/app/elasticsearch/ai_search',
|
||||
id: 'aiSearch',
|
||||
items: undefined,
|
||||
name: 'AI Search',
|
||||
},
|
||||
],
|
||||
name: 'Getting started',
|
||||
},
|
||||
];
|
||||
|
||||
const mockNavLinks = [
|
||||
|
@ -188,6 +153,16 @@ const mockNavLinks = [
|
|||
title: 'AI Search',
|
||||
url: '/app/elasticsearch/ai_search',
|
||||
},
|
||||
{
|
||||
id: 'searchSynonyms:synonyms',
|
||||
title: 'Synonyms',
|
||||
url: '/app/elasticsearch/synonyms/',
|
||||
},
|
||||
{
|
||||
id: 'searchQueryRules',
|
||||
title: 'Query Rules',
|
||||
url: '/app/elasticsearch/query_rules',
|
||||
},
|
||||
];
|
||||
|
||||
const defaultMockValues = {
|
||||
|
@ -238,27 +213,12 @@ describe('useEnterpriseSearchAnalyticsNav', () => {
|
|||
|
||||
expect(result.current).toEqual([
|
||||
baseNavItems[0],
|
||||
baseNavItems[1],
|
||||
|
||||
{
|
||||
...baseNavItems[1],
|
||||
'data-test-subj': 'searchSideNav-Build',
|
||||
id: 'build',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Playground',
|
||||
href: '/app/search_playground',
|
||||
id: 'playground',
|
||||
items: undefined,
|
||||
name: 'Playground',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-SearchApplications',
|
||||
href: '/app/elasticsearch/applications/search_applications',
|
||||
id: 'searchApplications',
|
||||
items: undefined,
|
||||
name: 'Search Applications',
|
||||
},
|
||||
|
||||
...baseNavItems[1].items,
|
||||
{
|
||||
href: '/app/elasticsearch/analytics',
|
||||
id: 'analyticsCollections',
|
||||
|
@ -268,8 +228,7 @@ describe('useEnterpriseSearchAnalyticsNav', () => {
|
|||
],
|
||||
name: 'Build',
|
||||
},
|
||||
baseNavItems[3],
|
||||
baseNavItems[4],
|
||||
baseNavItems[2],
|
||||
]);
|
||||
});
|
||||
|
||||
|
|
|
@ -90,25 +90,19 @@ export const getNavigationTreeDefinition = ({
|
|||
);
|
||||
},
|
||||
link: 'enterpriseSearch',
|
||||
},
|
||||
|
||||
{
|
||||
children: [
|
||||
{
|
||||
link: 'discover',
|
||||
},
|
||||
{
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dashboards'));
|
||||
},
|
||||
link: 'dashboards',
|
||||
},
|
||||
],
|
||||
id: 'analyze',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.analyze', {
|
||||
defaultMessage: 'Analyze',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.home', {
|
||||
defaultMessage: 'Home',
|
||||
}),
|
||||
},
|
||||
{
|
||||
link: 'discover',
|
||||
},
|
||||
{
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dashboards'));
|
||||
},
|
||||
link: 'dashboards',
|
||||
},
|
||||
{
|
||||
children: [
|
||||
{
|
||||
|
@ -121,30 +115,11 @@ export const getNavigationTreeDefinition = ({
|
|||
},
|
||||
link: 'elasticsearchIndexManagement',
|
||||
},
|
||||
{ link: 'enterpriseSearchContent:connectors' },
|
||||
{ link: 'enterpriseSearchContent:webCrawlers' },
|
||||
],
|
||||
id: 'data',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.data', {
|
||||
defaultMessage: 'Data',
|
||||
}),
|
||||
},
|
||||
{
|
||||
children: [
|
||||
{
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dev_tools'));
|
||||
},
|
||||
id: 'dev_tools',
|
||||
link: 'dev_tools',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.devTools', {
|
||||
defaultMessage: 'Dev Tools',
|
||||
}),
|
||||
},
|
||||
{
|
||||
breadcrumbStatus: 'hidden',
|
||||
link: 'searchPlayground',
|
||||
},
|
||||
{ link: 'enterpriseSearchContent:connectors' },
|
||||
{
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
const someSubItemSelected = searchApps?.some((app) =>
|
||||
|
@ -208,23 +183,15 @@ export const getNavigationTreeDefinition = ({
|
|||
},
|
||||
{
|
||||
children: [
|
||||
{ link: 'searchInferenceEndpoints:inferenceEndpoints' },
|
||||
{ link: 'searchSynonyms:synonyms' },
|
||||
{ link: 'searchQueryRules' },
|
||||
{ link: 'searchInferenceEndpoints:inferenceEndpoints' },
|
||||
],
|
||||
id: 'relevance',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.relevance', {
|
||||
defaultMessage: 'Relevance',
|
||||
}),
|
||||
},
|
||||
{
|
||||
children: [{ link: 'maps' }, { link: 'canvas' }, { link: 'graph' }],
|
||||
id: 'otherTools',
|
||||
renderAs: 'accordion',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.otherTools', {
|
||||
defaultMessage: 'Other tools',
|
||||
}),
|
||||
},
|
||||
],
|
||||
defaultIsCollapsed: false,
|
||||
icon,
|
||||
|
@ -237,6 +204,16 @@ export const getNavigationTreeDefinition = ({
|
|||
footer: [
|
||||
{
|
||||
children: [
|
||||
{
|
||||
getIsActive: ({ pathNameSerialized, prepend }) => {
|
||||
return pathNameSerialized.startsWith(prepend('/app/dev_tools'));
|
||||
},
|
||||
id: 'dev_tools',
|
||||
link: 'dev_tools',
|
||||
title: i18n.translate('xpack.enterpriseSearch.searchNav.devTools', {
|
||||
defaultMessage: 'Dev Tools',
|
||||
}),
|
||||
},
|
||||
{
|
||||
breadcrumbStatus: 'hidden',
|
||||
children: [
|
||||
|
|
|
@ -281,6 +281,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
return renderApp(Elasticsearch, kibanaDeps, pluginData);
|
||||
},
|
||||
title: ELASTICSEARCH_PLUGIN.NAME,
|
||||
visibleIn: [],
|
||||
});
|
||||
|
||||
core.application.register({
|
||||
|
@ -302,6 +303,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
return renderApp(EnterpriseSearchVectorSearch, kibanaDeps, pluginData);
|
||||
},
|
||||
title: VECTOR_SEARCH_PLUGIN.NAV_TITLE,
|
||||
visibleIn: [],
|
||||
});
|
||||
|
||||
core.application.register({
|
||||
|
@ -323,6 +325,7 @@ export class EnterpriseSearchPlugin implements Plugin {
|
|||
return renderApp(EnterpriseSearchSemanticSearch, kibanaDeps, pluginData);
|
||||
},
|
||||
title: SEMANTIC_SEARCH_PLUGIN.NAV_TITLE,
|
||||
visibleIn: [],
|
||||
});
|
||||
|
||||
core.application.register({
|
||||
|
|
|
@ -33,6 +33,7 @@ import {
|
|||
SEARCH_PRODUCT_NAME,
|
||||
SEARCH_INDICES,
|
||||
SEARCH_INDICES_START,
|
||||
SEARCH_INDEX_MANAGEMENT,
|
||||
} from '../common/constants';
|
||||
|
||||
import {
|
||||
|
@ -114,6 +115,7 @@ export class EnterpriseSearchPlugin implements Plugin<void, void, PluginsSetup,
|
|||
AI_SEARCH_PLUGIN.ID,
|
||||
SEARCH_INDICES,
|
||||
SEARCH_INDICES_START,
|
||||
SEARCH_INDEX_MANAGEMENT,
|
||||
];
|
||||
|
||||
if (customIntegrations) {
|
||||
|
|
|
@ -10,16 +10,8 @@ import { IndexManagementPluginSetup } from '@kbn/index-management-shared-types';
|
|||
import { reactRouterNavigate } from '@kbn/kibana-react-plugin/public';
|
||||
import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template';
|
||||
import React, { useRef, useEffect, useCallback } from 'react';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { useKibana } from '../../hooks/use_kibana';
|
||||
|
||||
const breadcrumbText = i18n.translate('xpack.searchIndices.breadcrumb', {
|
||||
defaultMessage: 'Data',
|
||||
});
|
||||
|
||||
const breadcrumb = {
|
||||
text: breadcrumbText,
|
||||
};
|
||||
import { PARENT_BREADCRUMB } from '../../constants';
|
||||
|
||||
export const SearchIndexManagementApp: React.FC<{
|
||||
indexManagement: IndexManagementPluginSetup;
|
||||
|
@ -34,7 +26,7 @@ export const SearchIndexManagementApp: React.FC<{
|
|||
});
|
||||
|
||||
const wrapBreadcrumbValue = !cloud?.isServerlessEnabled
|
||||
? [wrapBreadcrumb(breadcrumb, history)]
|
||||
? [wrapBreadcrumb(PARENT_BREADCRUMB, history)]
|
||||
: [];
|
||||
|
||||
const breadcrumbValue = [
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
export enum QueryKeys {
|
||||
FetchIndex = 'fetchIndex',
|
||||
FetchMapping = 'fetchMapping',
|
||||
|
@ -24,3 +26,11 @@ export const API_KEY_PLACEHOLDER = 'YOUR_API_KEY';
|
|||
export const INDEX_PLACEHOLDER = 'my-index';
|
||||
|
||||
export const DEFAULT_DOCUMENT_PAGE_SIZE = 10;
|
||||
|
||||
export const BREADCRUMB_TEXT = i18n.translate('xpack.searchIndices.indexManagement.breadcrumb', {
|
||||
defaultMessage: 'Build',
|
||||
});
|
||||
|
||||
export const PARENT_BREADCRUMB = {
|
||||
text: BREADCRUMB_TEXT,
|
||||
};
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
|
||||
import { useEffect } from 'react';
|
||||
import type { ChromeBreadcrumb } from '@kbn/core-chrome-browser';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
import { useKibana } from './use_kibana';
|
||||
import { PARENT_BREADCRUMB } from '../constants';
|
||||
|
||||
export const usePageChrome = (docTitle: string, breadcrumbs: ChromeBreadcrumb[]) => {
|
||||
const { chrome, serverless } = useKibana().services;
|
||||
|
@ -19,14 +19,7 @@ export const usePageChrome = (docTitle: string, breadcrumbs: ChromeBreadcrumb[])
|
|||
if (serverless) {
|
||||
serverless.setBreadcrumbs(breadcrumbs);
|
||||
} else {
|
||||
const newBreadcrumbs = [
|
||||
{
|
||||
text: i18n.translate('xpack.searchIndices.breadcrumbs.data.label', {
|
||||
defaultMessage: 'Data',
|
||||
}),
|
||||
},
|
||||
...breadcrumbs,
|
||||
];
|
||||
const newBreadcrumbs = [PARENT_BREADCRUMB, ...breadcrumbs];
|
||||
chrome.setBreadcrumbs(newBreadcrumbs, { project: { value: newBreadcrumbs, absolute: true } });
|
||||
}
|
||||
return () => {
|
||||
|
|
|
@ -5,7 +5,12 @@
|
|||
* 2.0.
|
||||
*/
|
||||
|
||||
import type { CoreSetup, CoreStart, Plugin } from '@kbn/core/public';
|
||||
import {
|
||||
type CoreSetup,
|
||||
type CoreStart,
|
||||
type Plugin,
|
||||
DEFAULT_APP_CATEGORIES,
|
||||
} from '@kbn/core/public';
|
||||
import { SEARCH_INDICES_CREATE_INDEX } from '@kbn/deeplinks-search/constants';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
|
@ -92,6 +97,7 @@ export class SearchIndicesPlugin
|
|||
core.application.register({
|
||||
id: SEARCH_INDEX_MANAGEMENT_APP_ID,
|
||||
appRoute: SEARCH_INDEX_MANAGEMENT_APP_BASE,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
title: i18n.translate('xpack.searchIndices.elasticsearchIndices.indexManagementTitle', {
|
||||
defaultMessage: 'Index Management',
|
||||
}),
|
||||
|
@ -103,7 +109,8 @@ export class SearchIndicesPlugin
|
|||
indexManagement: plugins.indexManagement,
|
||||
});
|
||||
},
|
||||
visibleIn: [],
|
||||
order: 1,
|
||||
visibleIn: ['sideNav'],
|
||||
});
|
||||
|
||||
registerLocators(plugins.share);
|
||||
|
|
|
@ -13,6 +13,7 @@ import {
|
|||
AppUpdater,
|
||||
CoreSetup,
|
||||
CoreStart,
|
||||
DEFAULT_APP_CATEGORIES,
|
||||
Plugin,
|
||||
PluginInitializerContext,
|
||||
} from '@kbn/core/public';
|
||||
|
@ -48,6 +49,7 @@ export class SearchInferenceEndpointsPlugin
|
|||
core.application.register({
|
||||
id: PLUGIN_ID,
|
||||
appRoute: '/app/elasticsearch/relevance',
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
deepLinks: [
|
||||
{
|
||||
id: 'inferenceEndpoints',
|
||||
|
@ -73,7 +75,8 @@ export class SearchInferenceEndpointsPlugin
|
|||
|
||||
return renderApp(coreStart, startDeps, element);
|
||||
},
|
||||
visibleIn: [],
|
||||
order: 5,
|
||||
visibleIn: ['sideNav'],
|
||||
});
|
||||
|
||||
registerLocators(plugins.share);
|
||||
|
|
|
@ -8,13 +8,7 @@
|
|||
import React from 'react';
|
||||
|
||||
import { EuiText } from '@elastic/eui';
|
||||
import {
|
||||
ENTERPRISE_SEARCH_APP_ID,
|
||||
SEARCH_ELASTICSEARCH,
|
||||
SEARCH_VECTOR_SEARCH,
|
||||
SEARCH_SEMANTIC_SEARCH,
|
||||
SEARCH_AI_SEARCH,
|
||||
} from '@kbn/deeplinks-search';
|
||||
import { ENTERPRISE_SEARCH_APP_ID } from '@kbn/deeplinks-search';
|
||||
import { i18n } from '@kbn/i18n';
|
||||
|
||||
import type { ClassicNavItem } from './types';
|
||||
|
@ -36,8 +30,8 @@ export const BaseClassicNavItems: ClassicNavItem[] = [
|
|||
),
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Data',
|
||||
id: 'data',
|
||||
'data-test-subj': 'searchSideNav-Build',
|
||||
id: 'build',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Indices',
|
||||
|
@ -46,31 +40,6 @@ export const BaseClassicNavItems: ClassicNavItem[] = [
|
|||
},
|
||||
id: 'search_indices',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Connectors',
|
||||
deepLink: {
|
||||
link: 'enterpriseSearchContent:connectors',
|
||||
shouldShowActiveForSubroutes: true,
|
||||
},
|
||||
id: 'connectors',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Crawlers',
|
||||
deepLink: {
|
||||
link: 'enterpriseSearchContent:webCrawlers',
|
||||
shouldShowActiveForSubroutes: true,
|
||||
},
|
||||
id: 'crawlers',
|
||||
},
|
||||
],
|
||||
name: i18n.translate('xpack.searchNavigation.classicNav.dataTitle', {
|
||||
defaultMessage: 'Data',
|
||||
}),
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Build',
|
||||
id: 'build',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Playground',
|
||||
deepLink: {
|
||||
|
@ -79,6 +48,14 @@ export const BaseClassicNavItems: ClassicNavItem[] = [
|
|||
},
|
||||
id: 'playground',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Connectors',
|
||||
deepLink: {
|
||||
link: 'enterpriseSearchContent:connectors',
|
||||
shouldShowActiveForSubroutes: true,
|
||||
},
|
||||
id: 'connectors',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-SearchApplications',
|
||||
deepLink: {
|
||||
|
@ -95,14 +72,6 @@ export const BaseClassicNavItems: ClassicNavItem[] = [
|
|||
'data-test-subj': 'searchSideNav-Relevance',
|
||||
id: 'relevance',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-InferenceEndpoints',
|
||||
deepLink: {
|
||||
link: 'searchInferenceEndpoints:inferenceEndpoints',
|
||||
shouldShowActiveForSubroutes: true,
|
||||
},
|
||||
id: 'inference_endpoints',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Synonyms',
|
||||
deepLink: {
|
||||
|
@ -119,46 +88,17 @@ export const BaseClassicNavItems: ClassicNavItem[] = [
|
|||
},
|
||||
id: 'searchQueryRules',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-InferenceEndpoints',
|
||||
deepLink: {
|
||||
link: 'searchInferenceEndpoints:inferenceEndpoints',
|
||||
shouldShowActiveForSubroutes: true,
|
||||
},
|
||||
id: 'inference_endpoints',
|
||||
},
|
||||
],
|
||||
name: i18n.translate('xpack.searchNavigation.classicNav.relevanceTitle', {
|
||||
defaultMessage: 'Relevance',
|
||||
}),
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-GettingStarted',
|
||||
id: 'es_getting_started',
|
||||
items: [
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-Elasticsearch',
|
||||
deepLink: {
|
||||
link: SEARCH_ELASTICSEARCH,
|
||||
},
|
||||
id: 'elasticsearch',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-VectorSearch',
|
||||
deepLink: {
|
||||
link: SEARCH_VECTOR_SEARCH,
|
||||
},
|
||||
id: 'vectorSearch',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-SemanticSearch',
|
||||
deepLink: {
|
||||
link: SEARCH_SEMANTIC_SEARCH,
|
||||
},
|
||||
id: 'semanticSearch',
|
||||
},
|
||||
{
|
||||
'data-test-subj': 'searchSideNav-AISearch',
|
||||
deepLink: {
|
||||
link: SEARCH_AI_SEARCH,
|
||||
},
|
||||
id: 'aiSearch',
|
||||
},
|
||||
],
|
||||
name: i18n.translate('xpack.searchNavigation.classicNav.gettingStartedTitle', {
|
||||
defaultMessage: 'Getting started',
|
||||
}),
|
||||
},
|
||||
];
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
import type { CoreSetup, Plugin, AppMountParameters, CoreStart } from '@kbn/core/public';
|
||||
import { DEFAULT_APP_CATEGORIES } from '@kbn/core/public';
|
||||
import { PLUGIN_ID, PLUGIN_NAME, PLUGIN_TITLE } from '../common';
|
||||
import {
|
||||
AppPluginSetupDependencies,
|
||||
|
@ -32,6 +33,7 @@ export class QueryRulesPlugin
|
|||
core.application.register({
|
||||
id: PLUGIN_ID,
|
||||
appRoute: PLUGIN_ROUTE_ROOT,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
title: PLUGIN_TITLE,
|
||||
async mount({ element, history }: AppMountParameters) {
|
||||
const { renderApp } = await import('./application');
|
||||
|
@ -48,7 +50,8 @@ export class QueryRulesPlugin
|
|||
|
||||
return renderApp(coreStart, startDeps, element);
|
||||
},
|
||||
visibleIn: ['globalSearch'],
|
||||
order: 4,
|
||||
visibleIn: ['globalSearch', 'sideNav'],
|
||||
});
|
||||
|
||||
return {};
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
import type { CoreSetup, Plugin, AppMountParameters, CoreStart } from '@kbn/core/public';
|
||||
import { DEFAULT_APP_CATEGORIES } from '@kbn/core/public';
|
||||
import { PLUGIN_ID, PLUGIN_NAME, PLUGIN_TITLE } from '../common';
|
||||
import {
|
||||
AppPluginSetupDependencies,
|
||||
|
@ -32,6 +33,7 @@ export class SearchSynonymsPlugin
|
|||
core.application.register({
|
||||
id: PLUGIN_ID,
|
||||
appRoute: PLUGIN_ROUTE_ROOT,
|
||||
category: DEFAULT_APP_CATEGORIES.enterpriseSearch,
|
||||
title: PLUGIN_TITLE,
|
||||
deepLinks: [
|
||||
{
|
||||
|
@ -56,7 +58,8 @@ export class SearchSynonymsPlugin
|
|||
|
||||
return renderApp(coreStart, startDeps, element);
|
||||
},
|
||||
visibleIn: [],
|
||||
order: 3,
|
||||
visibleIn: ['sideNav'],
|
||||
});
|
||||
|
||||
return {};
|
||||
|
|
|
@ -43,21 +43,14 @@ export default function searchSolutionNavigation({
|
|||
it('renders expected navigation items', async () => {
|
||||
await searchClassicNavigation.expectAllNavItems([
|
||||
{ id: 'Home', label: 'Home' },
|
||||
{ id: 'Data', label: 'Data' },
|
||||
{ id: 'Indices', label: 'Index Management' },
|
||||
{ id: 'Connectors', label: 'Connectors' },
|
||||
{ id: 'Crawlers', label: 'Web Crawlers' },
|
||||
{ id: 'Build', label: 'Build' },
|
||||
{ id: 'Indices', label: 'Index Management' },
|
||||
{ id: 'Playground', label: 'Playground' },
|
||||
{ id: 'Connectors', label: 'Connectors' },
|
||||
{ id: 'SearchApplications', label: 'Search Applications' },
|
||||
{ id: 'Relevance', label: 'Relevance' },
|
||||
{ id: 'InferenceEndpoints', label: 'Inference Endpoints' },
|
||||
{ id: 'Synonyms', label: 'Synonyms' },
|
||||
{ id: 'GettingStarted', label: 'Getting started' },
|
||||
{ id: 'Elasticsearch', label: 'Elasticsearch' },
|
||||
{ id: 'VectorSearch', label: 'Vector Search' },
|
||||
{ id: 'SemanticSearch', label: 'Semantic Search' },
|
||||
{ id: 'AISearch', label: 'AI Search' },
|
||||
{ id: 'InferenceEndpoints', label: 'Inference Endpoints' },
|
||||
]);
|
||||
});
|
||||
it('has expected navigation', async () => {
|
||||
|
@ -72,19 +65,14 @@ export default function searchSolutionNavigation({
|
|||
}> = [
|
||||
{
|
||||
navItem: 'Indices',
|
||||
breadcrumbs: ['Data', 'Index Management'],
|
||||
breadcrumbs: ['Build', 'Index Management'],
|
||||
pageTestSubject: 'indexManagementHeaderContent',
|
||||
},
|
||||
{
|
||||
navItem: 'Connectors',
|
||||
breadcrumbs: ['Data', 'Connectors'],
|
||||
breadcrumbs: ['Build', 'Connectors'],
|
||||
pageTestSubject: 'searchCreateConnectorPage',
|
||||
},
|
||||
{
|
||||
navItem: 'Crawlers',
|
||||
breadcrumbs: ['Data', 'Web Crawlers'],
|
||||
pageTestSubject: 'searchConnectorsPage',
|
||||
},
|
||||
{
|
||||
navItem: 'Playground',
|
||||
breadcrumbs: ['Build', 'Playground'],
|
||||
|
@ -95,35 +83,15 @@ export default function searchSolutionNavigation({
|
|||
breadcrumbs: ['Build', 'Search Applications'],
|
||||
pageTestSubject: 'searchApplicationsListPage',
|
||||
},
|
||||
{
|
||||
navItem: 'InferenceEndpoints',
|
||||
breadcrumbs: ['Relevance', 'Inference Endpoints'],
|
||||
pageTestSubject: 'inferenceEndpointsPage',
|
||||
},
|
||||
{
|
||||
navItem: 'Synonyms',
|
||||
breadcrumbs: ['Relevance', 'Synonyms'],
|
||||
pageTestSubject: 'searchSynonymsOverviewPage',
|
||||
},
|
||||
{
|
||||
navItem: 'Elasticsearch',
|
||||
breadcrumbs: ['Getting started with Elasticsearch'],
|
||||
pageTestSubject: 'elasticsearchGuide',
|
||||
},
|
||||
{
|
||||
navItem: 'VectorSearch',
|
||||
breadcrumbs: ['Getting started', 'Vector Search'],
|
||||
pageTestSubject: 'vectorSearchGuidePage',
|
||||
},
|
||||
{
|
||||
navItem: 'SemanticSearch',
|
||||
breadcrumbs: ['Getting started', 'Semantic Search'],
|
||||
pageTestSubject: 'semanticSearchGuidePage',
|
||||
},
|
||||
{
|
||||
navItem: 'AISearch',
|
||||
breadcrumbs: ['Getting started', 'AI Search'],
|
||||
pageTestSubject: 'aiSearchGuidePage',
|
||||
navItem: 'InferenceEndpoints',
|
||||
breadcrumbs: ['Relevance', 'Inference Endpoints'],
|
||||
pageTestSubject: 'inferenceEndpointsPage',
|
||||
},
|
||||
];
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
|
|||
await pageObjects.searchIndexDetailsPage.expectIndexNametoBeInBreadcrumbs(
|
||||
indexWithoutDataName
|
||||
);
|
||||
await pageObjects.searchIndexDetailsPage.expectBreadcrumbsToBeAvailable('Data');
|
||||
await pageObjects.searchIndexDetailsPage.expectBreadcrumbsToBeAvailable('Build');
|
||||
await pageObjects.searchIndexDetailsPage.expectBreadcrumbsToBeAvailable(
|
||||
'Index Management'
|
||||
);
|
||||
|
|
|
@ -50,14 +50,12 @@ export default function searchSolutionNavigation({
|
|||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Discover' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Dashboards' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Index Management' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Connectors' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Web Crawlers' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Dev Tools' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Playground' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Connectors' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Search applications' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Inference Endpoints' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Synonyms' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Other tools' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Inference Endpoints' });
|
||||
await solutionNavigation.sidenav.expectLinkExists({ text: 'Dev Tools' });
|
||||
});
|
||||
|
||||
it('has expected navigation', async () => {
|
||||
|
@ -68,7 +66,7 @@ export default function searchSolutionNavigation({
|
|||
await solutionNavigation.sidenav.expectLinkActive({
|
||||
deepLinkId: 'enterpriseSearch',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Data' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Build' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Index Management' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
text: 'Indices',
|
||||
|
@ -85,32 +83,47 @@ export default function searchSolutionNavigation({
|
|||
}> = [
|
||||
{
|
||||
deepLinkId: 'discover',
|
||||
breadcrumbs: ['Analyze', 'Discover'],
|
||||
breadcrumbs: ['Discover'],
|
||||
pageTestSubject: 'kbnNoDataPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'dashboards',
|
||||
breadcrumbs: ['Analyze', 'Dashboards'],
|
||||
breadcrumbs: ['Dashboards'],
|
||||
pageTestSubject: 'kbnNoDataPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'elasticsearchIndexManagement',
|
||||
breadcrumbs: ['Data', 'Index Management', 'Indices'],
|
||||
breadcrumbs: ['Build', 'Index Management', 'Indices'],
|
||||
pageTestSubject: 'elasticsearchIndexManagement',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'searchPlayground',
|
||||
breadcrumbs: ['Build', 'Playground'],
|
||||
pageTestSubject: 'svlPlaygroundPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'enterpriseSearchContent:connectors',
|
||||
breadcrumbs: ['Data', 'Connectors'],
|
||||
breadcrumbs: ['Build', 'Connectors'],
|
||||
pageTestSubject: 'searchCreateConnectorPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'enterpriseSearchContent:webCrawlers',
|
||||
breadcrumbs: ['Data', 'Web Crawlers'],
|
||||
pageTestSubject: 'searchConnectorsPage',
|
||||
deepLinkId: 'enterpriseSearchApplications:searchApplications',
|
||||
breadcrumbs: ['Build', 'Search applications'],
|
||||
pageTestSubject: 'searchApplicationsListPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'searchSynonyms:synonyms',
|
||||
breadcrumbs: ['Relevance', 'Synonyms'],
|
||||
pageTestSubject: 'searchSynonymsOverviewPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'searchInferenceEndpoints:inferenceEndpoints',
|
||||
breadcrumbs: ['Relevance', 'Inference Endpoints'],
|
||||
pageTestSubject: 'inferenceEndpointsPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'dev_tools',
|
||||
breadcrumbs: ['Build', 'Dev Tools'],
|
||||
breadcrumbs: ['Dev Tools'],
|
||||
pageTestSubject: 'console',
|
||||
extraChecks: [
|
||||
async () => {
|
||||
|
@ -122,26 +135,6 @@ export default function searchSolutionNavigation({
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
deepLinkId: 'searchPlayground',
|
||||
breadcrumbs: ['Build', 'Playground'],
|
||||
pageTestSubject: 'svlPlaygroundPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'enterpriseSearchApplications:searchApplications',
|
||||
breadcrumbs: ['Build', 'Search applications'],
|
||||
pageTestSubject: 'searchApplicationsListPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'searchInferenceEndpoints:inferenceEndpoints',
|
||||
breadcrumbs: ['Relevance', 'Inference Endpoints'],
|
||||
pageTestSubject: 'inferenceEndpointsPage',
|
||||
},
|
||||
{
|
||||
deepLinkId: 'searchSynonyms:synonyms',
|
||||
breadcrumbs: ['Relevance', 'Synonyms'],
|
||||
pageTestSubject: 'searchSynonymsOverviewPage',
|
||||
},
|
||||
];
|
||||
|
||||
for (const testCase of sideNavTestCases) {
|
||||
|
@ -162,74 +155,31 @@ export default function searchSolutionNavigation({
|
|||
}
|
||||
}
|
||||
|
||||
// Other tools
|
||||
await solutionNavigation.sidenav.openSection('search_project_nav.otherTools');
|
||||
await solutionNavigation.sidenav.expectSectionOpen('search_project_nav.otherTools');
|
||||
// > Maps
|
||||
await solutionNavigation.sidenav.clickLink({
|
||||
deepLinkId: 'maps',
|
||||
});
|
||||
await solutionNavigation.sidenav.expectLinkActive({
|
||||
deepLinkId: 'maps',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Other tools' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
text: 'Maps',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
deepLinkId: 'maps',
|
||||
});
|
||||
// > Graph
|
||||
await solutionNavigation.sidenav.clickLink({
|
||||
deepLinkId: 'graph',
|
||||
});
|
||||
await solutionNavigation.sidenav.expectLinkActive({
|
||||
deepLinkId: 'graph',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Other tools' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
text: 'Graph',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
deepLinkId: 'graph',
|
||||
});
|
||||
await solutionNavigation.sidenav.closeSection('search_project_nav.otherTools');
|
||||
|
||||
await expectNoPageReload();
|
||||
});
|
||||
|
||||
it('renders only expected items', async () => {
|
||||
await solutionNavigation.sidenav.openSection('search_project_nav.otherTools');
|
||||
await solutionNavigation.sidenav.expectSectionOpen('search_project_nav.otherTools');
|
||||
|
||||
await solutionNavigation.sidenav.openSection(
|
||||
'search_project_nav_footer.project_settings_project_nav'
|
||||
);
|
||||
await solutionNavigation.sidenav.expectSectionOpen(
|
||||
'search_project_nav_footer.project_settings_project_nav'
|
||||
);
|
||||
|
||||
await solutionNavigation.sidenav.expectOnlyDefinedLinks([
|
||||
'search_project_nav',
|
||||
'enterpriseSearch',
|
||||
'analyze',
|
||||
'discover',
|
||||
'dashboards',
|
||||
'data',
|
||||
'elasticsearchIndexManagement',
|
||||
'enterpriseSearchContent:connectors',
|
||||
'enterpriseSearchContent:webCrawlers',
|
||||
'build',
|
||||
'dev_tools',
|
||||
'elasticsearchIndexManagement',
|
||||
'searchPlayground',
|
||||
'enterpriseSearchContent:connectors',
|
||||
'enterpriseSearchApplications:searchApplications',
|
||||
'relevance',
|
||||
'searchInferenceEndpoints:inferenceEndpoints',
|
||||
'searchSynonyms:synonyms',
|
||||
'otherTools',
|
||||
'maps',
|
||||
'graph',
|
||||
'searchInferenceEndpoints:inferenceEndpoints',
|
||||
'search_project_nav_footer',
|
||||
'dev_tools',
|
||||
'project_settings_project_nav',
|
||||
'management:trained_models',
|
||||
'stack_management',
|
||||
|
|
|
@ -52,7 +52,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
|
|||
await solutionNavigation.sidenav.expectLinkActive({
|
||||
deepLinkId: 'elasticsearchIndexManagement',
|
||||
});
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Data' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Build' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Index Management' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
text: 'Indices',
|
||||
|
@ -64,15 +64,16 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
|
|||
);
|
||||
await solutionNavigation.sidenav.clickLink({ navId: 'stack_management' });
|
||||
await solutionNavigation.sidenav.expectLinkActive({ navId: 'stack_management' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Data' });
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({ text: 'Build' });
|
||||
|
||||
// navigate back to the home page using header logo
|
||||
await solutionNavigation.clickLogo();
|
||||
await solutionNavigation.sidenav.expectLinkActive({
|
||||
deepLinkId: 'enterpriseSearch',
|
||||
});
|
||||
// Redirected to Onboarding Page to Create Index
|
||||
await solutionNavigation.breadcrumbs.expectBreadcrumbExists({
|
||||
text: 'Data',
|
||||
text: 'Build',
|
||||
});
|
||||
|
||||
await expectNoPageReload();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue