Skip to content

Commit 8f0ed86

Browse files
Merge pull request #539 from Fewwy/fix-alertschartbars
OU-833: fix 2 bugs for incidents page
2 parents cd1a2c8 + 82f1389 commit 8f0ed86

File tree

5 files changed

+44
-32
lines changed

5 files changed

+44
-32
lines changed

web/src/components/Incidents/AlertsChart/AlertsChart.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ const AlertsChart = ({ theme }: { theme: 'light' | 'dark' }) => {
4444
const filteredData = useSelector(
4545
(state: MonitoringState) => state.plugins.mcp.incidentsData.filteredIncidentsData,
4646
);
47-
const incidentGroupId = useSelector(
48-
(state: MonitoringState) => state.plugins.mcp.incidentsData.groupId,
47+
const incidentsActiveFilters = useSelector(
48+
(state: MonitoringState) => state.plugins.mcp.incidentsData.incidentsActiveFilters,
4949
);
5050
const { i18n } = useTranslation();
5151
// Use dynamic date range based on actual alerts data instead of fixed chartDays
@@ -68,8 +68,8 @@ const AlertsChart = ({ theme }: { theme: 'light' | 'dark' }) => {
6868
}, [chartData]);
6969

7070
const selectedIncidentIsVisible = useMemo(() => {
71-
return filteredData.some((incident) => incident.group_id === incidentGroupId);
72-
}, [filteredData, incidentGroupId]);
71+
return filteredData.some((incident) => incident.group_id === incidentsActiveFilters.groupId);
72+
}, [filteredData, incidentsActiveFilters.groupId]);
7373

