From d6b68b807f06b5a3ed6cb68bf5f6983c59b8a197 Mon Sep 17 00:00:00 2001
From: 0xJacky
Date: Mon, 13 Feb 2023 11:09:17 +0800
Subject: [PATCH] enhance: analytic init and reactive style
---
frontend/src/layouts/BaseLayout.vue | 2 +-
frontend/src/views/dashboard/DashBoard.vue | 72 +++++++++++++++++-----
server/api/analytic.go | 7 ++-
3 files changed, 62 insertions(+), 19 deletions(-)
diff --git a/frontend/src/layouts/BaseLayout.vue b/frontend/src/layouts/BaseLayout.vue
index c26a3927..b09ac4dd 100644
--- a/frontend/src/layouts/BaseLayout.vue
+++ b/frontend/src/layouts/BaseLayout.vue
@@ -23,7 +23,7 @@ function getClientWidth() {
}
function collapse() {
- return getClientWidth() < 768
+ return getClientWidth() < 1280
}
const lang = computed(() => {
diff --git a/frontend/src/views/dashboard/DashBoard.vue b/frontend/src/views/dashboard/DashBoard.vue
index 9d154dd4..c535270f 100644
--- a/frontend/src/views/dashboard/DashBoard.vue
+++ b/frontend/src/views/dashboard/DashBoard.vue
@@ -44,6 +44,11 @@ onMounted(() => {
Object.assign(memory, r.memory)
Object.assign(disk, r.disk)
+ // uptime
+ handle_uptime(r.host?.uptime)
+ // load_avg
+ Object.assign(loadavg, r.loadavg)
+
net.last_recv = r.network.init.bytesRecv
net.last_sent = r.network.init.bytesSent
r.cpu.user.forEach((u: Usage) => {
@@ -71,6 +76,16 @@ onUnmounted(() => {
websocket.close()
})
+function handle_uptime(t: number) {
+ // uptime
+ let _uptime = Math.floor(t)
+ let uptime_days = Math.floor(_uptime / 86400)
+ _uptime -= uptime_days * 86400
+ let uptime_hours = Math.floor(_uptime / 3600)
+ _uptime -= uptime_hours * 3600
+ uptime.value = uptime_days + 'd ' + uptime_hours + 'h ' + Math.floor(_uptime / 60) + 'm'
+}
+
function wsOnMessage(m: { data: any }) {
const r = JSON.parse(m.data)
@@ -96,12 +111,7 @@ function wsOnMessage(m: { data: any }) {
disk_io.reads = r.disk.reads.y
// uptime
- let _uptime = Math.floor(r.uptime)
- let uptime_days = Math.floor(_uptime / 86400)
- _uptime -= uptime_days * 86400
- let uptime_hours = Math.floor(_uptime / 3600)
- _uptime -= uptime_hours * 3600
- uptime.value = uptime_days + 'd ' + uptime_hours + 'h ' + Math.floor(_uptime / 60) + 'm'
+ handle_uptime(r.uptime)
// loadavg
Object.assign(loadavg, r.loadavg)
@@ -142,19 +152,21 @@ function wsOnMessage(m: { data: any }) {
Load Averages:
- 1min:{{ loadavg?.load1?.toFixed(2) }} |
- 5min:{{ loadavg?.load5?.toFixed(2) }} |
- 15min:{{ loadavg?.load15?.toFixed(2) }}
+ 1min:{{ ' ' + loadavg?.load1?.toFixed(2) }}
+ | 5min:{{ loadavg?.load5?.toFixed(2) }}
+ | 15min:{{ loadavg?.load15?.toFixed(2) }}
OS:
- {{ host.platform }} ({{ host.platformVersion }}
- {{ host.os }} {{ host.kernelVersion }}
- {{ host.kernelArch }})
+ {{ ' ' + host.platform }} {{ host.platformVersion }}
+ ({{ host.os }} {{ host.kernelVersion }}
+ {{ host.kernelArch }})
- CPU:
- {{ cpu_info[0]?.modelName }} * {{ cpu_info.length }}
+ {{ $gettext('CPU:') + ' ' }}
+ {{ cpu_info[0]?.modelName }}
+ {{ (cpu_info[0]?.mhz / 1000).toFixed(2) + 'GHz' }}
+ * {{ cpu_info.length }}
@@ -177,7 +189,7 @@ function wsOnMessage(m: { data: any }) {
-
+
@@ -266,7 +278,7 @@ function wsOnMessage(m: { data: any }) {
.ant-card {
.ant-statistic {
- margin: 0 50px 10px 10px
+ margin: 0 0 10px 10px
}
.chart {
@@ -290,5 +302,33 @@ function wsOnMessage(m: { data: any }) {
}
}
}
+
+.os-platform {
+ text-transform: capitalize;
+}
+
+.load-avg-describe {
+ @media (max-width: 1600px) and (min-width: 1200px) {
+ display: none;
+ }
+}
+
+.os-info {
+ @media (max-width: 1600px) and (min-width: 1200px) {
+ display: none;
+ }
+}
+
+.cpu-model {
+ @media (max-width: 1790px) and (min-width: 1200px) {
+ display: none;
+ }
+}
+
+.cpu-mhz {
+ @media (min-width: 1790px) or (max-width: 1200px) {
+ display: none;
+ }
+}
diff --git a/server/api/analytic.go b/server/api/analytic.go
index 639d5ecb..b26eec13 100644
--- a/server/api/analytic.go
+++ b/server/api/analytic.go
@@ -183,6 +183,8 @@ func GetAnalyticInit(c *gin.Context) {
}
hostInfo, _ := host.Info()
+ loadAvg, _ := load.Avg()
+
c.JSON(http.StatusOK, gin.H{
"host": hostInfo,
"cpu": gin.H{
@@ -199,7 +201,8 @@ func GetAnalyticInit(c *gin.Context) {
"writes": analytic.DiskWriteRecord,
"reads": analytic.DiskReadRecord,
},
- "memory": memory,
- "disk": diskStat,
+ "memory": memory,
+ "disk": diskStat,
+ "loadavg": loadAvg,
})
}