Skip to content

Commit 190bdf8

Browse files
authored
Merge pull request #83 from metrico/jacovinus-fix-labels
network alerts fix
2 parents 856606c + 8df4d03 commit 190bdf8

40 files changed

+3876
-3676
lines changed

Diff for: src/actions/errorHandler.js

+69-41
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,69 @@
1-
export const errorHandler = (url, error) => {
2-
const { request, response } = error;
3-
4-
if (response?.statusText) {
5-
const status = response?.status;
6-
return {
7-
message: "API " + response.statusText + ", Please adjust API URL",
8-
status,
9-
};
10-
} else if (!url.includes(window.location.protocol)) {
11-
return {
12-
message: "Mixed Content Error, your View should be over same protocol as your API",
13-
status: 500,
14-
};
15-
} else if (request) {
16-
if(error.stack.includes('Network Error')) {
17-
return {
18-
message: "Invalid API URL, please adjust API URL",status:500
19-
}
20-
}
21-
return {
22-
message: "server time out",
23-
status: response?.status,
24-
};
25-
} else if (error.stack.includes("Invalid URL")) {
26-
return {
27-
message: "Invalid API URL, please adjust API URL",
28-
stauts: response?.status,
29-
};
30-
} else if (error?.response?.status === 404) {
31-
return {
32-
message: "Invalid API URL, please adjust API URL",
33-
status: response?.status,
34-
};
35-
} else {
36-
return {
37-
message: "something went wrong with request",
38-
status: response?.status,
39-
};
40-
}
41-
};
1+
export const errorHandler = (error) => {
2+
3+
const LABELS_URL = "/loki/api/v1/labels";
4+
const QUERY_URL = "/loki/api/v1/query_range";
5+
6+
const { request, response } = error;
7+
const url = error?.response?.request?.responseURL
8+
9+
10+
let type = () => {
11+
switch(url) {
12+
case url?.includes(LABELS_URL):
13+
return 'labels';
14+
case url?.includes(QUERY_URL):
15+
return 'query'
16+
default: return 'labels'
17+
}
18+
}
19+
20+
if (response?.statusText) {
21+
const status = response?.status;
22+
23+
return {
24+
message: "API " + response.statusText + ", Please adjust API URL",
25+
status,
26+
type: type()
27+
};
28+
} else if (url && !url.includes(window.location.protocol)) {
29+
30+
return {
31+
message: "Mixed Content Error, your View should be over same protocol as your API",
32+
status: 500,
33+
type : type()
34+
};
35+
} else if (request) {
36+
if (error.stack.includes('Network Error')) {
37+
return {
38+
message: "Invalid API URL, please adjust API URL",
39+
status: 500,
40+
type: type()
41+
}
42+
}
43+
return {
44+
message: "server time out",
45+
status: response?.status,
46+
type: type()
47+
};
48+
} else if (error?.stack?.includes("Invalid URL")) {
49+
return {
50+
message: "Invalid API URL, please adjust API URL",
51+
stauts: response?.status,
52+
type: type()
53+
};
54+
} else if (error?.response?.status === 404) {
55+
return {
56+
message: "Invalid API URL, please adjust API URL",
57+
status: response?.status,
58+
type: type()
59+
};
60+
} else {
61+
if (type === 'labels') return;
62+
63+
return {
64+
message: "something went wrong with request",
65+
status: response?.status,
66+
type: type()
67+
};
68+
}
69+
};

Diff for: src/actions/index.js

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
export * from "./setStartTime";
2-
export * from "./setStopTime";
3-
export * from "./setQueryLimit";
4-
export * from "./setQueryStep";
5-
export * from "./setRangeOpen";
6-
export * from "./setTimeRangeLabel";
7-
export * from "./setApiUrl";
8-
export * from "./setQuery";
9-
export * from "./setIsSubmit";
10-
export * from "./setMatrixData";
11-
export * from "./setQueryHistory";
12-
export * from "./setHistoryOpen";
13-
export * from "./setApiError";
14-
export * from "./errorHandler";
15-
export * from "./setLabels";
16-
export * from "./createAlert";
17-
export * from "./removeAlert";
18-
export * from "./setFromTime";
19-
export * from "./setToTime";
1+
export * from "./setStartTime";
2+
export * from "./setStopTime";
3+
export * from "./setQueryLimit";
4+
export * from "./setQueryStep";
5+
export * from "./setRangeOpen";
6+
export * from "./setTimeRangeLabel";
7+
export * from "./setApiUrl";
8+
export * from "./setQuery";
9+
export * from "./setIsSubmit";
10+
export * from "./setMatrixData";
11+
export * from "./setQueryHistory";
12+
export * from "./setHistoryOpen";
13+
export * from "./setApiError";
14+
export * from "./errorHandler";
15+
export * from "./setLabels";
16+
export * from "./createAlert";
17+
export * from "./removeAlert";
18+
export * from "./setFromTime";
19+
export * from "./setToTime";