7474
useEffect(() => {
7575
dispatch(setAlertsAreLoading({ alertsAreLoading: !selectedIncidentIsVisible }));

web/src/components/Incidents/ToolbarItemFilter.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
Badge,
1010
} from '@patternfly/react-core';
1111
import { getFilterKey } from './utils';
12-
import { IncidentFilters, IncidentFiltersCombined } from './model';
12+
import { IncidentFiltersCombined } from './model';
1313
import { setAlertsAreLoading } from '../../store/actions';
1414

1515
interface IncidentFilterToolbarItemProps {
@@ -30,7 +30,7 @@ interface IncidentFilterToolbarItemProps {
3030
incidentFilterIsExpanded: boolean;
3131
onIncidentFiltersSelect: (
3232
event: React.MouseEvent | React.ChangeEvent | undefined,
33-
selection: IncidentFilters | undefined,
33+
selection: any,
3434
dispatch: any,
3535
activeFilters: any,
3636
categoryFilterType: string,
@@ -86,7 +86,7 @@ const IncidentFilterToolbarItem: React.FC<IncidentFilterToolbarItemProps> = ({
8686
if (typeof selection === 'string') {
8787
onIncidentFiltersSelect(
8888
event,
89-
selection as IncidentFilters,
89+
selection,
9090
dispatch,
9191
incidentsActiveFilters,
9292
categoryName.toLowerCase(),

web/src/components/Incidents/model.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,24 @@ export type Alert = {
5454

5555
export type DaysFilters = '1 day' | '3 days' | '7 days' | '15 days';
5656

57-
export type IncidentFilters = 'Critical' | 'Warning' | 'Firing' | 'Informative' | 'Resolved';
57+
export type IncidentStateFilters = 'Resolved' | 'Firing';
58+
59+
export type IncidentSeverityFilters = 'Critical' | 'Warning' | 'Informative';
5860

5961
export type Severity = 'critical' | 'warning' | 'info';
6062

63+
export type IncidentFilterSelectionCombined =
64+
| 'Critical'
65+
| 'Warning'
66+
| 'Informative'
67+
| 'Resolved'
68+
| 'Firing';
69+
6170
export type IncidentFiltersCombined = {
6271
days: Array<DaysFilters>;
6372
groupId?: Array<string>;
64-
severity?: Array<string>;
65-
state?: Array<string>;
73+
severity?: Array<IncidentSeverityFilters>;
74+
state?: Array<IncidentStateFilters>;
6675
};
6776

6877
export type IncidentsPageFiltersExpandedState = {

web/src/components/Incidents/utils.ts

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import {
1212
AlertsIntervalsArray,
1313
DaysFilters,
1414
Incident,
15-
IncidentFilters,
1615
IncidentFiltersCombined,
1716
IncidentsDetailsAlert,
1817
SpanDates,
@@ -227,26 +226,20 @@ export const createAlertsChartBars = (alert: IncidentsDetailsAlert): AlertsChart
227226
warning: t_global_color_status_warning_default.var,
228227
};
229228

230-
const data: AlertsChartBar[] = [];
229+
const data = [];
231230

232231
for (let i = 0; i < groupedData.length; i++) {
233-
const y0AsString = new Date(groupedData[i][0] * 1000).toISOString();
234-
const yAsString = new Date(groupedData[i][1] * 1000).toISOString();
235-
236232
data.push({
237-
y0: y0AsString,
238-
y: yAsString,
233+
y0: new Date(groupedData[i][0] * 1000),
234+
y: new Date(groupedData[i][1] * 1000),
239235
x: alert.x,
240-
severity: (alert.severity[0].toUpperCase() + alert.severity.slice(1)) as
241-
| 'Info'
242-
| 'Warning'
243-
| 'Critical',
236+
severity: alert.severity[0].toUpperCase() + alert.severity.slice(1),
244237
name: alert.alertname,
245238
namespace: alert.namespace,
246239
layer: alert.layer,
247240
component: alert.component,
248-
nodata: groupedData[i][2] === 'nodata',
249-
alertstate: alert.alertstate as 'resolved' | 'firing',
241+
nodata: groupedData[i][2] === 'nodata' ? true : false,
242+
alertstate: alert.alertstate,
250243
silenced: alert.silenced,
251244
fill:
252245
alert.severity === 'critical'
@@ -444,7 +437,7 @@ export function filterIncident(filters: IncidentFiltersCombined, incidents: Arra
444437

445438
export const onDeleteIncidentFilterChip = (
446439
type: string,
447-
id: IncidentFilters | string,
440+
id: string,
448441
filters: IncidentFiltersCombined,
449442
setFilters,
450443
) => {
@@ -601,7 +594,7 @@ export const changeDaysFilter = (
601594
*/
602595
export const onIncidentFiltersSelect = (
603596
event,
604-
selection: IncidentFilters | undefined,
597+
selection: string,
605598
dispatch,
606599
incidentsActiveFilters: IncidentFiltersCombined,
607600
filterCategoryType: string,

web/src/store/store.ts

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import { Alert, PrometheusLabels, Rule } from '@openshift-console/dynamic-plugin
55
import { Silences } from '../components/types';
66
import {
77
DaysFilters,
8-
IncidentFilters,
9-
IncidentFiltersCombined,
8+
IncidentSeverityFilters,
9+
IncidentStateFilters,
1010
} from '../components/Incidents/model';
1111
import { Variable } from '../components/dashboards/legacy/legacy-variable-dropdowns';
1212

@@ -37,10 +37,16 @@ export type ObserveState = {
3737
incidentsChartSelectedId: string;
3838
incidentsInitialState: {
3939
days: Array<DaysFilters>;
40-
incidentFilters: Array<IncidentFilters>;
40+
severity: Array<IncidentSeverityFilters>;
41+
state: Array<IncidentStateFilters>;
42+
groupId: Array<string>;
43+
};
44+
incidentsActiveFilters: {
45+
days: Array<DaysFilters>;
46+
severity: Array<IncidentSeverityFilters>;
47+
state: Array<IncidentStateFilters>;
48+
groupId: Array<string>;
4149
};
42-
incidentsActiveFilters: IncidentFiltersCombined;
43-
groupId: string;
4450
incidentPageFilterType: string;
4551
};
4652
queryBrowser: {
@@ -77,13 +83,17 @@ export const defaultObserveState: ObserveState = {
7783
incidentsChartSelectedId: '',
7884
incidentsInitialState: {
7985
days: ['7 days'],
80-
incidentFilters: ['Critical', 'Warning', 'Firing'],
86+
severity: ['Critical', 'Warning'],
87+
state: ['Firing'],
88+
groupId: [],
8189
},
8290
incidentsActiveFilters: {
8391
days: [],
92+
severity: [],
93+
state: [],
94+
groupId: [],
8495
},
8596
incidentPageFilterType: 'Severity',
86-
groupId: '',
8797
},
8898
alerting: {},
8999
hideGraphs: false,

0 commit comments

Comments
 (0)