1- import { useEffect , useMemo , useRef , useState } from 'react' ;
1+ import React , { useEffect , useMemo , useRef , useState } from 'react' ;
22
33import {
44 Chart ,
@@ -23,35 +23,31 @@ import {
2323 t_global_color_status_info_default ,
2424 t_global_color_status_warning_default ,
2525} from '@patternfly/react-tokens' ;
26- import { useDispatch , useSelector } from 'react-redux' ;
2726import '../incidents-styles.css' ;
2827import { IncidentsTooltip } from '../IncidentsTooltip' ;
2928import { Incident } from '../model' ;
30- import { createIncidentsChartBars , generateDateArray , updateBrowserUrl } from '../utils' ;
29+ import { createIncidentsChartBars , generateDateArray } from '../utils' ;
3130import { dateTimeFormatter } from '../../console/utils/datetime' ;
3231import { useTranslation } from 'react-i18next' ;
33- import { MonitoringState } from '../../../store/store' ;
34- import { setAlertsAreLoading , setIncidentsActiveFilters } from '../../../store/actions' ;
3532
3633const IncidentsChart = ( {
3734 incidentsData,
3835 chartDays,
3936 theme,
37+ selectedGroupId,
38+ onIncidentClick,
4039} : {
4140 incidentsData : Array < Incident > ;
4241 chartDays : number ;
4342 theme : 'light' | 'dark' ;
43+ selectedGroupId : string ;
44+ onIncidentClick : ( groupId : string ) => void ;
4445} ) => {
45- const dispatch = useDispatch ( ) ;
4646 const [ isLoading , setIsLoading ] = useState ( true ) ;
4747 const [ chartContainerHeight , setChartContainerHeight ] = useState < number > ( ) ;
4848 const [ chartHeight , setChartHeight ] = useState < number > ( ) ;
4949 const dateValues = useMemo ( ( ) => generateDateArray ( chartDays ) , [ chartDays ] ) ;
5050
51- const incidentsActiveFilters = useSelector (
52- ( state : MonitoringState ) => state . plugins . mcp . incidentsData . incidentsActiveFilters ,
53- ) ;
54- const selectedGroupId = incidentsActiveFilters . groupId ?. [ 0 ] ?? null ;
5551 const { i18n } = useTranslation ( ) ;
5652
5753 const chartData = useMemo ( ( ) => {
@@ -81,36 +77,13 @@ const IncidentsChart = ({
8177 }
8278 } ;
8379 useEffect ( ( ) => {
84- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
85- // @ts -ignore
8680 const observer = getResizeObserver ( containerRef . current , handleResize ) ;
8781 handleResize ( ) ;
8882 return ( ) => observer ( ) ;
8983 } , [ ] ) ;
9084
9185 const clickHandler = ( data , datum ) => {
92- if ( datum . datum . group_id === selectedGroupId ) {
93- dispatch (
94- setIncidentsActiveFilters ( {
95- incidentsActiveFilters : {
96- ...incidentsActiveFilters ,
97- groupId : [ ] ,
98- } ,
99- } ) ,
100- ) ;
101- updateBrowserUrl ( incidentsActiveFilters , '' ) ;
102- dispatch ( setAlertsAreLoading ( { alertsAreLoading : true } ) ) ;
103- } else {
104- dispatch (
105- setIncidentsActiveFilters ( {
106- incidentsActiveFilters : {
107- ...incidentsActiveFilters ,
108- groupId : [ datum . datum . group_id ] ,
109- } ,
110- } ) ,
111- ) ;
112- updateBrowserUrl ( incidentsActiveFilters , datum . datum . group_id ) ;
113- }
86+ onIncidentClick ( datum . datum . group_id ) ;
11487 } ;
11588
11689 return (
@@ -235,4 +208,4 @@ const IncidentsChart = ({
235208 ) ;
236209} ;
237210
238- export default IncidentsChart ;
211+ export default React . memo ( IncidentsChart ) ;
0 commit comments