diff --git a/package-lock.json b/package-lock.json
index 26c6129..7cc7c99 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -741,6 +741,12 @@
"@jridgewell/sourcemap-codec": "^1.4.10"
}
},
+ "node_modules/@kurkle/color": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.4.tgz",
+ "integrity": "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==",
+ "license": "MIT"
+ },
"node_modules/@levischuck/tiny-cbor": {
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.11.tgz",
@@ -3117,6 +3123,18 @@
"node": ">=8"
}
},
+ "node_modules/chart.js": {
+ "version": "4.4.9",
+ "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.9.tgz",
+ "integrity": "sha512-EyZ9wWKgpAU0fLJ43YAEIF8sr5F2W3LqbS40ZJyHIner2lY14ufqv2VMp69MAiZ2rpwxEUxEhIH/0U3xyRynxg==",
+ "license": "MIT",
+ "dependencies": {
+ "@kurkle/color": "^0.3.0"
+ },
+ "engines": {
+ "pnpm": ">=8"
+ }
+ },
"node_modules/chokidar": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
@@ -8658,6 +8676,16 @@
}
}
},
+ "node_modules/vue-chartjs": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-5.3.2.tgz",
+ "integrity": "sha512-NrkbRRoYshbXbWqJkTN6InoDVwVb90C0R7eAVgMWcB9dPikbruaOoTFjFYHE/+tNPdIe6qdLCDjfjPHQ0fw4jw==",
+ "license": "MIT",
+ "peerDependencies": {
+ "chart.js": "^4.1.1",
+ "vue": "^3.0.0-0 || ^2.7.0"
+ }
+ },
"node_modules/vue-i18n": {
"version": "9.14.4",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.4.tgz",
@@ -9091,7 +9119,7 @@
},
"packages/frontend": {
"name": "@nexus-terminal/frontend",
- "version": "0.4.1",
+ "version": "0.4.3",
"dependencies": {
"@fortawesome/fontawesome-free": "^6.7.2",
"@hcaptcha/vue3-hcaptcha": "^1.3.0",
@@ -9103,6 +9131,7 @@
"@xterm/addon-search": "^0.15.0",
"axios": "^1.8.4",
"buffer": "^6.0.3",
+ "chart.js": "^4.4.9",
"date-fns": "^4.1.0",
"guacamole-common-js": "^1.5.0",
"iconv-lite": "^0.6.3",
@@ -9113,6 +9142,7 @@
"splitpanes": "^4.0.3",
"vite-plugin-monaco-editor": "^1.1.0",
"vue": "^3.3.0",
+ "vue-chartjs": "^5.3.2",
"vue-i18n": "^9.14.4",
"vue-recaptcha-v3": "^2.0.1",
"vue-router": "^4.5.0",
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 57ddaf9..d021055 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -19,6 +19,7 @@
"@xterm/addon-search": "^0.15.0",
"axios": "^1.8.4",
"buffer": "^6.0.3",
+ "chart.js": "^4.4.9",
"date-fns": "^4.1.0",
"guacamole-common-js": "^1.5.0",
"iconv-lite": "^0.6.3",
@@ -29,6 +30,7 @@
"splitpanes": "^4.0.3",
"vite-plugin-monaco-editor": "^1.1.0",
"vue": "^3.3.0",
+ "vue-chartjs": "^5.3.2",
"vue-i18n": "^9.14.4",
"vue-recaptcha-v3": "^2.0.1",
"vue-router": "^4.5.0",
diff --git a/packages/frontend/src/components/StatusCharts.vue b/packages/frontend/src/components/StatusCharts.vue
new file mode 100644
index 0000000..b22d808
--- /dev/null
+++ b/packages/frontend/src/components/StatusCharts.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/frontend/src/components/StatusMonitor.vue b/packages/frontend/src/components/StatusMonitor.vue
index d32491e..1f07713 100644
--- a/packages/frontend/src/components/StatusMonitor.vue
+++ b/packages/frontend/src/components/StatusMonitor.vue
@@ -104,12 +104,16 @@
+
+
+