From 7515907b3618ab9f9ddee124490c8f4ad7a89338 Mon Sep 17 00:00:00 2001
From: Xavier Mouligneau <189600+XavierM@users.noreply.github.com>
Date: Fri, 17 Jan 2020 15:01:39 -0500
Subject: [PATCH] review IV + bug fixes found during review
---
.../public/components/alerts_viewer/index.tsx | 7 +++----
.../components/alerts_viewer/translations.ts | 4 ++--
.../components/matrix_histogram/index.tsx | 5 +++--
.../anomalies_query_tab_body/index.tsx | 17 +++++++--------
.../containers/matrix_histogram/index.tsx | 1 -
.../containers/matrix_histogram/utils.ts | 12 +++++------
.../components/signals/translations.ts | 2 +-
.../signals_histogram_panel/config.ts | 21 +++++++++----------
.../signals_histogram_panel/index.tsx | 2 +-
.../signals_histogram/index.tsx | 2 +-
.../detection_engine/detection_engine.tsx | 17 +++++----------
.../detection_engine/rules/details/index.tsx | 4 +++-
.../detection_engine/rules/translations.ts | 2 +-
.../authentications_query_tab_body.tsx | 3 +--
.../navigation/events_query_tab_body.tsx | 5 ++---
.../siem/public/pages/hosts/translations.ts | 21 -------------------
.../network/navigation/dns_query_tab_body.tsx | 3 +--
.../siem/public/pages/network/translations.ts | 4 ----
.../overview/alerts_by_category/index.tsx | 19 ++++++++++-------
.../overview/events_by_dataset/index.tsx | 12 +++++++++--
.../public/pages/overview/translations.ts | 4 ++++
21 files changed, 72 insertions(+), 95 deletions(-)
diff --git a/x-pack/legacy/plugins/siem/public/components/alerts_viewer/index.tsx b/x-pack/legacy/plugins/siem/public/components/alerts_viewer/index.tsx
index 87d83f7f2972c..2320ade10ffb0 100644
--- a/x-pack/legacy/plugins/siem/public/components/alerts_viewer/index.tsx
+++ b/x-pack/legacy/plugins/siem/public/components/alerts_viewer/index.tsx
@@ -16,11 +16,11 @@ import { MatrixHistogramGqlQuery } from '../../containers/matrix_histogram/index
const ID = 'alertsOverTimeQuery';
export const alertsStackByOptions: MatrixHistogramOption[] = [
{
- text: i18n.CATEGORY,
+ text: 'event.category',
value: 'event.category',
},
{
- text: i18n.MODULE,
+ text: 'event.module',
value: 'event.module',
},
];
@@ -54,7 +54,6 @@ export const AlertsView = ({
<>
diff --git a/x-pack/legacy/plugins/siem/public/components/alerts_viewer/translations.ts b/x-pack/legacy/plugins/siem/public/components/alerts_viewer/translations.ts
index 8c6248e38c057..9136e1b567293 100644
--- a/x-pack/legacy/plugins/siem/public/components/alerts_viewer/translations.ts
+++ b/x-pack/legacy/plugins/siem/public/components/alerts_viewer/translations.ts
@@ -14,8 +14,8 @@ export const TOTAL_COUNT_OF_ALERTS = i18n.translate('xpack.siem.alertsView.total
defaultMessage: 'alerts match the search criteria',
});
-export const ALERTS_TABLE_TITLE = i18n.translate('xpack.siem.alertsView.alertsDocumentType', {
- defaultMessage: 'Alerts',
+export const ALERTS_TABLE_TITLE = i18n.translate('xpack.siem.alertsView.alertsTableType', {
+ defaultMessage: 'Alert detection frequency',
});
export const ALERTS_STACK_BY_MODULE = i18n.translate(
diff --git a/x-pack/legacy/plugins/siem/public/components/matrix_histogram/index.tsx b/x-pack/legacy/plugins/siem/public/components/matrix_histogram/index.tsx
index 56ebbb06f3eb9..cdd62c430a50c 100644
--- a/x-pack/legacy/plugins/siem/public/components/matrix_histogram/index.tsx
+++ b/x-pack/legacy/plugins/siem/public/components/matrix_histogram/index.tsx
@@ -46,12 +46,12 @@ export const MatrixHistogramComponent: React.FC {
+ useEffect(() => {
+ return () => {
+ if (deleteQuery) {
+ deleteQuery({ id: ID });
+ }
+ };
+ }, []);
+
const [, siemJobs] = useSiemJobs(true);
const [anomalyScore] = useUiSetting$(DEFAULT_ANOMALY_SCORE);
@@ -51,21 +59,12 @@ export const AnomaliesQueryTabBody = ({
ip
);
- useEffect(() => {
- return () => {
- if (deleteQuery) {
- deleteQuery({ id: ID });
- }
- };
- }, []);
-
return (
<>
void;
errorMessage: string;
headerChildren?: React.ReactNode;
hideHistogramIfEmpty?: boolean;
diff --git a/x-pack/legacy/plugins/siem/public/containers/matrix_histogram/utils.ts b/x-pack/legacy/plugins/siem/public/containers/matrix_histogram/utils.ts
index 9cda9d8f6115f..1df1aec76627c 100644
--- a/x-pack/legacy/plugins/siem/public/containers/matrix_histogram/utils.ts
+++ b/x-pack/legacy/plugins/siem/public/containers/matrix_histogram/utils.ts
@@ -4,7 +4,7 @@
* you may not use this file except in compliance with the Elastic License.
*/
import { getOr } from 'lodash/fp';
-import { useEffect, useState } from 'react';
+import { useEffect, useRef, useState } from 'react';
import {
MatrixHistogramDataTypes,
MatrixHistogramQueryProps,
@@ -35,7 +35,7 @@ export const useQuery = ({
}: MatrixHistogramQueryProps) => {
const [defaultIndex] = useUiSetting$(DEFAULT_INDEX_KEY);
const [, dispatchToaster] = useStateToaster();
- const [refetch, setRefetch] = useState();
+ const refetch = useRef();
const [loading, setLoading] = useState(false);
const [data, setData] = useState(null);
const [inspect, setInspect] = useState(null);
@@ -71,7 +71,7 @@ export const useQuery = ({
return apolloClient
.query({
query,
- fetchPolicy: 'cache-first',
+ fetchPolicy: 'network-only',
variables: matrixHistogramVariables,
context: {
fetchOptions: {
@@ -103,9 +103,7 @@ export const useQuery = ({
}
);
}
- setRefetch(() => {
- fetchData();
- });
+ refetch.current = fetchData;
fetchData();
return () => {
isSubscribed = false;
@@ -122,5 +120,5 @@ export const useQuery = ({
endDate,
]);
- return { data, loading, inspect, totalCount, refetch };
+ return { data, loading, inspect, totalCount, refetch: refetch.current };
};
diff --git a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals/translations.ts b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals/translations.ts
index d1ba946be41de..c262f907c9876 100644
--- a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals/translations.ts
+++ b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals/translations.ts
@@ -11,7 +11,7 @@ export const PAGE_TITLE = i18n.translate('xpack.siem.detectionEngine.pageTitle',
});
export const SIGNALS_TABLE_TITLE = i18n.translate('xpack.siem.detectionEngine.signals.tableTitle', {
- defaultMessage: 'All signals',
+ defaultMessage: 'Signals',
});
export const SIGNALS_DOCUMENT_TYPE = i18n.translate(
diff --git a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/config.ts b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/config.ts
index f329780b075e3..d475fd155ea25 100644
--- a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/config.ts
+++ b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/config.ts
@@ -4,18 +4,17 @@
* you may not use this file except in compliance with the Elastic License.
*/
-import * as i18n from './translations';
import { SignalsHistogramOption } from './types';
export const signalsHistogramOptions: SignalsHistogramOption[] = [
- { text: i18n.STACK_BY_RISK_SCORES, value: 'signal.rule.risk_score' },
- { text: i18n.STACK_BY_SEVERITIES, value: 'signal.rule.severity' },
- { text: i18n.STACK_BY_DESTINATION_IPS, value: 'destination.ip' },
- { text: i18n.STACK_BY_ACTIONS, value: 'event.action' },
- { text: i18n.STACK_BY_CATEGORIES, value: 'event.category' },
- { text: i18n.STACK_BY_HOST_NAMES, value: 'host.name' },
- { text: i18n.STACK_BY_RULE_TYPES, value: 'signal.rule.type' },
- { text: i18n.STACK_BY_RULE_NAMES, value: 'signal.rule.name' },
- { text: i18n.STACK_BY_SOURCE_IPS, value: 'source.ip' },
- { text: i18n.STACK_BY_USERS, value: 'user.name' },
+ { text: 'signal.rule.risk_score', value: 'signal.rule.risk_score' },
+ { text: 'signal.rule.severity', value: 'signal.rule.severity' },
+ { text: 'destination.ip', value: 'destination.ip' },
+ { text: 'event.action', value: 'event.action' },
+ { text: 'event.category', value: 'event.category' },
+ { text: 'host.name', value: 'host.name' },
+ { text: 'signal.rule.type', value: 'signal.rule.type' },
+ { text: 'signal.rule.name', value: 'signal.rule.name' },
+ { text: 'source.ip', value: 'source.ip' },
+ { text: 'user.name', value: 'user.name' },
];
diff --git a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/index.tsx b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/index.tsx
index fda40f5f9fa5d..64bc7ba24c689 100644
--- a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/index.tsx
+++ b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/index.tsx
@@ -46,7 +46,7 @@ export const SignalsHistogramPanel = memo(
filters,
query,
from,
- legendPosition = 'bottom',
+ legendPosition = 'right',
loadingInitial = false,
showLinkToSignals = false,
showTotalSignalsCount = false,
diff --git a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/signals_histogram/index.tsx b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/signals_histogram/index.tsx
index 218fcc3a70f79..d4db8cc7c37e8 100644
--- a/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/signals_histogram/index.tsx
+++ b/x-pack/legacy/plugins/siem/public/pages/detection_engine/components/signals_histogram_panel/signals_histogram/index.tsx
@@ -44,7 +44,7 @@ export const SignalsHistogram = React.memo(
from,
query,
filters,
- legendPosition = 'bottom',
+ legendPosition = 'right',
loadingInitial,
setTotalSignalsCount,
stackByField,
diff --git a/x-pack/legacy/plugins/siem/public/pages/detection_engine/detection_engine.tsx b/x-pack/legacy/plugins/siem/public/pages/detection_engine/detection_engine.tsx
index 8fc679e71a8ad..26a9ad128b1dc 100644
--- a/x-pack/legacy/plugins/siem/public/pages/detection_engine/detection_engine.tsx
+++ b/x-pack/legacy/plugins/siem/public/pages/detection_engine/detection_engine.tsx
@@ -5,7 +5,7 @@
*/
import { EuiButton, EuiSpacer, EuiTab, EuiTabs } from '@elastic/eui';
-import React, { useCallback, useEffect, useMemo, useState } from 'react';
+import React, { useCallback, useMemo } from 'react';
import { useParams } from 'react-router-dom';
import { StickyContainer } from 'react-sticky';
import { connect } from 'react-redux';
@@ -72,7 +72,6 @@ const detectionsTabs = [
const DetectionEngineComponent = React.memo(
({ filters, query, setAbsoluteRangeDatePicker }) => {
const { tabName = DetectionEngineTab.signals } = useParams();
- const [selectedTab, setSelectedTab] = useState(tabName);
const {
loading,
isSignalIndexExists,
@@ -108,18 +107,12 @@ const DetectionEngineComponent = React.memo(
);
}
- useEffect(() => {
- if (selectedTab !== tabName) {
- setSelectedTab(tabName);
- }
- }, [selectedTab, setSelectedTab, tabName]);
-
const tabs = useMemo(
() => (
{detectionsTabs.map(tab => (
(
))}
),
- [detectionsTabs, selectedTab]
+ [detectionsTabs, tabName]
);
return (
@@ -165,7 +158,7 @@ const DetectionEngineComponent = React.memo(
<>
{tabs}
- {selectedTab === DetectionEngineTab.signals && (
+ {tabName === DetectionEngineTab.signals && (
<>
(
/>
>
)}
- {selectedTab === DetectionEngineTab.alerts && (
+ {tabName === DetectionEngineTab.alerts && (
<>
(
);
const ruleError = useMemo(
() =>
- rule?.status === 'failed' && ruleDetailTab === 'signal' && rule?.last_failure_at != null ? (
+ rule?.status === 'failed' &&
+ ruleDetailTab === RuleDetailTabs.signals &&
+ rule?.last_failure_at != null ? (
(
setQuery,
to,
}) => {
+ useEffect(() => {
+ return () => {
+ if (deleteQuery) {
+ deleteQuery({ id: ID });
+ }
+ };
+ }, []);
+
const kibana = useKibana();
const [defaultNumberFormat] = useUiSetting$(DEFAULT_NUMBER_FORMAT);
+
const updateDateRangeCallback = useCallback(
(min: number, max: number) => {
setAbsoluteRangeDatePicker!({ id: 'global', from: min, to: max });
@@ -83,10 +91,6 @@ export const AlertsByCategory = React.memo(
[]
);
- const getTitle = useCallback(
- (option: MatrixHistogramOption) => i18n.ALERTS_COUNT_BY(option.text),
- []
- );
const getSubtitle = useCallback(
(totalCount: number) =>
`${SHOWING}: ${numeral(totalCount).format(defaultNumberFormat)} ${UNIT(totalCount)}`,
@@ -96,7 +100,6 @@ export const AlertsByCategory = React.memo(
return (
(
sourceId="default"
stackByOptions={alertsStackByOptions}
startDate={from}
- title={getTitle}
+ title={i18n.ALERTS_TITLE}
subtitle={getSubtitle}
type={HostsType.page}
updateDateRange={updateDateRangeCallback}
diff --git a/x-pack/legacy/plugins/siem/public/pages/overview/events_by_dataset/index.tsx b/x-pack/legacy/plugins/siem/public/pages/overview/events_by_dataset/index.tsx
index 52084c4bfc280..191b4a2592695 100644
--- a/x-pack/legacy/plugins/siem/public/pages/overview/events_by_dataset/index.tsx
+++ b/x-pack/legacy/plugins/siem/public/pages/overview/events_by_dataset/index.tsx
@@ -6,7 +6,7 @@
import { EuiButton } from '@elastic/eui';
import numeral from '@elastic/numeral';
-import React, { useCallback, useMemo } from 'react';
+import React, { useCallback, useEffect, useMemo } from 'react';
import { esFilters, IIndexPattern, Query } from 'src/plugins/data/public';
import styled from 'styled-components';
@@ -66,8 +66,17 @@ export const EventsByDataset = React.memo(
setQuery,
to,
}) => {
+ useEffect(() => {
+ return () => {
+ if (deleteQuery) {
+ deleteQuery({ id: ID });
+ }
+ };
+ }, []);
+
const kibana = useKibana();
const [defaultNumberFormat] = useUiSetting$(DEFAULT_NUMBER_FORMAT);
+
const updateDateRangeCallback = useCallback(
(min: number, max: number) => {
setAbsoluteRangeDatePicker!({ id: 'global', from: min, to: max });
@@ -96,7 +105,6 @@ export const EventsByDataset = React.memo(
return (