|
|
|
@ -1,18 +1,14 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div>
|
|
|
|
|
<div class="period-options">
|
|
|
|
|
{{ $t("show") }}:
|
|
|
|
|
<select
|
|
|
|
|
id="chart-period-select"
|
|
|
|
|
v-model="chartPeriodHrs"
|
|
|
|
|
class="form-select form-select-sm ms-1"
|
|
|
|
|
>
|
|
|
|
|
<option value="0">{{ $t("recent") }}</option>
|
|
|
|
|
<option value="3">3h</option>
|
|
|
|
|
<option value="6">6h</option>
|
|
|
|
|
<option value="24">24h</option>
|
|
|
|
|
<option value="168">1w</option>
|
|
|
|
|
</select>
|
|
|
|
|
<button type="button" class="btn btn-light dropdown-toggle btn-period-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
|
|
|
|
{{ chartPeriodOptions[chartPeriodHrs] }}
|
|
|
|
|
</button>
|
|
|
|
|
<ul class="dropdown-menu dropdown-menu-end">
|
|
|
|
|
<li v-for="(item, key) in chartPeriodOptions" :key="key">
|
|
|
|
|
<a class="dropdown-item" :class="{ active: chartPeriodHrs == key }" href="#" @click="chartPeriodHrs = key">{{ item }}</a>
|
|
|
|
|
</li>
|
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="chart-wrapper">
|
|
|
|
|
<LineChart :chart-data="chartData" :options="chartOptions" />
|
|
|
|
@ -49,6 +45,14 @@ export default {
|
|
|
|
|
// Configurable filtering on top of the returned data
|
|
|
|
|
chartPeriodHrs: 0,
|
|
|
|
|
|
|
|
|
|
chartPeriodOptions: {
|
|
|
|
|
0: this.$t("recent"),
|
|
|
|
|
3: "3h",
|
|
|
|
|
6: "6h",
|
|
|
|
|
24: "24h",
|
|
|
|
|
168: "1w",
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// A heartbeatList for 3h, 6h, 24h, 1w
|
|
|
|
|
// Uses the $root.heartbeatList when value is null
|
|
|
|
|
heartbeatList: null
|
|
|
|
@ -251,15 +255,59 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.period-options {
|
|
|
|
|
padding: 0.3em 2.2em;
|
|
|
|
|
margin-bottom: -1.5em;
|
|
|
|
|
padding: 0.1em 1.0em;
|
|
|
|
|
margin-bottom: -2em;
|
|
|
|
|
float: right;
|
|
|
|
|
position: relative;
|
|
|
|
|
z-index: 10;
|
|
|
|
|
font-size: 0.8em;
|
|
|
|
|
|
|
|
|
|
.dropdown-menu {
|
|
|
|
|
padding: 0;
|
|
|
|
|
min-width: 50px;
|
|
|
|
|
font-size: 0.9em;
|
|
|
|
|
|
|
|
|
|
.dark & {
|
|
|
|
|
background: $dark-bg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dropdown-item {
|
|
|
|
|
border-radius: 0.3rem;
|
|
|
|
|
padding: 2px 16px 4px 16px;
|
|
|
|
|
|
|
|
|
|
.dark & {
|
|
|
|
|
background: $dark-bg;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dark &:hover {
|
|
|
|
|
background: $dark-font-color;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dark & .dropdown-item.active {
|
|
|
|
|
background: $primary;
|
|
|
|
|
color: $dark-font-color2;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.btn-period-toggle {
|
|
|
|
|
padding: 2px 15px;
|
|
|
|
|
background: transparent;
|
|
|
|
|
border: 0;
|
|
|
|
|
color: $link-color;
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
font-size: 0.9em;
|
|
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
|
vertical-align: 0.155em;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dark & {
|
|
|
|
|
color: $dark-font-color;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.chart-wrapper {
|
|
|
|
|
margin-bottom: 1.5em;
|
|
|
|
|
margin-bottom: 0.5em;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|