diff --git a/app/Filament/Admin/Resources/NodeResource/Widgets/NodeCpuChart.php b/app/Filament/Admin/Resources/NodeResource/Widgets/NodeCpuChart.php index 0fd49d76b..2a8255e1d 100644 --- a/app/Filament/Admin/Resources/NodeResource/Widgets/NodeCpuChart.php +++ b/app/Filament/Admin/Resources/NodeResource/Widgets/NodeCpuChart.php @@ -20,19 +20,24 @@ class NodeCpuChart extends ChartWidget */ protected array $cpuHistory = []; + protected int $threads = 0; + protected function getData(): array { - $data = $this->node->statistics(); - $threads = $this->node->systemInformation()['cpu_count'] ?? 0; + $sessionKey = "node_stats.{$this->node->id}"; - $this->cpuHistory = session()->get('cpuHistory', []); + $data = $this->node->statistics(); + + $this->threads = session("{$sessionKey}.threads", $this->node->systemInformation()['cpu_count'] ?? 0); + + $this->cpuHistory = session("{$sessionKey}.cpu_history", []); $this->cpuHistory[] = [ - 'cpu' => round($data['cpu_percent'] * $threads, 2), + 'cpu' => round($data['cpu_percent'] * $this->threads, 2), 'timestamp' => now(auth()->user()->timezone ?? 'UTC')->format('H:i:s'), ]; $this->cpuHistory = array_slice($this->cpuHistory, -60); - session()->put('cpuHistory', $this->cpuHistory); + session()->put("{$sessionKey}.cpu_history", $this->cpuHistory); return [ 'datasets' => [ @@ -75,11 +80,10 @@ class NodeCpuChart extends ChartWidget public function getHeading(): string { - $threads = $this->node->systemInformation()['cpu_count'] ?? 0; $data = array_slice(end($this->cpuHistory), -60); $cpu = Number::format($data['cpu'], maxPrecision: 2, locale: auth()->user()->language); - $max = Number::format($threads * 100, locale: auth()->user()->language); + $max = Number::format($this->threads * 100, locale: auth()->user()->language); return trans('admin/node.cpu_chart', ['cpu' => $cpu, 'max' => $max]); } diff --git a/app/Filament/Admin/Resources/NodeResource/Widgets/NodeMemoryChart.php b/app/Filament/Admin/Resources/NodeResource/Widgets/NodeMemoryChart.php index 7ef04331e..2c2ec66ae 100644 --- a/app/Filament/Admin/Resources/NodeResource/Widgets/NodeMemoryChart.php +++ b/app/Filament/Admin/Resources/NodeResource/Widgets/NodeMemoryChart.php @@ -20,21 +20,26 @@ class NodeMemoryChart extends ChartWidget */ protected array $memoryHistory = []; + protected int $totalMemory = 0; + protected function getData(): array { - $data = $this->node->statistics(); - $value = $data['memory_used']; + $sessionKey = "node_stats.{$this->node->id}"; - $this->memoryHistory = session()->get('memoryHistory', []); + $data = $this->node->statistics(); + + $this->totalMemory = session("{$sessionKey}.total_memory", $data['memory_total']); + + $this->memoryHistory = session("{$sessionKey}.memory_history", []); $this->memoryHistory[] = [ 'memory' => round(config('panel.use_binary_prefix') - ? $value / 1024 / 1024 / 1024 - : $value / 1000 / 1000 / 1000, 2), + ? $data['memory_used'] / 1024 / 1024 / 1024 + : $data['memory_used'] / 1000 / 1000 / 1000, 2), 'timestamp' => now(auth()->user()->timezone ?? 'UTC')->format('H:i:s'), ]; $this->memoryHistory = array_slice($this->memoryHistory, -60); - session()->put('memoryHistory', $this->memoryHistory); + session()->put("{$sessionKey}.memory_history", $this->memoryHistory); return [ 'datasets' => [ @@ -78,15 +83,14 @@ class NodeMemoryChart extends ChartWidget public function getHeading(): string { $latestMemoryUsed = array_slice(end($this->memoryHistory), -60); - $totalMemory = $this->node->statistics()['memory_total']; $used = config('panel.use_binary_prefix') ? Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) .' GiB' : Number::format($latestMemoryUsed['memory'], maxPrecision: 2, locale: auth()->user()->language) . ' GB'; $total = config('panel.use_binary_prefix') - ? Number::format($totalMemory / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' - : Number::format($totalMemory / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; + ? Number::format($this->totalMemory / 1024 / 1024 / 1024, maxPrecision: 2, locale: auth()->user()->language) .' GiB' + : Number::format($this->totalMemory / 1000 / 1000 / 1000, maxPrecision: 2, locale: auth()->user()->language) . ' GB'; return trans('admin/node.memory_chart', ['used' => $used, 'total' => $total]); }