mirror of
https://github.com/prymitive/karma
synced 2026-05-05 03:16:51 +00:00
feat(ui): mark silences expiring in the next 5 minutes
This commit is contained in:
committed by
Łukasz Mierzwa
parent
a107ba7656
commit
7ef7307c82
@@ -3,6 +3,7 @@ import type { FC } from "react";
|
||||
import { observer } from "mobx-react-lite";
|
||||
|
||||
import parseISO from "date-fns/parseISO";
|
||||
import { differenceInSeconds } from "date-fns";
|
||||
|
||||
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
||||
import { faBellSlash } from "@fortawesome/free-solid-svg-icons/faBellSlash";
|
||||
@@ -16,12 +17,20 @@ import { DateFromNow } from "Components/DateFromNow";
|
||||
const SilenceProgress: FC<{
|
||||
silence: APISilenceT;
|
||||
}> = observer(({ silence }) => {
|
||||
return parseISO(silence.endsAt) < new Date() ? (
|
||||
<span className="badge bg-danger components-label">
|
||||
Expired <DateFromNow timestamp={silence.endsAt} />
|
||||
</span>
|
||||
) : (
|
||||
<span className="badge bg-light components-label">
|
||||
const diff = differenceInSeconds(parseISO(silence.endsAt), new Date());
|
||||
if (diff <= 0) {
|
||||
return (
|
||||
<span className="badge bg-danger components-label">
|
||||
Expired <DateFromNow timestamp={silence.endsAt} />
|
||||
</span>
|
||||
);
|
||||
}
|
||||
return (
|
||||
<span
|
||||
className={`badge ${
|
||||
diff <= 300 ? "bg-warning" : "bg-light"
|
||||
} components-label`}
|
||||
>
|
||||
Expires <DateFromNow timestamp={silence.endsAt} />
|
||||
</span>
|
||||
);
|
||||
|
||||
@@ -206,6 +206,13 @@ describe("<ManagedSilence progress bar />", () => {
|
||||
expect(tree.text()).toMatch(/Expired 1 year ago/);
|
||||
});
|
||||
|
||||
it("renders with class 'warning' if <= 5m is left", () => {
|
||||
jest.setSystemTime(new Date(Date.UTC(2000, 0, 1, 0, 56, 0)));
|
||||
const tree = MountedManagedSilence();
|
||||
expect(toDiffableHtml(tree.html())).toMatch(/bg-warning/);
|
||||
expect(tree.text()).toMatch(/Expires in 4 minutes/);
|
||||
});
|
||||
|
||||
it("progressbar uses class 'danger' when > 90%", () => {
|
||||
jest.setSystemTime(new Date(Date.UTC(2000, 0, 1, 0, 55, 0)));
|
||||
const tree = MountedManagedSilence();
|
||||
|
||||
Reference in New Issue
Block a user