mirror of
https://github.com/prymitive/karma
synced 2026-05-19 04:26:41 +00:00
feat(ui): handle API response with grids instead of flat groups
This commit is contained in:
@@ -161,7 +161,7 @@ class AlertStore {
|
||||
{
|
||||
colors: {},
|
||||
counters: [],
|
||||
groups: [],
|
||||
grids: [],
|
||||
silences: {},
|
||||
upstreams: { instances: [], clusters: {} },
|
||||
getAlertmanagerByName(name) {
|
||||
@@ -326,7 +326,7 @@ class AlertStore {
|
||||
|
||||
const alertsURI =
|
||||
FormatBackendURI(
|
||||
`alerts.json?sortOrder=${sortOrder}&sortLabel=${sortLabel}&sortReverse=${sortReverse}&`
|
||||
`alerts.json?sortOrder=${sortOrder}&sortLabel=${sortLabel}&sortReverse=${sortReverse}&gridLabel=severity&`
|
||||
) + FormatAPIFilterQuery(this.filters.values.map((f) => f.raw));
|
||||
|
||||
return FetchGet(alertsURI, {}, this.info.setIsRetrying)
|
||||
@@ -401,7 +401,7 @@ class AlertStore {
|
||||
for (const key of [
|
||||
"colors",
|
||||
"counters",
|
||||
"groups",
|
||||
"grids",
|
||||
"silences",
|
||||
"upstreams",
|
||||
]) {
|
||||
|
||||
@@ -554,23 +554,49 @@ describe("AlertStore.fetch", () => {
|
||||
|
||||
it("adds new groups to the store after fetch", () => {
|
||||
const response = EmptyAPIResponse();
|
||||
response.groups = { foo: "foo", bar: "bar" };
|
||||
response.grids = [
|
||||
{
|
||||
labelName: "",
|
||||
labelValue: "",
|
||||
alertGroups: { foo: "foo", bar: "bar" },
|
||||
},
|
||||
];
|
||||
const store = new AlertStore(["label=value"]);
|
||||
store.parseAPIResponse(response);
|
||||
expect(Object.keys(store.data.groups)).toHaveLength(2);
|
||||
expect(store.data.groups).toMatchObject({ foo: "foo", bar: "bar" });
|
||||
expect(store.data.grids).toHaveLength(1);
|
||||
expect(Object.keys(store.data.grids[0].alertGroups)).toHaveLength(2);
|
||||
expect(store.data.grids[0].alertGroups).toMatchObject({
|
||||
foo: "foo",
|
||||
bar: "bar",
|
||||
});
|
||||
});
|
||||
|
||||
it("removes old groups from the store after fetch", () => {
|
||||
const store = new AlertStore(["label=value"]);
|
||||
store.data.groups = { foo: "foo", delete: "me", bar: "bar" };
|
||||
expect(Object.keys(store.data.groups)).toHaveLength(3);
|
||||
store.data.grids = [
|
||||
{
|
||||
labelName: "",
|
||||
labelValue: "",
|
||||
alertGroups: { foo: "foo", delete: "me", bar: "bar" },
|
||||
},
|
||||
];
|
||||
expect(store.data.grids).toHaveLength(1);
|
||||
expect(Object.keys(store.data.grids[0].alertGroups)).toHaveLength(3);
|
||||
|
||||
const response = EmptyAPIResponse();
|
||||
response.groups = { foo: "foo", bar: "bar" };
|
||||
response.grids = [
|
||||
{
|
||||
labelName: "",
|
||||
labelValue: "",
|
||||
alertGroups: { foo: "foo", bar: "bar" },
|
||||
},
|
||||
];
|
||||
|
||||
store.parseAPIResponse(response);
|
||||
expect(Object.keys(store.data.groups)).toHaveLength(2);
|
||||
expect(store.data.groups).toMatchObject({ foo: "foo", bar: "bar" });
|
||||
expect(Object.keys(store.data.grids[0].alertGroups)).toHaveLength(2);
|
||||
expect(store.data.grids[0].alertGroups).toMatchObject({
|
||||
foo: "foo",
|
||||
bar: "bar",
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user