From 99fed6d4e28d2e6749d07f303055589525c1a09e Mon Sep 17 00:00:00 2001 From: Izumi Hoshino Date: Fri, 15 Sep 2023 02:48:42 +0900 Subject: [PATCH] Fixed an issue where expected average passed filter count was wrong (#2087) --- .../src/components/harvest/HarvesterOverview.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/gui/src/components/harvest/HarvesterOverview.tsx b/packages/gui/src/components/harvest/HarvesterOverview.tsx index 33eea9fb4c..4b9a25a657 100644 --- a/packages/gui/src/components/harvest/HarvesterOverview.tsx +++ b/packages/gui/src/components/harvest/HarvesterOverview.tsx @@ -1,3 +1,4 @@ +import { NewFarmingInfo } from '@chia-network/api'; import { useGetBlockchainStateQuery, useGetHarvestersQuery, useGetNewFarmingInfoQuery } from '@chia-network/api-react'; import { Flex, FormatBytes, FormatLargeNumber, CardSimple, useCurrencyCode } from '@chia-network/core'; import { Trans } from '@lingui/macro'; @@ -65,24 +66,29 @@ export default function HarvesterOverview() { } const eligiblePlotsPerSp: Record = {}; - let latestTotalPlots = 0; + const latestTotalPlotsForNode: Record = {}; for (let i = 0; i < newFarmingInfo.length; i++) { - const nfi = newFarmingInfo[i]; + const nfi: NewFarmingInfo = newFarmingInfo[i]; eligiblePlotsPerSp[nfi.signagePoint] = eligiblePlotsPerSp[nfi.signagePoint] || { totalPlots: 0, passedFilter: 0, }; eligiblePlotsPerSp[nfi.signagePoint].totalPlots += nfi.totalPlots; eligiblePlotsPerSp[nfi.signagePoint].passedFilter += nfi.passedFilter; - if (i === 0) { - latestTotalPlots = nfi.totalPlots; + + // `newFarmingInfo` is already sorted by time(descend). So the latest farming info data comes first. + if (!latestTotalPlotsForNode[nfi.nodeId]) { + latestTotalPlotsForNode[nfi.nodeId] = nfi.totalPlots; } + if (Object.keys(eligiblePlotsPerSp).length > 64) { // Only cares last 64 sps break; } } + const latestTotalPlots = Object.values(latestTotalPlotsForNode).reduce((acc, val) => acc + val, 0); + let sumPassedFilter = 0; const sps = Object.keys(eligiblePlotsPerSp); for (let i = 0; i < sps.length; i++) {