mirror of
https://git.mirrors.martin98.com/https://github.com/SigNoz/signoz
synced 2025-08-12 19:09:00 +08:00
fix: updated the triggered alert list code (#6127)
This commit is contained in:
parent
5ef05891ce
commit
ae5e63cc64
@ -2,7 +2,7 @@
|
|||||||
import type { SelectProps } from 'antd';
|
import type { SelectProps } from 'antd';
|
||||||
import { Tag, Tooltip } from 'antd';
|
import { Tag, Tooltip } from 'antd';
|
||||||
import { BaseOptionType } from 'antd/es/select';
|
import { BaseOptionType } from 'antd/es/select';
|
||||||
import { Dispatch, SetStateAction, useCallback, useMemo, useRef } from 'react';
|
import { useCallback, useMemo, useRef } from 'react';
|
||||||
import { Alerts } from 'types/api/alerts/getTriggered';
|
import { Alerts } from 'types/api/alerts/getTriggered';
|
||||||
|
|
||||||
import { Container, Select } from './styles';
|
import { Container, Select } from './styles';
|
||||||
@ -31,8 +31,8 @@ function TextOverflowTooltip({
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Filter({
|
function Filter({
|
||||||
setSelectedFilter,
|
onSelectedFilterChange,
|
||||||
setSelectedGroup,
|
onSelectedGroupChange,
|
||||||
allAlerts,
|
allAlerts,
|
||||||
selectedGroup,
|
selectedGroup,
|
||||||
selectedFilter,
|
selectedFilter,
|
||||||
@ -40,27 +40,27 @@ function Filter({
|
|||||||
const onChangeSelectGroupHandler = useCallback(
|
const onChangeSelectGroupHandler = useCallback(
|
||||||
(value: unknown) => {
|
(value: unknown) => {
|
||||||
if (typeof value === 'object' && Array.isArray(value)) {
|
if (typeof value === 'object' && Array.isArray(value)) {
|
||||||
setSelectedGroup(
|
onSelectedGroupChange(
|
||||||
value.map((e) => ({
|
value.map((e) => ({
|
||||||
value: e,
|
value: e,
|
||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[setSelectedGroup],
|
[onSelectedGroupChange],
|
||||||
);
|
);
|
||||||
|
|
||||||
const onChangeSelectedFilterHandler = useCallback(
|
const onChangeSelectedFilterHandler = useCallback(
|
||||||
(value: unknown) => {
|
(value: unknown) => {
|
||||||
if (typeof value === 'object' && Array.isArray(value)) {
|
if (typeof value === 'object' && Array.isArray(value)) {
|
||||||
setSelectedFilter(
|
onSelectedFilterChange(
|
||||||
value.map((e) => ({
|
value.map((e) => ({
|
||||||
value: e,
|
value: e,
|
||||||
})),
|
})),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[setSelectedFilter],
|
[onSelectedFilterChange],
|
||||||
);
|
);
|
||||||
|
|
||||||
const uniqueLabels: Array<string> = useMemo(() => {
|
const uniqueLabels: Array<string> = useMemo(() => {
|
||||||
@ -122,8 +122,8 @@ function Filter({
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface FilterProps {
|
interface FilterProps {
|
||||||
setSelectedFilter: Dispatch<SetStateAction<Array<Value>>>;
|
onSelectedFilterChange: (value: Array<Value>) => void;
|
||||||
setSelectedGroup: Dispatch<SetStateAction<Array<Value>>>;
|
onSelectedGroupChange: (value: Array<Value>) => void;
|
||||||
allAlerts: Alerts[];
|
allAlerts: Alerts[];
|
||||||
selectedGroup: Array<Value>;
|
selectedGroup: Array<Value>;
|
||||||
selectedFilter: Array<Value>;
|
selectedFilter: Array<Value>;
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { useState } from 'react';
|
|
||||||
import { Alerts } from 'types/api/alerts/getTriggered';
|
import { Alerts } from 'types/api/alerts/getTriggered';
|
||||||
|
|
||||||
import Filter, { Value } from './Filter';
|
import Filter, { Value } from './Filter';
|
||||||
@ -6,18 +5,21 @@ import FilteredTable from './FilteredTable';
|
|||||||
import NoFilterTable from './NoFilterTable';
|
import NoFilterTable from './NoFilterTable';
|
||||||
import { NoTableContainer } from './styles';
|
import { NoTableContainer } from './styles';
|
||||||
|
|
||||||
function TriggeredAlerts({ allAlerts }: TriggeredAlertsProps): JSX.Element {
|
function TriggeredAlerts({
|
||||||
const [selectedGroup, setSelectedGroup] = useState<Value[]>([]);
|
allAlerts,
|
||||||
const [selectedFilter, setSelectedFilter] = useState<Value[]>([]);
|
selectedFilter,
|
||||||
|
selectedGroup,
|
||||||
|
onSelectedFilterChange,
|
||||||
|
onSelectedGroupChange,
|
||||||
|
}: TriggeredAlertsProps): JSX.Element {
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<Filter
|
<Filter
|
||||||
allAlerts={allAlerts}
|
allAlerts={allAlerts}
|
||||||
selectedFilter={selectedFilter}
|
selectedFilter={selectedFilter}
|
||||||
selectedGroup={selectedGroup}
|
selectedGroup={selectedGroup}
|
||||||
setSelectedFilter={setSelectedFilter}
|
onSelectedFilterChange={onSelectedFilterChange}
|
||||||
setSelectedGroup={setSelectedGroup}
|
onSelectedGroupChange={onSelectedGroupChange}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{selectedFilter.length === 0 && selectedGroup.length === 0 ? (
|
{selectedFilter.length === 0 && selectedGroup.length === 0 ? (
|
||||||
@ -45,6 +47,10 @@ function TriggeredAlerts({ allAlerts }: TriggeredAlertsProps): JSX.Element {
|
|||||||
|
|
||||||
interface TriggeredAlertsProps {
|
interface TriggeredAlertsProps {
|
||||||
allAlerts: Alerts[];
|
allAlerts: Alerts[];
|
||||||
|
selectedFilter: Array<Value>;
|
||||||
|
selectedGroup: Array<Value>;
|
||||||
|
onSelectedFilterChange: (value: Array<Value>) => void;
|
||||||
|
onSelectedGroupChange: (value: Array<Value>) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default TriggeredAlerts;
|
export default TriggeredAlerts;
|
||||||
|
@ -4,14 +4,17 @@ import Spinner from 'components/Spinner';
|
|||||||
import { REACT_QUERY_KEY } from 'constants/reactQueryKeys';
|
import { REACT_QUERY_KEY } from 'constants/reactQueryKeys';
|
||||||
import useAxiosError from 'hooks/useAxiosError';
|
import useAxiosError from 'hooks/useAxiosError';
|
||||||
import { isUndefined } from 'lodash-es';
|
import { isUndefined } from 'lodash-es';
|
||||||
import { useEffect, useRef } from 'react';
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||||
import { useQuery } from 'react-query';
|
import { useQuery } from 'react-query';
|
||||||
import { useSelector } from 'react-redux';
|
import { useSelector } from 'react-redux';
|
||||||
import { AppState } from 'store/reducers';
|
import { AppState } from 'store/reducers';
|
||||||
|
|
||||||
|
import { Value } from './Filter';
|
||||||
import TriggerComponent from './TriggeredAlert';
|
import TriggerComponent from './TriggeredAlert';
|
||||||
|
|
||||||
function TriggeredAlerts(): JSX.Element {
|
function TriggeredAlerts(): JSX.Element {
|
||||||
|
const [selectedGroup, setSelectedGroup] = useState<Value[]>([]);
|
||||||
|
const [selectedFilter, setSelectedFilter] = useState<Value[]>([]);
|
||||||
const userId = useSelector<AppState, string | undefined>(
|
const userId = useSelector<AppState, string | undefined>(
|
||||||
(state) => state.app.user?.userId,
|
(state) => state.app.user?.userId,
|
||||||
);
|
);
|
||||||
@ -34,6 +37,14 @@ function TriggeredAlerts(): JSX.Element {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const handleSelectedFilterChange = useCallback((newFilter: Value[]) => {
|
||||||
|
setSelectedFilter(newFilter);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleSelectedGroupChange = useCallback((newGroup: Value[]) => {
|
||||||
|
setSelectedGroup(newGroup);
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!hasLoggedEvent.current && !isUndefined(alertsResponse.data?.payload)) {
|
if (!hasLoggedEvent.current && !isUndefined(alertsResponse.data?.payload)) {
|
||||||
logEvent('Alert: Triggered alert list page visited', {
|
logEvent('Alert: Triggered alert list page visited', {
|
||||||
@ -44,14 +55,30 @@ function TriggeredAlerts(): JSX.Element {
|
|||||||
}, [alertsResponse.data?.payload]);
|
}, [alertsResponse.data?.payload]);
|
||||||
|
|
||||||
if (alertsResponse.error) {
|
if (alertsResponse.error) {
|
||||||
return <TriggerComponent allAlerts={[]} />;
|
return (
|
||||||
|
<TriggerComponent
|
||||||
|
allAlerts={[]}
|
||||||
|
selectedFilter={selectedFilter}
|
||||||
|
selectedGroup={selectedGroup}
|
||||||
|
onSelectedFilterChange={handleSelectedFilterChange}
|
||||||
|
onSelectedGroupChange={handleSelectedGroupChange}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (alertsResponse.isFetching || alertsResponse?.data?.payload === undefined) {
|
if (alertsResponse.isFetching || alertsResponse?.data?.payload === undefined) {
|
||||||
return <Spinner height="75vh" tip="Loading Alerts..." />;
|
return <Spinner height="75vh" tip="Loading Alerts..." />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <TriggerComponent allAlerts={alertsResponse?.data?.payload || []} />;
|
return (
|
||||||
|
<TriggerComponent
|
||||||
|
allAlerts={alertsResponse?.data?.payload || []}
|
||||||
|
selectedFilter={selectedFilter}
|
||||||
|
selectedGroup={selectedGroup}
|
||||||
|
onSelectedFilterChange={handleSelectedFilterChange}
|
||||||
|
onSelectedGroupChange={handleSelectedGroupChange}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default TriggeredAlerts;
|
export default TriggeredAlerts;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user