CEC-607 Parameterize Grafana (#103)
* CEC-607 Parameterize Grafana * Update urls
This commit is contained in:
@@ -1,24 +1,36 @@
|
||||
import { fetchRespHandler } from "../utils/http"
|
||||
import { fetchRespHandler } from "../utils/http";
|
||||
import { logger } from "./monitoring";
|
||||
|
||||
const API_ENDPOINT = "https://grafana.fiskerdps.com/api/datasources/proxy/2"
|
||||
const API_ENDPOINT = process.env.REACT_APP_GRAFANA_API;
|
||||
|
||||
const grafanaAPI = {
|
||||
getCarsCount: async () => fetch(`${API_ENDPOINT}/?query=SELECT%20countDistinct(VIN)%20as%20count%0AFROM%20default.vehicle_signal%0AWHERE%20Timestamp%20%3C%3D%20toDateTime64(${Date.now() / Math.pow(10, 3)}%2C%203)%20AND%20Timestamp%20%3E%3D%20toDateTime64(${Date.now() / Math.pow(10, 3) - 60 * 60 * 24}%2C%203)%20FORMAT%20JSON`, {
|
||||
getCarsCount: async () =>
|
||||
fetch(
|
||||
`${API_ENDPOINT}/?query=SELECT%20countDistinct(VIN)%20as%20count%0AFROM%20default.vehicle_signal%0AWHERE%20Timestamp%20%3C%3D%20toDateTime64(${
|
||||
Date.now() / Math.pow(10, 3)
|
||||
}%2C%203)%20AND%20Timestamp%20%3E%3D%20toDateTime64(${
|
||||
Date.now() / Math.pow(10, 3) - 60 * 60 * 24
|
||||
}%2C%203)%20FORMAT%20JSON`,
|
||||
{
|
||||
method: "GET",
|
||||
headers: Object.assign({ "Content-Type": "application/json" }),
|
||||
})
|
||||
.then(fetchRespHandler)
|
||||
.then(result => result.data[0].count)
|
||||
.catch(error => logger.warn(error.stack)),
|
||||
}
|
||||
)
|
||||
.then(fetchRespHandler)
|
||||
.then((result) => result.data[0].count)
|
||||
.catch((error) => logger.warn(error.stack)),
|
||||
|
||||
getSignalsCount: async () => fetch(`${API_ENDPOINT}/?query=SELECT%20count()%20as%20count%0AFROM%20default.vehicle_signal%20FORMAT%20JSON`, {
|
||||
getSignalsCount: async () =>
|
||||
fetch(
|
||||
`${API_ENDPOINT}/?query=SELECT%20count()%20as%20count%0AFROM%20default.vehicle_signal%20FORMAT%20JSON`,
|
||||
{
|
||||
method: "GET",
|
||||
headers: Object.assign({ "Content-Type": "application/json" }),
|
||||
})
|
||||
.then(fetchRespHandler)
|
||||
.then(result => result.data[0].count)
|
||||
.catch(error => logger.warn(error.stack)),
|
||||
}
|
||||
)
|
||||
.then(fetchRespHandler)
|
||||
.then((result) => result.data[0].count)
|
||||
.catch((error) => logger.warn(error.stack)),
|
||||
};
|
||||
|
||||
export default grafanaAPI;
|
||||
|
||||
50
src/services/grafanaCharts.js
Normal file
50
src/services/grafanaCharts.js
Normal file
@@ -0,0 +1,50 @@
|
||||
const GRAFANA_BASE_URL = process.env.REACT_APP_GRAFANA_BASE_URL;
|
||||
|
||||
const template = (props, value) => {
|
||||
const keys = Object.keys(props);
|
||||
|
||||
return keys.reduce(
|
||||
(current, key) => current.replace(`\${${key}}`, props[key]),
|
||||
value
|
||||
);
|
||||
};
|
||||
|
||||
export const grafanaCharts = {
|
||||
BASE: GRAFANA_BASE_URL,
|
||||
HOME_CHART: `${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_HOME_CHART_PATH}`,
|
||||
CELLVOLTAGE_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_VOLTAGE_CHART_PATH}`
|
||||
),
|
||||
CELLTEMP_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_CELLTEMP_CHART_PATH}`
|
||||
),
|
||||
BATTERYTEMP_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERYTEMP_CHART}`
|
||||
),
|
||||
BATTERYCAP_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERYCAP_CHART}`
|
||||
),
|
||||
BATTERYPERCENT_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERYPERCENT_CHART}`
|
||||
),
|
||||
BATTERY12VPERCENT_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERY12VPERCENT_CHART}`
|
||||
),
|
||||
BATTERY12VVOLTAGE_CHART: (props) =>
|
||||
template(
|
||||
props,
|
||||
`${GRAFANA_BASE_URL}${process.env.REACT_APP_GRAFANA_BATTERY12VVOLTAGE_CHART}`
|
||||
),
|
||||
};
|
||||
59
src/services/grafanaCharts.test.js
Normal file
59
src/services/grafanaCharts.test.js
Normal file
@@ -0,0 +1,59 @@
|
||||
import { grafanaCharts } from "./grafanaCharts";
|
||||
|
||||
describe("Grafana Charts URLs", () => {
|
||||
it("Base", () => {
|
||||
expect(grafanaCharts.BASE).toEqual("https://dev-grafana.fiskerdps.com");
|
||||
});
|
||||
|
||||
it("Home", () => {
|
||||
expect(grafanaCharts.HOME_CHART).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/1VTVJ_qGk/dashboard?orgId=2&refresh=30s&panelId=12"
|
||||
);
|
||||
});
|
||||
|
||||
it("Cell Voltage", () => {
|
||||
expect(
|
||||
grafanaCharts.CELLVOLTAGE_CHART({ vin: "VIN", cellNum: "CELLNUM" })
|
||||
).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/LVI-aQGnz/diagnostics?orgId=2&var-VIN=VIN&var-Signal=BMS_CellVoltCELLNUM&panelId=2"
|
||||
);
|
||||
});
|
||||
|
||||
it("Cell Temperature", () => {
|
||||
expect(
|
||||
grafanaCharts.CELLTEMP_CHART({ vin: "VIN", cellNum: "CELLNUM" })
|
||||
).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/LVI-aQGnz/diagnostics?orgId=2&var-VIN=VIN&var-Signal=BMS_CellTCELLNUM&panelId=2"
|
||||
);
|
||||
});
|
||||
|
||||
it("Battery Temperature Time Series", () => {
|
||||
expect(grafanaCharts.BATTERYTEMP_CHART({ vin: "VIN" })).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=4"
|
||||
);
|
||||
});
|
||||
|
||||
it("Battery Capacity Time Series", () => {
|
||||
expect(grafanaCharts.BATTERYCAP_CHART({ vin: "VIN" })).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=6"
|
||||
);
|
||||
});
|
||||
|
||||
it("Battery Percent Time Series", () => {
|
||||
expect(grafanaCharts.BATTERYPERCENT_CHART({ vin: "VIN" })).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&panelId=12"
|
||||
);
|
||||
});
|
||||
|
||||
it("12V Battery Percentage Time Series", () => {
|
||||
expect(grafanaCharts.BATTERY12VPERCENT_CHART({ vin: "VIN" })).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=2"
|
||||
);
|
||||
});
|
||||
|
||||
it("12V Battery Voltage Time Series", () => {
|
||||
expect(grafanaCharts.BATTERY12VVOLTAGE_CHART({ vin: "VIN" })).toEqual(
|
||||
"https://dev-grafana.fiskerdps.com/d-solo/jRKKo2gnz/battery?orgId=2&var-VIN=VIN&refresh=1m&panelId=9"
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user