Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RAM] Implement global alerts page #175143

Merged
merged 48 commits into from
Feb 13, 2024
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
b373792
WIP
umbopepato Dec 21, 2023
1ca128d
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Jan 9, 2024
5ca182e
Draft basic global alerts page
umbopepato Jan 10, 2024
bc455f8
Improve global alerts page composition and filtering, move to correct…
umbopepato Jan 22, 2024
73e4212
Improve global alerts page, add tests
umbopepato Feb 1, 2024
b4c2b4c
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 1, 2024
c943197
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 2, 2024
56363bd
Remove unused translations
umbopepato Feb 2, 2024
cf8b85c
Fix type errors
umbopepato Feb 2, 2024
428be5e
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 5, 2024
fed992b
Set default global alerts page time filter to last 24H
umbopepato Feb 5, 2024
cf338c8
Remove remaining internal alerts page references
umbopepato Feb 5, 2024
1799015
Remove unused translations
umbopepato Feb 5, 2024
a0ae54c
Merge branch 'main' into 173647-global-alerts-page
umbopepato Feb 6, 2024
f1f4265
Remove test import of deleted test file
umbopepato Feb 6, 2024
3162700
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 6, 2024
aad3409
Merge branch '173647-global-alerts-page' of github.com:umbopepato/kib…
umbopepato Feb 6, 2024
cdcdcf9
Merge branch 'main' into 173647-global-alerts-page
umbopepato Feb 7, 2024
6348918
Align new alerts table columns parameters to spec
umbopepato Feb 7, 2024
b35a559
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 7, 2024
41c585c
Merge branch 'main' into 173647-global-alerts-page
umbopepato Feb 7, 2024
865e958
Add missing monitoring alerts feature id to global alerts page
umbopepato Feb 9, 2024
9359c28
Fix alerts feature id detection logic and rule types grouping
umbopepato Feb 9, 2024
029a525
Fix global alerts page time filter not working with security alerts
umbopepato Feb 9, 2024
8090de3
Fix global alerts table id and prevent columns misalignment
umbopepato Feb 9, 2024
4fe65cd
Improve quick filters clarity conversion clarity
umbopepato Feb 9, 2024
6cd7612
Show error toast for potential alerts search bar query parsing errors
umbopepato Feb 9, 2024
63660dc
Fix regression that caused unwanted alerts search bar state resets
umbopepato Feb 9, 2024
259c2b1
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 9, 2024
eb7daae
Add tech preview badge to global alerts page
umbopepato Feb 9, 2024
d5a0c1e
Merge branch '173647-global-alerts-page' of github.com:umbopepato/kib…
umbopepato Feb 9, 2024
bfbaa93
Improve alerts search bar state synchrinzation logic
umbopepato Feb 9, 2024
da37428
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 12, 2024
51c4673
Fix global alerts page functional test
umbopepato Feb 12, 2024
a75223b
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 12, 2024
876d9ab
Add quick filters story to search bar Storybook
umbopepato Feb 12, 2024
a10e890
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 12, 2024
35b8fce
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 13, 2024
3bdf33a
Extract quick filters functionality out of unified search bar
umbopepato Feb 13, 2024
2030bce
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 13, 2024
712a86b
Separate items and panels in additionalQueryBarMenuItems
umbopepato Feb 13, 2024
07bea51
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 13, 2024
d93205e
Update additional query bar menu items storybook
umbopepato Feb 13, 2024
9afc692
Fix type error
umbopepato Feb 13, 2024
fa603a4
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 13, 2024
42bbd4a
Fix additional query bar menu items test
umbopepato Feb 13, 2024
a6b0fce
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 13, 2024
cf31c41
Merge branch 'main' of github.com:elastic/kibana into 173647-global-a…
umbopepato Feb 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/kbn-rule-data-utils/src/alerts_as_data_rbac.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export const AlertConsumers = {
ML: 'ml',
STACK_ALERTS: 'stackAlerts',
EXAMPLE: 'AlertingExample',
MONITORING: 'monitoring',
} as const;
export type AlertConsumers = typeof AlertConsumers[keyof typeof AlertConsumers];
export type STATUS_VALUES = 'open' | 'acknowledged' | 'closed' | 'in-progress'; // TODO: remove 'in-progress' after migration to 'acknowledged'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ describe('Querybar Menu component', () => {
],
}),
},
quickFilters: [],
};
});
it('should not render the popover if the openQueryBarMenu prop is false', async () => {
Expand Down Expand Up @@ -343,4 +344,49 @@ describe('Querybar Menu component', () => {

expect(component.find('[data-test-subj="filter-sets-removeAllFilters"]').length).toBeFalsy();
});

it('should render quick filters menu items', async () => {
const newProps: QueryBarMenuProps = {
...props,
openQueryBarMenu: true,
showFilterBar: true,
quickFilters: [
{
name: 'Test quick filter',
filter: {
meta: {},
query: { bool: {} },
},
},
],
};
const component = mount(wrapQueryBarMenuComponentInContext(newProps, 'kuery'));

expect(component.find('[data-test-subj^="quick-filters-item"]').length).toBeTruthy();
});

it('should render nested quick filters menu items', async () => {
const newProps: QueryBarMenuProps = {
...props,
openQueryBarMenu: true,
showFilterBar: true,
quickFilters: [
{
groupName: 'Grouped filters',
items: [
{
name: 'Test quick filter',
filter: {
meta: {},
query: { bool: {} },
},
},
],
},
],
};
const component = mount(wrapQueryBarMenuComponentInContext(newProps, 'kuery'));

expect(component.find('[data-test-subj^="quick-filters-item"]').length).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { i18n } from '@kbn/i18n';
import type { Filter, Query, TimeRange } from '@kbn/es-query';
import type { DataView } from '@kbn/data-views-plugin/public';
import type { SavedQueryService, SavedQuery } from '@kbn/data-plugin/public';
import { QuickFiltersMenuItem } from './quick_filters';
import { QueryBarMenuPanels, QueryBarMenuPanelsProps } from './query_bar_menu_panels';
import { FilterEditorWrapper } from './filter_editor_wrapper';
import { popoverDragAndDropCss } from './add_filter_popover.styles';
Expand Down Expand Up @@ -58,6 +59,7 @@ export interface QueryBarMenuProps extends WithCloseFilterEditorConfirmModalProp
hiddenPanelOptions?: QueryBarMenuPanelsProps['hiddenPanelOptions'];
onFiltersUpdated?: (filters: Filter[]) => void;
filters?: Filter[];
quickFilters: QuickFiltersMenuItem[];
query?: Query;
savedQuery?: SavedQuery;
onClearSavedQuery?: () => void;
Expand Down Expand Up @@ -90,6 +92,7 @@ function QueryBarMenuComponent({
toggleFilterBarMenuPopover,
onFiltersUpdated,
filters,
quickFilters,
query,
savedQuery,
onClearSavedQuery,
Expand Down Expand Up @@ -151,6 +154,7 @@ function QueryBarMenuComponent({

const panels = QueryBarMenuPanels({
filters,
quickFilters,
savedQuery,
language,
dateRangeFrom,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
* Side Public License, v 1.
*/

import React, { useState, useRef, useEffect, useCallback } from 'react';
import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';
import { isEqual } from 'lodash';
import {
EuiContextMenuPanelDescriptor,
Expand All @@ -24,6 +24,7 @@ import {
toggleFilterNegated,
pinFilter,
unpinFilter,
compareFilters,
} from '@kbn/es-query';
import { i18n } from '@kbn/i18n';
import { METRIC_TYPE } from '@kbn/analytics';
Expand All @@ -34,6 +35,8 @@ import {
UI_SETTINGS,
} from '@kbn/data-plugin/common';
import type { SavedQueryService, SavedQuery } from '@kbn/data-plugin/public';
import { EuiContextMenuPanelItemDescriptor } from '@elastic/eui/src/components/context_menu/context_menu';
import { isQuickFiltersGroup, QuickFiltersMenuItem } from './quick_filters';
import type { IUnifiedSearchPluginServices } from '../types';
import { fromUser } from './from_user';
import { QueryLanguageSwitcher } from './language_switcher';
Expand Down Expand Up @@ -134,10 +137,21 @@ export const strings = {
i18n.translate('unifiedSearch.filter.options.filterLanguageLabel', {
defaultMessage: 'Filter language',
}),
getQuickFiltersLabel: () =>
i18n.translate('unifiedSearch.filter.options.quickFiltersLabel', {
defaultMessage: 'Quick filters',
}),
};

type ContextMenuItem =
| EuiContextMenuPanelDescriptor
| (EuiContextMenuPanelItemDescriptor & {
width?: number;
});

export interface QueryBarMenuPanelsProps {
filters?: Filter[];
quickFilters: QuickFiltersMenuItem[];
savedQuery?: SavedQuery;
language: string;
dateRangeFrom?: string;
Expand All @@ -162,6 +176,7 @@ export interface QueryBarMenuPanelsProps {

export function QueryBarMenuPanels({
filters,
quickFilters,
savedQuery,
language,
dateRangeFrom,
Expand Down Expand Up @@ -192,6 +207,63 @@ export function QueryBarMenuPanels({
const [hasFiltersOrQuery, setHasFiltersOrQuery] = useState(false);
const [savedQueryHasChanged, setSavedQueryHasChanged] = useState(false);

const applyQuickFilter = useCallback(
(filter: Filter) => {
if (!filters?.some((f) => compareFilters(f, filter))) {
onFiltersUpdated?.([...(filters ?? []), filter]);
}
closePopover();
},
[closePopover, filters, onFiltersUpdated]
);

const quickFiltersContextMenuData = useMemo(() => {
if (showFilterBar && quickFilters.length > 0) {
// EuiContextMenu expects a flattened panels structure so here we collect all
// the nested panels in a linear list
const panels = [] as EuiContextMenuPanelDescriptor[];
const quickFiltersItemToContextMenuItem = (qf: QuickFiltersMenuItem) => {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This map function isn't reused so I don't think it adds readability to define it as a const. Wrapping it within quickFilters.map tells me more immediately what this function is being used for.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with you, but in this case the function is recursive so it's actually used more than once:

if (isQuickFiltersGroup(qf)) {
const panelId = `quick-filters-panel-${panels.length}`;
panels.push({
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Building the panels array as a side effect of this map iterator is probably the most reasonable way to do this, but I'd prefer some comments explaining what's going on.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

id: panelId,
title: qf.groupName,
items: qf.items.map(
quickFiltersItemToContextMenuItem
) as EuiContextMenuPanelItemDescriptor[],
'data-test-subj': panelId,
} as EuiContextMenuPanelDescriptor);
return {
name: qf.groupName,
icon: qf.icon ?? 'filterInCircle',
panel: panelId,
'data-test-subj': `quick-filters-item-${qf.groupName}`,
};
} else {
return {
...qf,
icon: qf.icon ?? 'filterInCircle',
onClick: () => {
applyQuickFilter(qf.filter);
},
'data-test-subj': `quick-filters-item-${qf.name}`,
};
}
};
return {
items: quickFilters.map(
quickFiltersItemToContextMenuItem
) as EuiContextMenuPanelItemDescriptor[],
panels,
};
} else {
return {
items: [],
panels: [],
};
}
}, [applyQuickFilter, quickFilters, showFilterBar]);

useEffect(() => {
const fetchSavedQueries = async () => {
cancelPendingListingRequest.current();
Expand Down Expand Up @@ -320,7 +392,7 @@ export function QueryBarMenuPanels({
const luceneLabel = strings.getLuceneLanguageName();
const kqlLabel = strings.getKqlLanguageName();

const filtersRelatedPanels = [
const filtersRelatedPanels: ContextMenuItem[] = [
{
name: strings.getOptionsAddFilterButtonLabel(),
icon: 'plus',
Expand All @@ -337,7 +409,7 @@ export function QueryBarMenuPanels({
},
];

const queryAndFiltersRelatedPanels = [
const queryAndFiltersRelatedPanels: ContextMenuItem[] = [
{
name: savedQuery
? strings.getLoadOtherFilterSetLabel()
Expand All @@ -359,7 +431,7 @@ export function QueryBarMenuPanels({
{ isSeparator: true },
];

const items = [];
const items: ContextMenuItem[] = [];
// apply to all actions are only shown when there are filters
if (showFilterBar) {
items.push(...filtersRelatedPanels);
Expand All @@ -385,6 +457,11 @@ export function QueryBarMenuPanels({
{ isSeparator: true }
);
}

if (showFilterBar && quickFilters.length > 0) {
items.push(...[...quickFiltersContextMenuData.items, { isSeparator: true } as const]);
}

// saved queries actions are only shown when the showQueryInput and showFilterBar is true
if (showQueryInput && showFilterBar) {
items.push(...queryAndFiltersRelatedPanels);
Expand Down Expand Up @@ -513,6 +590,7 @@ export function QueryBarMenuPanels({
width: 400,
content: <div>{manageFilterSetComponent}</div>,
},
...quickFiltersContextMenuData.panels,
] as EuiContextMenuPanelDescriptor[];

if (hiddenPanelOptions && hiddenPanelOptions.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* 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 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/

import { Filter } from '@kbn/es-query';
import { EuiContextMenuPanelItemDescriptor } from '@elastic/eui/src/components/context_menu/context_menu';

type BaseContextMenuItem = Omit<EuiContextMenuPanelItemDescriptor, 'name' | 'title'>;

export interface QuickFilter extends BaseContextMenuItem {
name: string;
filter: Filter;
}

export interface QuickFiltersGroup extends BaseContextMenuItem {
groupName: string;
items: QuickFiltersMenuItem[];
}

export type QuickFiltersMenuItem = QuickFiltersGroup | QuickFilter;

export const isQuickFiltersGroup = (
quickFiltersMenuItem: QuickFiltersMenuItem
): quickFiltersMenuItem is QuickFiltersGroup => 'items' in quickFiltersMenuItem;
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ export function createSearchBar({
dataViewPickerOverride={props.dataViewPickerOverride}
isClearable={props.isClearable}
placeholder={props.placeholder}
quickFilters={props.quickFilters}
{...overrideDefaultBehaviors(props)}
dataViewPickerComponentProps={props.dataViewPickerComponentProps}
textBasedLanguageModeErrors={props.textBasedLanguageModeErrors}
Expand Down
4 changes: 4 additions & 0 deletions src/plugins/unified_search/public/search_bar/search_bar.tsx
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanx a lot for the contribution. It seems as a very nice enhancement but it is very specific for the alerts stack page so I would like to make this more generic in unified search. I suggest:

  • change the quickFilters to additionalQueryBarMenuPanels
  • create the panels in the consumer (stack alerts)
  • pass them to unfied search new prop additionalQueryBarMenuPanels
  • Display them in the query bar menu

In that way other consumers can use the same logic to display panel items in than menu without the need to integrating this inside unified search

Let me know if you have any questions!

Copy link
Member Author

@umbopepato umbopepato Feb 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your review @stratoula! 😊
In that case, how would you like me to address the issue of specifying top-level items as well as nested panels? Would a nested structure like the one I used for quick filters (flattened at QueryBarMenuPanels-level) be ok?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I think that this

...quickFiltersContextMenuData.panels

should come from the consumers of unified search. So after the proposed changes it should look

... additionalQueryBarMenuPanels

Copy link
Member Author

@umbopepato umbopepato Feb 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What I mean is that quickFilters accepts a nested structure where items like

{ name: '', filter: {} }

render top-level menu items like these:

image

whereas items like

{ groupName: '', items: [...] }

render menu items that link to a panel with sub-items (see Status):

image

The EuiContextMenu API expects a flattened structure thought, so I guess the options are either accepting a nested structure like the one described above, then flattened at QueryBarMenuPanels-level, something like:

additionalQueryBarMenuItems={[
  { name: '' }, // Top-level
  { title/groupName: '', items: [{ name: '' }] }, // Nested in subpanel
]}

or let the consumer handle the association between panels and items:

additionalQueryBarMenuItems={[
  { name: '' }, // Top-level
  { name: '', panel: 1 }, // Link to panel
]}
additionalQueryBarMenuPanels={[
  { id: 1, title: '', items: [...] },
  { id: 2, title: '', items: [...] },
]}

// or alternatively

additionalQueryBarMenuItems={{
  items: [...],
  panels: [...],
}}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry If I was not very clear. I want this additionalQueryBarMenuItemsData to be built outside Unified search.

So let's go with this

additionalQueryBarMenuItems={{
  items: [...],
  panels: [...],
}}

Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import type {
SuggestionsListSize,
} from '../typeahead/suggestions_component';
import { searchBarStyles } from './search_bar.styles';
import { QuickFiltersMenuItem } from '../query_string_input/quick_filters';

export interface SearchBarInjectedDeps {
kibana: KibanaReactContextValue<IUnifiedSearchPluginServices>;
Expand All @@ -58,6 +59,7 @@ export interface SearchBarOwnProps<QT extends AggregateQuery | Query = Query> {
showDatePicker?: boolean;
showAutoRefreshOnly?: boolean;
filters?: Filter[];
quickFilters?: QuickFiltersMenuItem[];
filtersForSuggestions?: Filter[];
hiddenFilterPanelOptions?: QueryBarMenuProps['hiddenPanelOptions'];
prependFilterBar?: React.ReactNode;
Expand Down Expand Up @@ -149,6 +151,7 @@ class SearchBarUI<QT extends (Query | AggregateQuery) | Query = Query> extends C
showSubmitButton: true,
showAutoRefreshOnly: false,
filtersForSuggestions: [],
quickFilters: [],
};

private services = this.props.kibana.services;
Expand Down Expand Up @@ -505,6 +508,7 @@ class SearchBarUI<QT extends (Query | AggregateQuery) | Query = Query> extends C
openQueryBarMenu={this.state.openQueryBarMenu}
onFiltersUpdated={this.props.onFiltersUpdated}
filters={this.props.filters}
quickFilters={this.props.quickFilters ?? []}
hiddenPanelOptions={this.props.hiddenFilterPanelOptions}
query={this.state.query as Query}
savedQuery={this.props.savedQuery}
Expand Down
3 changes: 0 additions & 3 deletions x-pack/plugins/translations/translations/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -40310,7 +40310,6 @@
"xpack.triggersActionsUI.home.logsTabTitle": "Logs",
"xpack.triggersActionsUI.home.rulesTabTitle": "Règles",
"xpack.triggersActionsUI.home.sectionDescription": "Détectez les conditions à l'aide de règles.",
"xpack.triggersActionsUI.home.TabTitle": "Alertes (utilisation interne uniquement)",
"xpack.triggersActionsUI.inspect.modal.closeTitle": "Fermer",
"xpack.triggersActionsUI.inspect.modal.indexPatternDescription": "Modèle d'indexation qui se connecte aux index Elasticsearch. Ces index peuvent être configurés dans Kibana > Paramètres avancés.",
"xpack.triggersActionsUI.inspect.modal.indexPatternLabel": "Modèle d'indexation",
Expand Down Expand Up @@ -40448,9 +40447,7 @@
"xpack.triggersActionsUI.sections.alertsSummaryWidget.errorBody": "Une erreur s'est produite lors du chargement du récapitulatif des alertes. Contactez votre administrateur pour obtenir de l'aide.",
"xpack.triggersActionsUI.sections.alertsSummaryWidget.errorTitle": "Impossible de charger le récapitulatif des alertes",
"xpack.triggersActionsUI.sections.alertsSummaryWidget.title": "Activité des alertes",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.name": "Nom",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.paginationLabel": "Navigation dans les alertes",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.reason": "Raison",
"xpack.triggersActionsUI.sections.alertsTable.column.actions": "Actions",
"xpack.triggersActionsUI.sections.alertsTable.title": "Tableau d’alertes",
"xpack.triggersActionsUI.sections.confirmConnectorEditClose.cancelButtonLabel": "Annuler",
Expand Down
3 changes: 0 additions & 3 deletions x-pack/plugins/translations/translations/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -40302,7 +40302,6 @@
"xpack.triggersActionsUI.home.logsTabTitle": "ログ",
"xpack.triggersActionsUI.home.rulesTabTitle": "ルール",
"xpack.triggersActionsUI.home.sectionDescription": "ルールを使用する条件を検出します。",
"xpack.triggersActionsUI.home.TabTitle": "アラート(内部使用のみ)",
"xpack.triggersActionsUI.inspect.modal.closeTitle": "閉じる",
"xpack.triggersActionsUI.inspect.modal.indexPatternDescription": "Elasticsearchインデックスに接続したインデックスパターンです。これらのインデックスは Kibana > 高度な設定で構成できます。",
"xpack.triggersActionsUI.inspect.modal.indexPatternLabel": "インデックスパターン",
Expand Down Expand Up @@ -40440,9 +40439,7 @@
"xpack.triggersActionsUI.sections.alertsSummaryWidget.errorBody": "アラート概要の読み込みエラーが発生しました。ヘルプについては、管理者にお問い合わせください。",
"xpack.triggersActionsUI.sections.alertsSummaryWidget.errorTitle": "アラート概要を読み込めません",
"xpack.triggersActionsUI.sections.alertsSummaryWidget.title": "アラートアクティビティ",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.name": "名前",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.paginationLabel": "アラートナビゲーション",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.reason": "理由",
"xpack.triggersActionsUI.sections.alertsTable.column.actions": "アクション",
"xpack.triggersActionsUI.sections.alertsTable.title": "アラートテーブル",
"xpack.triggersActionsUI.sections.confirmConnectorEditClose.cancelButtonLabel": "キャンセル",
Expand Down
3 changes: 0 additions & 3 deletions x-pack/plugins/translations/translations/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -40282,7 +40282,6 @@
"xpack.triggersActionsUI.home.logsTabTitle": "日志",
"xpack.triggersActionsUI.home.rulesTabTitle": "规则",
"xpack.triggersActionsUI.home.sectionDescription": "使用规则来检测条件。",
"xpack.triggersActionsUI.home.TabTitle": "告警(仅限内部使用)",
"xpack.triggersActionsUI.inspect.modal.closeTitle": "关闭",
"xpack.triggersActionsUI.inspect.modal.indexPatternDescription": "连接到 Elasticsearch 索引的索引模式。可以在“Kibana”>“高级设置”中配置这些索引。",
"xpack.triggersActionsUI.inspect.modal.indexPatternLabel": "索引模式",
Expand Down Expand Up @@ -40420,9 +40419,7 @@
"xpack.triggersActionsUI.sections.alertsSummaryWidget.errorBody": "加载告警摘要时出现错误。请联系您的管理员寻求帮助。",
"xpack.triggersActionsUI.sections.alertsSummaryWidget.errorTitle": "无法加载告警摘要",
"xpack.triggersActionsUI.sections.alertsSummaryWidget.title": "告警活动",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.name": "名称",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.paginationLabel": "告警导航",
"xpack.triggersActionsUI.sections.alertsTable.alertsFlyout.reason": "原因",
"xpack.triggersActionsUI.sections.alertsTable.column.actions": "操作",
"xpack.triggersActionsUI.sections.alertsTable.title": "告警表",
"xpack.triggersActionsUI.sections.confirmConnectorEditClose.cancelButtonLabel": "取消",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ export const StorybookContextDecorator: React.FC<StorybookContextDecoratorProps>
ExperimentalFeaturesService.init({
experimentalFeatures: {
rulesListDatagrid: true,
internalAlertsTable: true,
ruleTagFilter: true,
globalAlertsPage: false,
ruleStatusFilter: true,
rulesDetailLogs: true,
ruleUseExecutionStatus: false,
Expand Down
Loading