mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 01:38:56 -04:00
[Actionable Observability] consume shareable status filter (#131219)
* use shareable status filter * clean up and remove remnants from old status implementation * bring back props * fix more CI issues after renaming * fix i118n issues * fix failing unit tests
This commit is contained in:
parent
1c99a04c04
commit
47f4658b36
11 changed files with 30 additions and 85 deletions
|
@ -16,6 +16,7 @@ import { useKibana } from '../utils/kibana_react';
|
|||
export function useFetchRules({
|
||||
searchText,
|
||||
ruleLastResponseFilter,
|
||||
ruleStatusesFilter,
|
||||
typesFilter,
|
||||
setPage,
|
||||
page,
|
||||
|
@ -43,6 +44,7 @@ export function useFetchRules({
|
|||
searchText,
|
||||
typesFilter: typesFilter.length > 0 ? typesFilter : OBSERVABILITY_RULE_TYPES,
|
||||
ruleExecutionStatusesFilter: ruleLastResponseFilter,
|
||||
ruleStatusesFilter,
|
||||
sort,
|
||||
});
|
||||
setRulesState((oldState) => ({
|
||||
|
@ -58,6 +60,7 @@ export function useFetchRules({
|
|||
const isFilterApplied = !(
|
||||
isEmpty(searchText) &&
|
||||
isEmpty(ruleLastResponseFilter) &&
|
||||
isEmpty(ruleStatusesFilter) &&
|
||||
isEmpty(typesFilter)
|
||||
);
|
||||
|
||||
|
@ -66,7 +69,16 @@ export function useFetchRules({
|
|||
setRulesState((oldState) => ({ ...oldState, isLoading: false, error: RULES_LOAD_ERROR }));
|
||||
}
|
||||
setInitialLoad(false);
|
||||
}, [http, page, setPage, searchText, ruleLastResponseFilter, typesFilter, sort]);
|
||||
}, [
|
||||
http,
|
||||
page,
|
||||
setPage,
|
||||
searchText,
|
||||
ruleLastResponseFilter,
|
||||
ruleStatusesFilter,
|
||||
typesFilter,
|
||||
sort,
|
||||
]);
|
||||
useEffect(() => {
|
||||
fetchRules();
|
||||
}, [fetchRules]);
|
||||
|
|
|
@ -38,6 +38,7 @@ const triggersActionsUiStartMock = {
|
|||
getAddAlertFlyout: jest.fn(),
|
||||
getRuleStatusDropdown: jest.fn(),
|
||||
getRuleTagBadge: jest.fn(),
|
||||
getRuleStatusFilter: jest.fn(),
|
||||
ruleTypeRegistry: {
|
||||
has: jest.fn(),
|
||||
register: jest.fn(),
|
||||
|
|
|
@ -18,12 +18,12 @@ import {
|
|||
} from '@elastic/eui';
|
||||
import { RuleExecutionStatuses, RuleExecutionStatusValues } from '@kbn/alerting-plugin/common';
|
||||
import { getHealthColor, rulesStatusesTranslationsMapping } from '../config';
|
||||
import { StatusFilterProps } from '../types';
|
||||
import { LastResponseFilterProps } from '../types';
|
||||
|
||||
export const LastResponseFilter: React.FunctionComponent<StatusFilterProps> = ({
|
||||
export const LastResponseFilter: React.FunctionComponent<LastResponseFilterProps> = ({
|
||||
selectedStatuses,
|
||||
onChange,
|
||||
}: StatusFilterProps) => {
|
||||
}: LastResponseFilterProps) => {
|
||||
const [selectedValues, setSelectedValues] = useState<string[]>(selectedStatuses);
|
||||
const [isPopoverOpen, setIsPopoverOpen] = useState<boolean>(false);
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
import { RuleExecutionStatuses } from '@kbn/alerting-plugin/common';
|
||||
import { Rule, RuleTypeIndex, RuleType } from '@kbn/triggers-actions-ui-plugin/public';
|
||||
import { Status, RuleStatus } from './types';
|
||||
import {
|
||||
RULE_STATUS_OK,
|
||||
RULE_STATUS_ACTIVE,
|
||||
|
@ -15,26 +14,8 @@ import {
|
|||
RULE_STATUS_PENDING,
|
||||
RULE_STATUS_UNKNOWN,
|
||||
RULE_STATUS_WARNING,
|
||||
RULE_STATUS_ENABLED,
|
||||
RULE_STATUS_DISABLED,
|
||||
RULE_STATUS_SNOOZED_INDEFINITELY,
|
||||
} from './translations';
|
||||
|
||||
export const statusMap: Status = {
|
||||
[RuleStatus.enabled]: {
|
||||
color: 'primary',
|
||||
label: RULE_STATUS_ENABLED,
|
||||
},
|
||||
[RuleStatus.disabled]: {
|
||||
color: 'default',
|
||||
label: RULE_STATUS_DISABLED,
|
||||
},
|
||||
[RuleStatus.snoozed]: {
|
||||
color: 'warning',
|
||||
label: RULE_STATUS_SNOOZED_INDEFINITELY,
|
||||
},
|
||||
};
|
||||
|
||||
export const DEFAULT_SEARCH_PAGE_SIZE: number = 25;
|
||||
|
||||
export function getHealthColor(status: RuleExecutionStatuses) {
|
||||
|
|
|
@ -27,6 +27,7 @@ import {
|
|||
disableRule,
|
||||
snoozeRule,
|
||||
useLoadRuleTypes,
|
||||
RuleStatus,
|
||||
unsnoozeRule,
|
||||
} from '@kbn/triggers-actions-ui-plugin/public';
|
||||
import { RuleExecutionStatus, ALERTS_FEATURE_ID } from '@kbn/alerting-plugin/common';
|
||||
|
@ -93,7 +94,7 @@ function RulesPage() {
|
|||
});
|
||||
const [inputText, setInputText] = useState<string | undefined>();
|
||||
const [searchText, setSearchText] = useState<string | undefined>();
|
||||
// const [ruleLastResponseFilter, setRuleLastResponseFilter] = useState<string[]>([]);
|
||||
const [ruleStatusesFilter, setRuleStatusesFilter] = useState<RuleStatus[]>([]);
|
||||
const [typesFilter, setTypesFilter] = useState<string[]>([]);
|
||||
const [currentRuleToEdit, setCurrentRuleToEdit] = useState<RuleTableItem | null>(null);
|
||||
const [rulesToDelete, setRulesToDelete] = useState<string[]>([]);
|
||||
|
@ -110,6 +111,7 @@ function RulesPage() {
|
|||
const { rulesState, setRulesState, reload, noData, initialLoad } = useFetchRules({
|
||||
searchText,
|
||||
ruleLastResponseFilter: lastResponse,
|
||||
ruleStatusesFilter,
|
||||
typesFilter,
|
||||
page,
|
||||
setPage,
|
||||
|
@ -353,6 +355,12 @@ function RulesPage() {
|
|||
onChange={setExecutionStatusFilter}
|
||||
/>
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
{triggersActionsUi.getRuleStatusFilter({
|
||||
selectedStatuses: ruleStatusesFilter,
|
||||
onChange: setRuleStatusesFilter,
|
||||
})}
|
||||
</EuiFlexItem>
|
||||
<EuiFlexItem grow={false}>
|
||||
<EuiButton
|
||||
data-test-subj="refreshRulesButton"
|
||||
|
|
|
@ -53,27 +53,6 @@ export const RULE_STATUS_WARNING = i18n.translate(
|
|||
}
|
||||
);
|
||||
|
||||
export const RULE_STATUS_ENABLED = i18n.translate(
|
||||
'xpack.observability.rules.rulesTable.ruleStatusEnabled',
|
||||
{
|
||||
defaultMessage: 'Enabled',
|
||||
}
|
||||
);
|
||||
|
||||
export const RULE_STATUS_DISABLED = i18n.translate(
|
||||
'xpack.observability.rules.rulesTable.ruleStatusDisabled',
|
||||
{
|
||||
defaultMessage: 'Disabled',
|
||||
}
|
||||
);
|
||||
|
||||
export const RULE_STATUS_SNOOZED_INDEFINITELY = i18n.translate(
|
||||
'xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely',
|
||||
{
|
||||
defaultMessage: 'Snoozed indefinitely',
|
||||
}
|
||||
);
|
||||
|
||||
export const LAST_RESPONSE_COLUMN_TITLE = i18n.translate(
|
||||
'xpack.observability.rules.rulesTable.columns.lastResponseTitle',
|
||||
{
|
||||
|
|
|
@ -7,38 +7,9 @@
|
|||
import { Dispatch, SetStateAction } from 'react';
|
||||
import { EuiTableSortingType, EuiBasicTableColumn } from '@elastic/eui';
|
||||
import { RuleExecutionStatus } from '@kbn/alerting-plugin/common';
|
||||
import { RuleTableItem, Rule } from '@kbn/triggers-actions-ui-plugin/public';
|
||||
export interface StatusProps {
|
||||
type: RuleStatus;
|
||||
disabled: boolean;
|
||||
onClick: () => void;
|
||||
}
|
||||
import { RuleTableItem, Rule, RuleStatus } from '@kbn/triggers-actions-ui-plugin/public';
|
||||
|
||||
export enum RuleStatus {
|
||||
enabled = 'enabled',
|
||||
disabled = 'disabled',
|
||||
snoozed = 'snoozed',
|
||||
}
|
||||
|
||||
export type Status = Record<
|
||||
RuleStatus,
|
||||
{
|
||||
color: string;
|
||||
label: string;
|
||||
}
|
||||
>;
|
||||
|
||||
export interface StatusContextProps {
|
||||
item: RuleTableItem;
|
||||
disabled: boolean;
|
||||
onStatusChanged: (status: RuleStatus) => void;
|
||||
enableRule: (rule: Rule) => Promise<void>;
|
||||
disableRule: (rule: Rule) => Promise<void>;
|
||||
muteRule: (rule: Rule) => Promise<void>;
|
||||
unMuteRule: (rule: Rule) => Promise<void>;
|
||||
}
|
||||
|
||||
export interface StatusFilterProps {
|
||||
export interface LastResponseFilterProps {
|
||||
selectedStatuses: string[];
|
||||
onChange?: (selectedRuleStatusesIds: string[]) => void;
|
||||
}
|
||||
|
@ -71,6 +42,7 @@ export interface Pagination {
|
|||
export interface FetchRulesProps {
|
||||
searchText: string | undefined;
|
||||
ruleLastResponseFilter: string[];
|
||||
ruleStatusesFilter: RuleStatus[];
|
||||
typesFilter: string[];
|
||||
page: Pagination;
|
||||
setPage: Dispatch<SetStateAction<Pagination>>;
|
||||
|
|
|
@ -21855,13 +21855,10 @@
|
|||
"xpack.observability.rules.rulesTable.columns.statusTitle": "Statut",
|
||||
"xpack.observability.rules.rulesTable.pluralTitle": "règles",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusActive": "Actif",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusDisabled": "Désactivé",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusEnabled": "Activé",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusError": "Erreur",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusLicenseError": "Erreur de licence",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusOk": "Ok",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusPending": "En attente",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely": "Répété indéfiniment",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusUnknown": "Inconnu",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusWarning": "avertissement",
|
||||
"xpack.observability.rules.rulesTable.singleTitle": "règle",
|
||||
|
|
|
@ -21877,13 +21877,10 @@
|
|||
"xpack.observability.rules.rulesTable.columns.statusTitle": "ステータス",
|
||||
"xpack.observability.rules.rulesTable.pluralTitle": "ルール",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusActive": "アクティブ",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusDisabled": "無効",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusEnabled": "有効",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusError": "エラー",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusLicenseError": "ライセンスエラー",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusOk": "OK",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusPending": "保留中",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely": "無期限にスヌーズ",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusUnknown": "不明",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusWarning": "警告",
|
||||
"xpack.observability.rules.rulesTable.singleTitle": "ルール",
|
||||
|
|
|
@ -21909,13 +21909,10 @@
|
|||
"xpack.observability.rules.rulesTable.columns.statusTitle": "状态",
|
||||
"xpack.observability.rules.rulesTable.pluralTitle": "规则",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusActive": "活动",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusDisabled": "已禁用",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusEnabled": "已启用",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusError": "错误",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusLicenseError": "许可证错误",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusOk": "确定",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusPending": "待处理",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusSnoozedIndefinitely": "已无限期暂停",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusUnknown": "未知",
|
||||
"xpack.observability.rules.rulesTable.ruleStatusWarning": "警告",
|
||||
"xpack.observability.rules.rulesTable.singleTitle": "规则",
|
||||
|
|
|
@ -18,6 +18,7 @@ export type {
|
|||
RuleType,
|
||||
RuleTypeIndex,
|
||||
RuleTypeModel,
|
||||
RuleStatus,
|
||||
ActionType,
|
||||
ActionTypeRegistryContract,
|
||||
RuleTypeRegistryContract,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue