fix: updated the triggered alert list code (#6127)

This commit is contained in:
rahulkeswani101 2024-10-07 12:14:09 +05:30 committed by GitHub
parent 5ef05891ce
commit ae5e63cc64
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 52 additions and 19 deletions

View File

@ -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>;

View File

@ -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;

View File

@ -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;