+
+ {group.shared.annotations
+ .filter((a) => a.isLink === false)
+ .map((a) => (
+
))}
- {alertmanagers.map((am) => (
-
- ))}
-
- {group.shared.annotations
- .filter((a) => a.isLink === true)
- .map((a) => (
-
- ))}
- {Object.keys(group.shared.silences).length === 0 ? null : (
-
- {Object.entries(
- group.shared.silences
- ).map(([cluster, silences]) =>
- silences.map((silenceID) =>
- RenderSilence(
- alertStore,
- silenceFormStore,
- afterUpdate,
- cluster,
- silenceID
- )
- )
- )}
-
+
+ {Object.entries(group.shared.labels).map(([name, value]) => (
+
+ ))}
+ {alertmanagers.map((am) => (
+
+ ))}
+
+ {group.shared.annotations
+ .filter((a) => a.isLink === true)
+ .map((a) => (
+
+ ))}
+ {Object.keys(group.shared.silences).length === 0 ? null : (
+
+ {Object.entries(group.shared.silences).map(([cluster, silences]) =>
+ silences.map((silenceID) =>
+ RenderSilence(
+ alertStore,
+ silenceFormStore,
+ afterUpdate,
+ cluster,
+ silenceID
+ )
+ )
)}
- );
- }
- }
-);
+ )}
+
+ ));
+};
+GroupFooter.propTypes = {
+ group: APIGroup.isRequired,
+ alertmanagers: PropTypes.arrayOf(PropTypes.string).isRequired,
+ afterUpdate: PropTypes.func.isRequired,
+ alertStore: PropTypes.instanceOf(AlertStore).isRequired,
+ silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired,
+};
export { GroupFooter };
diff --git a/ui/src/Components/Grid/AlertGrid/AlertGroup/GroupHeader/index.js b/ui/src/Components/Grid/AlertGrid/AlertGroup/GroupHeader/index.js
index ac646c01c..4c88fd505 100644
--- a/ui/src/Components/Grid/AlertGrid/AlertGroup/GroupHeader/index.js
+++ b/ui/src/Components/Grid/AlertGrid/AlertGroup/GroupHeader/index.js
@@ -1,7 +1,7 @@
-import React, { Component } from "react";
+import React from "react";
import PropTypes from "prop-types";
-import { observer } from "mobx-react";
+import { useObserver } from "mobx-react";
import { APIGroup } from "Models/API";
import { AlertStore } from "Stores/AlertStore";
@@ -13,119 +13,110 @@ import { AlertAck } from "Components/AlertAck";
import { ToggleIcon } from "Components/ToggleIcon";
import { GroupMenu } from "./GroupMenu";
-const GroupHeader = observer(
- class GroupHeader extends Component {
- static propTypes = {
- collapseStore: PropTypes.shape({
- value: PropTypes.bool.isRequired,
- toggle: PropTypes.func.isRequired,
- }).isRequired,
- group: APIGroup.isRequired,
- alertStore: PropTypes.instanceOf(AlertStore).isRequired,
- silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired,
- themedCounters: PropTypes.bool.isRequired,
- setIsMenuOpen: PropTypes.func.isRequired,
- gridLabelValue: PropTypes.string.isRequired,
- };
+const GroupHeader = ({
+ collapseStore,
+ group,
+ alertStore,
+ silenceFormStore,
+ themedCounters,
+ setIsMenuOpen,
+ gridLabelValue,
+}) => {
+ const onCollapseClick = (event) => {
+ // left click => toggle current group
+ // left click + alt => toggle all groups
+ collapseStore.toggle();
- onCollapseClick = (event) => {
- const { collapseStore, gridLabelValue } = this.props;
-
- // left click => toggle current group
- // left click + alt => toggle all groups
-
- collapseStore.toggle();
-
- if (event.altKey === true) {
- const toggleEvent = new CustomEvent("alertGroupCollapse", {
- detail: {
- gridLabelValue: gridLabelValue,
- value: collapseStore.value,
- },
- });
- window.dispatchEvent(toggleEvent);
- }
- };
-
- render() {
- const {
- collapseStore,
- group,
- alertStore,
- silenceFormStore,
- themedCounters,
- setIsMenuOpen,
- } = this.props;
-
- return (
-