mirror of
https://github.com/henrygd/beszel.git
synced 2026-09-25 19:07:47 +02:00
fix(ui): preserve paused systems in network monitors table (#2391)
This commit is contained in:
@@ -190,7 +190,9 @@ func (sm *SystemManager) onRecordAfterCreateSuccess(e *core.RecordEvent) error {
|
|||||||
// It clears system info when the status is changed to paused.
|
// It clears system info when the status is changed to paused.
|
||||||
func (sm *SystemManager) onRecordUpdate(e *core.RecordEvent) error {
|
func (sm *SystemManager) onRecordUpdate(e *core.RecordEvent) error {
|
||||||
if e.Record.GetString("status") == paused {
|
if e.Record.GetString("status") == paused {
|
||||||
e.Record.Set("info", system.Info{})
|
var prevInfo system.Info
|
||||||
|
e.Record.UnmarshalJSONField("info", &prevInfo)
|
||||||
|
e.Record.Set("info", system.Info{AgentVersion: prevInfo.AgentVersion})
|
||||||
}
|
}
|
||||||
return e.Next()
|
return e.Next()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,38 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func TestPauseSystemPreservesAgentVersion(t *testing.T) {
|
||||||
|
hub, user := tests.GetHubWithUser(t)
|
||||||
|
defer hub.Cleanup()
|
||||||
|
|
||||||
|
record, err := tests.CreateRecord(hub, "systems", map[string]any{
|
||||||
|
"name": "pause-info-test",
|
||||||
|
"host": "localhost",
|
||||||
|
"port": "33914",
|
||||||
|
"users": []string{user.Id},
|
||||||
|
})
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
record.Set("info", system.Info{
|
||||||
|
AgentVersion: "0.20.0",
|
||||||
|
Cpu: 42.5,
|
||||||
|
MemPct: 60,
|
||||||
|
Uptime: 3600,
|
||||||
|
Services: []uint16{3, 1},
|
||||||
|
})
|
||||||
|
require.NoError(t, hub.Save(record))
|
||||||
|
|
||||||
|
record.Set("status", "paused")
|
||||||
|
require.NoError(t, hub.Save(record))
|
||||||
|
|
||||||
|
pausedRecord, err := hub.FindRecordById("systems", record.Id)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, "paused", pausedRecord.GetString("status"))
|
||||||
|
var info system.Info
|
||||||
|
require.NoError(t, pausedRecord.UnmarshalJSONField("info", &info))
|
||||||
|
assert.Equal(t, system.Info{AgentVersion: "0.20.0"}, info)
|
||||||
|
}
|
||||||
|
|
||||||
func TestSystemManagerNew(t *testing.T) {
|
func TestSystemManagerNew(t *testing.T) {
|
||||||
hub, err := tests.NewTestHub(t.TempDir())
|
hub, err := tests.NewTestHub(t.TempDir())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/compon
|
|||||||
import { useToast } from "@/components/ui/use-toast"
|
import { useToast } from "@/components/ui/use-toast"
|
||||||
import { isReadOnlyUser } from "@/lib/api"
|
import { isReadOnlyUser } from "@/lib/api"
|
||||||
import { pb } from "@/lib/api"
|
import { pb } from "@/lib/api"
|
||||||
|
import { SystemStatus } from "@/lib/enums"
|
||||||
import { $allSystemsById, $direction, $userSettings } from "@/lib/stores"
|
import { $allSystemsById, $direction, $userSettings } from "@/lib/stores"
|
||||||
import {
|
import {
|
||||||
cn,
|
cn,
|
||||||
@@ -450,10 +451,13 @@ const NetworkMonitorTableRow = memo(function NetworkMonitorTableRow({
|
|||||||
rowSelection: RowSelectionState
|
rowSelection: RowSelectionState
|
||||||
openSheet: (monitor: NetworkMonitorRecord) => void
|
openSheet: (monitor: NetworkMonitorRecord) => void
|
||||||
}) {
|
}) {
|
||||||
|
const system = useStore($allSystemsById)[row.original.system]
|
||||||
return (
|
return (
|
||||||
<TableRow
|
<TableRow
|
||||||
data-state={isSelected && "selected"}
|
data-state={isSelected && "selected"}
|
||||||
className="cursor-pointer transition-opacity"
|
className={cn("cursor-pointer transition-opacity", {
|
||||||
|
"opacity-50": system?.status === SystemStatus.Paused,
|
||||||
|
})}
|
||||||
onClick={() => openSheet(row.original)}
|
onClick={() => openSheet(row.original)}
|
||||||
>
|
>
|
||||||
{row.getVisibleCells().map((cell) => (
|
{row.getVisibleCells().map((cell) => (
|
||||||
|
|||||||
Reference in New Issue
Block a user