Diff for: src/actions/loadLabelValues.js

+69-69
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,69 @@
1-
import axios from "axios";
2-
import { errorHandler } from "./errorHandler";
3-
import { setApiError } from "./setApiError";
4-
import { setLabels } from "./setLabels";
5-
import setLabelValues from "./setLabelValues";
6-
import setLoading from "./setLoading";
7-
8-
9-
export default function loadLabelValues(label, labelList, apiUrl) {
10-
if (!label || (label?.length <= 0 && label.lsList.length <= 0)) {
11-
return () => {};
12-
};
13-
14-
const url = apiUrl;
15-
16-
const origin = window.location.origin
17-
18-
const headers = {
19-
"Access-Control-Allow-Origin": origin,
20-
"Access-Control-Allow-Headers": ["Access-Control-Request-Headers", "Content-Type"],
21-
"Content-Type": "application/json",
22-
}
23-
24-
const options = {
25-
method: "GET",
26-
headers: headers,
27-
mode: "cors",
28-
29-
};
30-
31-
return async (dispatch) => {
32-
dispatch(setLoading(true))
33-
34-
await axios.get(`${url}/loki/api/v1/label/${label.name}/values`, options)
35-
?.then(response => {
36-
if (response?.data?.data) {
37-
const values = response?.data?.data?.map?.((value) => ({
38-
name: value,
39-
selected: false,
40-
inverted: false
41-
}));
42-
43-
const lsList = [...labelList];
44-
lsList.forEach((l) => {
45-
if (l?.name === label?.name) {
46-
l.values = [...values];
47-
}
48-
});
49-
dispatch(setLabels(lsList))
50-
} else if(!response) {
51-
dispatch(setApiError('URL NOT FOUND'))
52-
dispatch(setLabelValues([]))
53-
}
54-
55-
dispatch(setLoading(false));
56-
dispatch(setApiError(''))
57-
dispatch(setLabelValues(response?.data?.data));
58-
59-
}).catch(error => {
60-
dispatch(setLoading(false))
61-
const { message } = errorHandler(url, error)
62-
dispatch(setApiError(message || 'API NOT FOUND'))
63-
dispatch(setLabelValues([]))
64-
console.err(error)
65-
})
66-
}
67-
68-
69-
}
1+
import axios from "axios";
2+
import { errorHandler } from "./errorHandler";
3+
import { setApiError } from "./setApiError";
4+
import { setLabels } from "./setLabels";
5+
import setLabelValues from "./setLabelValues";
6+
import setLoading from "./setLoading";
7+
8+
9+
export default function loadLabelValues(label, labelList, apiUrl) {
10+
if (!label || (label?.length <= 0 && label.lsList.length <= 0)) {
11+
return () => {};
12+
};
13+
14+
const url = apiUrl;
15+
16+
const origin = window.location.origin
17+
18+
const headers = {
19+
"Access-Control-Allow-Origin": origin,
20+
"Access-Control-Allow-Headers": ["Access-Control-Request-Headers", "Content-Type"],
21+
"Content-Type": "application/json",
22+
}
23+
24+
const options = {
25+
method: "GET",
26+
headers: headers,
27+
mode: "cors",
28+
29+
};
30+
31+
return async (dispatch) => {
32+
dispatch(setLoading(true))
33+
34+
await axios.get(`${url}/loki/api/v1/label/${label.name}/values`, options)
35+
?.then(response => {
36+
if (response?.data?.data) {
37+
const values = response?.data?.data?.map?.((value) => ({
38+
name: value,
39+
selected: false,
40+
inverted: false
41+
}));
42+
43+
const lsList = [...labelList];
44+
lsList.forEach((l) => {
45+
if (l?.name === label?.name) {
46+
l.values = [...values];
47+
}
48+
});
49+
dispatch(setLabels(lsList))
50+
} else if(!response) {
51+
dispatch(setApiError('URL NOT FOUND'))
52+
dispatch(setLabelValues([]))
53+
}
54+
55+
dispatch(setLoading(false));
56+
dispatch(setApiError(''))
57+
dispatch(setLabelValues(response?.data?.data));
58+
59+
}).catch(error => {
60+
dispatch(setLoading(false))
61+
const { message } = errorHandler(url, error,'lavelValues')
62+
dispatch(setApiError(message || 'API NOT FOUND'))
63+
dispatch(setLabelValues([]))
64+
console.error(error)
65+
})
66+
}
67+
68+
69+
}

0 commit comments

Comments
 (0)