mirror of
https://github.com/henrygd/beszel.git
synced 2026-09-23 09:57:48 +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.
|
||||
func (sm *SystemManager) onRecordUpdate(e *core.RecordEvent) error {
|
||||
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()
|
||||
}
|
||||
|
||||
@@ -18,6 +18,38 @@ import (
|
||||
"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) {
|
||||
hub, err := tests.NewTestHub(t.TempDir())
|
||||
if err != nil {
|
||||
|
||||
@@ -34,6 +34,7 @@ import { TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/compon
|
||||
import { useToast } from "@/components/ui/use-toast"
|
||||
import { isReadOnlyUser } from "@/lib/api"
|
||||
import { pb } from "@/lib/api"
|
||||
import { SystemStatus } from "@/lib/enums"
|
||||
import { $allSystemsById, $direction, $userSettings } from "@/lib/stores"
|
||||
import {
|
||||
cn,
|
||||
@@ -450,10 +451,13 @@ const NetworkMonitorTableRow = memo(function NetworkMonitorTableRow({
|
||||
rowSelection: RowSelectionState
|
||||
openSheet: (monitor: NetworkMonitorRecord) => void
|
||||
}) {
|
||||
const system = useStore($allSystemsById)[row.original.system]
|
||||
return (
|
||||
<TableRow
|
||||
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)}
|
||||
>
|
||||
{row.getVisibleCells().map((cell) => (
|
||||
|
||||
Reference in New Issue
Block a user