From c8469ecaf56ad6ce5f23beeee3ad7bc6301d952e Mon Sep 17 00:00:00 2001 From: Boyko Date: Fri, 17 Jan 2020 00:22:47 +0300 Subject: [PATCH] React UI: hide non selected alert types (#6642) * hide non selected alert types Signed-off-by: Boyko Lalov * revert 'show annotations' checkbox to be always visible Signed-off-by: blalov --- web/ui/react-app/src/App.css | 2 +- .../src/pages/alerts/AlertContents.tsx | 35 +++++++++++-------- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/web/ui/react-app/src/App.css b/web/ui/react-app/src/App.css index 6e6f1d43e4..72b23d2641 100644 --- a/web/ui/react-app/src/App.css +++ b/web/ui/react-app/src/App.css @@ -226,7 +226,7 @@ button.execute-btn { font-size: large; } -.status-badges { +.group-info { display: flex; justify-content: space-between; margin-bottom: 10px; diff --git a/web/ui/react-app/src/pages/alerts/AlertContents.tsx b/web/ui/react-app/src/pages/alerts/AlertContents.tsx index eee588dec9..fee7f3558b 100644 --- a/web/ui/react-app/src/pages/alerts/AlertContents.tsx +++ b/web/ui/react-app/src/pages/alerts/AlertContents.tsx @@ -51,17 +51,17 @@ const stateColorTuples: Array<[RuleState, 'success' | 'warning' | 'danger']> = [ ]; const AlertsContent: FC = ({ groups = [], statsCount }) => { - const [state, setState] = useState>({ + const [filter, setFilter] = useState>({ firing: true, pending: true, inactive: true, }); const [showAnnotations, setShowAnnotations] = useState(false); - const toggle = (ruleState: RuleState) => () => { - setState({ - ...state, - [ruleState]: !state[ruleState], + const toggleFilter = (ruleState: RuleState) => () => { + setFilter({ + ...filter, + [ruleState]: !filter[ruleState], }); }; @@ -70,7 +70,13 @@ const AlertsContent: FC = ({ groups = [], statsCount }) => {
{stateColorTuples.map(([state, color]) => { return ( - + {state} ({statsCount[state]}) @@ -86,30 +92,31 @@ const AlertsContent: FC = ({ groups = [], statsCount }) => {
{groups.map((group, i) => { - return ( + const hasFilterOn = group.rules.some(rule => filter[rule.state]); + return hasFilterOn ? ( - + {group.file} > {group.name} - + {group.rules.map((rule, j) => { return ( - state[rule.state] && ( + filter[rule.state] && ( ) ); })} - ); + ) : null; })} ); }; -interface StatusBadgesProps { +interface GroupInfoProps { rules: Rule[]; } -const StatusBadges: FC = ({ rules, children }) => { +export const GroupInfo: FC = ({ rules, children }) => { const statesCounter = rules.reduce( (acc, r) => { return { @@ -124,7 +131,7 @@ const StatusBadges: FC = ({ rules, children }) => { ); return ( -
+
{children}
{isPresent(statesCounter.inactive) && inactive}