API_KEY
diff --git a/src/components/PingChart.vue b/src/components/PingChart.vue
index 53a837994..8f53ea766 100644
--- a/src/components/PingChart.vue
+++ b/src/components/PingChart.vue
@@ -24,6 +24,7 @@ export default {
},
data() {
return {
+ // Configurable filtering on top of the returned data
chartPeriodHrs: 6,
};
},
@@ -55,11 +56,10 @@ export default {
elements: {
point: {
+ // Hide points on chart unless mouse-over
radius: 0,
+ hitRadius: 100,
},
- bar: {
- barThickness: "flex",
- }
},
scales: {
x: {
@@ -77,9 +77,9 @@ export default {
maxRotation: 0,
autoSkipPadding: 30,
},
- bounds: "ticks",
grid: {
color: this.$root.theme === "light" ? "rgba(0,0,0,0.1)" : "rgba(255,255,255,0.1)",
+ offset: false,
},
},
y: {
@@ -109,8 +109,11 @@ export default {
mode: "nearest",
intersect: false,
padding: 10,
+ backgroundColor: this.$root.theme === "light" ? "rgba(212,232,222,1.0)" : "rgba(32,42,38,1.0)",
+ bodyColor: this.$root.theme === "light" ? "rgba(12,12,18,1.0)" : "rgba(220,220,220,1.0)",
+ titleColor: this.$root.theme === "light" ? "rgba(12,12,18,1.0)" : "rgba(220,220,220,1.0)",
filter: function (tooltipItem) {
- return tooltipItem.datasetIndex === 0;
+ return tooltipItem.datasetIndex === 0; // Hide tooltip on Bar Chart
},
callbacks: {
label: (context) => {
@@ -125,32 +128,29 @@ export default {
}
},
chartData() {
- let ping_data = [];
- let down_data = [];
+ let pingData = []; // Ping Data for Line Chart, y-axis contains ping time
+ let downData = []; // Down Data for Bar Chart, y-axis is 1 if target is down, 0 if target is up
if (this.monitorId in this.$root.heartbeatList) {
- ping_data = this.$root.heartbeatList[this.monitorId]
+ this.$root.heartbeatList[this.monitorId]
.filter(
(beat) => dayjs.utc(beat.time).tz(this.$root.timezone).isAfter(dayjs().subtract(this.chartPeriodHrs, "hours")))
.map((beat) => {
- return {
- x: dayjs.utc(beat.time).tz(this.$root.timezone).format("YYYY-MM-DD HH:mm:ss"),
+ const x = this.$root.datetime(beat.time);
+ pingData.push({
+ x,
y: beat.ping,
- };
- });
- down_data = this.$root.heartbeatList[this.monitorId]
- .filter(
- (beat) => dayjs.utc(beat.time).tz(this.$root.timezone).isAfter(dayjs().subtract(this.chartPeriodHrs, "hours")))
- .map((beat) => {
- return {
- x: dayjs.utc(beat.time).tz(this.$root.timezone).format("YYYY-MM-DD HH:mm:ss"),
+ });
+ downData.push({
+ x,
y: beat.status === 0 ? 1 : 0,
- };
+ })
});
}
return {
datasets: [
{
- data: ping_data,
+ // Line Chart
+ data: pingData,
fill: "origin",
tension: 0.2,
borderColor: "#5CDD8B",
@@ -158,11 +158,15 @@ export default {
yAxisID: "y",
},
{
+ // Bar Chart
type: "bar",
- data: down_data,
+ data: downData,
borderColor: "#00000000",
backgroundColor: "#DC354568",
yAxisID: "y1",
+ barThickness: "flex",
+ barPercentage: 1,
+ categoryPercentage: 1,
},
],
};
diff --git a/src/layouts/Layout.vue b/src/layouts/Layout.vue
index 546e6333c..7b04fda82 100644
--- a/src/layouts/Layout.vue
+++ b/src/layouts/Layout.vue
@@ -191,6 +191,7 @@ main {
}
footer {
+ color: #aaa;
font-size: 13px;
margin-top: 10px;
padding-bottom: 30px;
@@ -198,10 +199,6 @@ footer {
text-align: center;
}
-footer {
- color: #aaa;
-}
-
.dark {
header {
background-color: #161b22;