diff --git a/src/components/sections/Flag.tsx b/src/components/sections/Flag.tsx index 50265d9..5f0ca9e 100644 --- a/src/components/sections/Flag.tsx +++ b/src/components/sections/Flag.tsx @@ -84,10 +84,9 @@ const Flag = React.memo(({ flag, size }: FlagProps) => { return ( -
+
@@ -77,7 +77,7 @@ export const StatsBar = ({ return ( displayOptions.online && (
-
+
@@ -94,7 +94,7 @@ export const StatsBar = ({ return ( displayOptions.regions && (
-
+
@@ -109,7 +109,7 @@ export const StatsBar = ({ return ( displayOptions.traffic && (
-
+
@@ -131,7 +131,7 @@ export const StatsBar = ({ return ( displayOptions.speed && (
-
+
diff --git a/src/components/ui/input.tsx b/src/components/ui/input.tsx index a26324a..f91e237 100644 --- a/src/components/ui/input.tsx +++ b/src/components/ui/input.tsx @@ -10,7 +10,7 @@ const Input = React.forwardRef( = ({ viewMode, searchTerm }) => { const { nodes: staticNodes, loading, getGroups } = useNodeData(); const { liveData } = useLiveData(); - const [selectedGroup, setSelectedGroup] = useState("所有"); + const [selectedGroup, setSelectedGroup] = useState( + homeStateCache.selectedGroup + ); const { enableGroupedBar, enableStatsBar, enableSwap } = useAppConfig(); const [displayOptions, setDisplayOptions] = useState({ time: true, @@ -79,8 +86,37 @@ const HomePage: React.FC = ({ viewMode, searchTerm }) => { }; }, [filteredNodes]); + const mainContentRef = useRef(null); + + useEffect(() => { + const handleScroll = () => { + if (mainContentRef.current) { + homeStateCache.scrollPosition = mainContentRef.current.scrollTop; + } + }; + + const mainContentElement = mainContentRef.current; + mainContentElement?.addEventListener("scroll", handleScroll); + + return () => { + mainContentElement?.removeEventListener("scroll", handleScroll); + }; + }, []); + + useEffect(() => { + if (mainContentRef.current) { + mainContentRef.current.scrollTop = homeStateCache.scrollPosition; + } + }, [loading]); + + useEffect(() => { + homeStateCache.selectedGroup = selectedGroup; + }, [selectedGroup]); + return ( -
+
{enableStatsBar && ( = ({ viewMode, searchTerm }) => { ) : (

没有结果

-

- 请尝试更改筛选条件 -

+

请尝试更改筛选条件

)}
diff --git a/src/pages/instance/Instance.tsx b/src/pages/instance/Instance.tsx index a735e20..98ada1d 100644 --- a/src/pages/instance/Instance.tsx +++ b/src/pages/instance/Instance.tsx @@ -50,28 +50,28 @@ const Instance = memo(({ node }: InstanceProps) => {
-

CPU

-

{`${node.cpu_name} (x${node.cpu_cores})`}

+

CPU

+

{`${node.cpu_name} (x${node.cpu_cores})`}

-

架构

-

{node.arch}

+

架构

+

{node.arch}

-

虚拟化

-

{node.virtualization}

+

虚拟化

+

{node.virtualization}

-

GPU

-

{node.gpu_name || "N/A"}

+

GPU

+

{node.gpu_name || "N/A"}

-

操作系统

-

{node.os}

+

操作系统

+

{node.os}

-

内存

-

+

内存

+

{stats && isOnline ? `${formatBytes(stats.ram.used)} / ${formatBytes( node.mem_total @@ -80,8 +80,8 @@ const Instance = memo(({ node }: InstanceProps) => {

-

交换

-

+

交换

+

{stats && isOnline ? `${formatBytes(stats.swap.used)} / ${formatBytes( node.swap_total @@ -90,8 +90,8 @@ const Instance = memo(({ node }: InstanceProps) => {

-

磁盘

-

+

磁盘

+

{stats && isOnline ? `${formatBytes(stats.disk.used)} / ${formatBytes( node.disk_total @@ -100,12 +100,12 @@ const Instance = memo(({ node }: InstanceProps) => {

-

运行时间

-

{formatUptime(stats?.uptime || 0)}

+

运行时间

+

{formatUptime(stats?.uptime || 0)}

-

实时网络

-

+

实时网络

+

{stats && isOnline ? `↑ ${formatBytes(stats.network.up, true)} ↓ ${formatBytes( stats.network.down, @@ -115,7 +115,7 @@ const Instance = memo(({ node }: InstanceProps) => {

-

总流量

+

总流量

{node.traffic_limit !== 0 && isOnline && stats && ( { /> )}
-

+

{stats && isOnline ? `↑ ${formatBytes(stats.network.totalUp)} ↓ ${formatBytes( stats.network.totalDown )}` : "N/A"}

-

+

{formatTrafficLimit( node.traffic_limit, node.traffic_limit_type @@ -144,8 +144,8 @@ const Instance = memo(({ node }: InstanceProps) => {

-

负载

-

+

负载

+

{stats && isOnline ? `${stats.load.load1.toFixed(2)} | ${stats.load.load5.toFixed( 2 @@ -154,8 +154,8 @@ const Instance = memo(({ node }: InstanceProps) => {

-

最后上报

-

+

最后上报

+

{stats && isOnline ? new Date(stats.updated_at).toLocaleString() : "N/A"} diff --git a/src/pages/instance/LoadCharts.tsx b/src/pages/instance/LoadCharts.tsx index 59d62d0..a7764b5 100644 --- a/src/pages/instance/LoadCharts.tsx +++ b/src/pages/instance/LoadCharts.tsx @@ -91,7 +91,7 @@ const LoadCharts = memo(({ node, hours, liveData }: LoadChartsProps) => { title: "内存", type: "area", value: ( - +