diff --git a/markbase-tauri/src/src/router/index.js b/markbase-tauri/src/src/router/index.js
index efca75f..3d7f4d0 100644
--- a/markbase-tauri/src/src/router/index.js
+++ b/markbase-tauri/src/src/router/index.js
@@ -4,6 +4,7 @@ import WebAdmin from '../views/WebAdmin.vue'
import VirtualFolders from '../views/VirtualFolders.vue'
import Quota from '../views/Quota.vue'
import ACL from '../views/ACL.vue'
+import Monitor from '../views/Monitor.vue'
import FilePreview from '../views/FilePreview.vue'
import Home from '../views/Home.vue'
import Dashboard from '../views/Dashboard.vue'
@@ -12,7 +13,6 @@ import Config from '../views/Config.vue'
import Diagnostic from '../views/Diagnostic.vue'
import Management from '../views/Management.vue'
import Health from '../views/Health.vue'
-import Monitor from '../views/Monitor.vue'
import Backup from '../views/Backup.vue'
import Users from '../views/Users.vue'
import Shares from '../views/Shares.vue'
@@ -48,6 +48,11 @@ const routes = [
name: 'ACL',
component: ACL
},
+ {
+ path: '/monitor',
+ name: 'Monitor',
+ component: Monitor
+ },
{
path: '/filepreview',
name: 'FilePreview',
diff --git a/markbase-tauri/src/src/views/Monitor.vue b/markbase-tauri/src/src/views/Monitor.vue
index f4af21d..5499f91 100644
--- a/markbase-tauri/src/src/views/Monitor.vue
+++ b/markbase-tauri/src/src/views/Monitor.vue
@@ -1,203 +1,168 @@
-
+
+
+
+
+
+
+
+
+
+
+
CPU Usage
+
{{ stats.cpu.toFixed(1) }}%
+
+
+
+
+
+
+
+
+
+
+
+
Memory Usage
+
{{ stats.memory.toFixed(1) }}%
+
+
+
+
+
+
+
+
+
+
+
+
Disk Usage
+
{{ stats.disk.toFixed(1) }}%
+
+
+
+
+
+
+
-
-
-
-
-
-
-
CPU Usage
-
-
-
-
-
-
-
-
-
Memory Usage
-
-
-
-
-
-
-
-
-
Disk Usage
-
-
-
-
-
-
-
-
-
Network Traffic
-
-
In: {{ formatBytes(monitorData.system.network_in) }}
-
Out: {{ formatBytes(monitorData.system.network_out) }}
-
-
-
-
-
-
-
-
-
-
- File System
-
-
-
- {{ monitorData.file_system.total_files }}
-
-
- {{ formatBytes(monitorData.file_system.total_size) }}
-
-
- {{ formatBytes(monitorData.file_system.file_tree_size) }}
-
-
-
-
-
-
-
-
- Database
-
-
-
- {{ formatBytes(monitorData.database.database_size) }}
-
-
-
- {{ table }}: {{ rows }} rows
-
-
-
-
-
-
-
-
-
- Service Status
+
+
+
+
+
+ {{ row.name }}
-
-
-
-
-
- {{ scope.row.status }}
-
-
-
-
-
- {{ Math.floor(scope.row.uptime_seconds / 3600) }}h {{ Math.floor(scope.row.uptime_seconds % 3600 / 60) }}m
-
-
-
-
- {{ new Date(scope.row.last_check).toLocaleString() }}
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ {{ row.status }}
+
+
+
+
+
+
+
@@ -207,48 +172,83 @@ onUnmounted(() => {
padding: 20px;
}
+.monitor-header {
+ margin-bottom: 20px;
+ padding: 20px;
+ background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
+ color: white;
+ border-radius: 10px;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+.monitor-header h2 {
+ margin: 0;
+ font-size: 24px;
+}
+
+.header-subtitle {
+ margin: 5px 0 0;
+ font-size: 14px;
+ opacity: 0.9;
+}
+
+.header-actions {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+}
+
+.stat-card {
+ display: flex;
+ align-items: center;
+ padding: 10px;
+}
+
+.stat-icon {
+ width: 60px;
+ height: 60px;
+ border-radius: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ margin-right: 15px;
+}
+
+.stat-icon.cpu {
+ background: rgba(59, 130, 246, 0.1);
+ color: #3b82f6;
+}
+
+.stat-icon.memory {
+ background: rgba(16, 185, 129, 0.1);
+ color: #10b981;
+}
+
+.stat-icon.disk {
+ background: rgba(245, 158, 11, 0.1);
+ color: #f59e0b;
+}
+
+.stat-content {
+ flex: 1;
+}
+
+.stat-label {
+ font-size: 14px;
+ color: #909399;
+}
+
+.stat-value {
+ font-size: 24px;
+ font-weight: 600;
+ color: #303133;
+}
+
.card-header {
display: flex;
+ align-items: center;
justify-content: space-between;
- align-items: center;
-}
-
-.card-header h2 {
- margin: 0;
-}
-
-.refresh-controls {
- display: flex;
- align-items: center;
- gap: 10px;
-}
-
-.system-row {
- margin-bottom: 20px;
-}
-
-.metric-card {
- text-align: center;
- padding: 20px;
-}
-
-.metric-card h3 {
- margin-bottom: 10px;
-}
-
-.network-metrics {
- padding: 20px;
-}
-
-.network-metrics p {
- margin: 5px 0;
-}
-
-.details-row {
- margin-bottom: 20px;
-}
-
-.services-card {
- margin-top: 20px;
}
\ No newline at end of file
diff --git a/markbase-tauri/src/src/views/WebAdmin.vue b/markbase-tauri/src/src/views/WebAdmin.vue
index fec7287..bc61be9 100644
--- a/markbase-tauri/src/src/views/WebAdmin.vue
+++ b/markbase-tauri/src/src/views/WebAdmin.vue
@@ -8,6 +8,7 @@ import {
import DashboardView from './Dashboard.vue'
import UsersView from './Users.vue'
import SharesView from './Shares.vue'
+import MonitorView from './Monitor.vue'
const activeTab = ref('dashboard')
@@ -23,7 +24,7 @@ const currentTab = computed(() => {
case 'dashboard': return DashboardView
case 'users': return UsersView
case 'shares': return SharesView
- case 'monitor': return null
+ case 'monitor': return MonitorView
default: return DashboardView
}
})
@@ -53,11 +54,7 @@ const currentTab = computed(() => {
@@ -113,18 +110,4 @@ const currentTab = computed(() => {
.fade-leave-to {
opacity: 0;
}
-
-.monitor-placeholder {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- height: 100%;
- color: #909399;
-}
-
-.monitor-placeholder p {
- margin-top: 20px;
- font-size: 16px;
-}
\ No newline at end of file