diff --git a/packages/admin-ui/src/pages/Dashboard/SystemPerformance/Graphs/RefLineChart.jsx b/packages/admin-ui/src/pages/Dashboard/SystemPerformance/Graphs/RefLineChart.jsx
index 1d5808e7..b3790db1 100644
--- a/packages/admin-ui/src/pages/Dashboard/SystemPerformance/Graphs/RefLineChart.jsx
+++ b/packages/admin-ui/src/pages/Dashboard/SystemPerformance/Graphs/RefLineChart.jsx
@@ -2,7 +2,7 @@ import * as d3 from 'd3'
import * as R from 'ramda'
import React, { useEffect, useRef, useCallback } from 'react'
-const transactionProfit = R.prop('profit')
+const transactionProfit = tx => tx.profit.toNumber()
const mockPoint = (tx, offsetMs, profit) => {
const date = new Date(new Date(tx.created).getTime() + offsetMs).toISOString()
diff --git a/packages/admin-ui/src/pages/Dashboard/SystemPerformance/SystemPerformance.jsx b/packages/admin-ui/src/pages/Dashboard/SystemPerformance/SystemPerformance.jsx
index c8017452..334b7817 100644
--- a/packages/admin-ui/src/pages/Dashboard/SystemPerformance/SystemPerformance.jsx
+++ b/packages/admin-ui/src/pages/Dashboard/SystemPerformance/SystemPerformance.jsx
@@ -22,7 +22,10 @@ import Nav from './Nav'
BigNumber.config({ ROUNDING_MODE: BigNumber.ROUND_HALF_UP })
-const getFiats = R.map(R.prop('fiat'))
+const sumBNBy = by =>
+ R.reduce((acc, value) => acc.plus(by(value)), new BigNumber(0))
+
+const getProfit = sumBNBy(tx => tx.profit)
const GET_DATA = gql`
query getData($excludeTestingCustomers: Boolean, $from: DateTimeISO) {
@@ -62,6 +65,7 @@ const SystemPerformance = () => {
})
const fiatLocale = fromNamespace('locale')(data?.config).fiatCurrency
const timezone = fromNamespace('locale')(data?.config).timezone
+ const allTransactions = data?.transactions ?? []
const NOW = Date.now()
@@ -82,57 +86,45 @@ const SystemPerformance = () => {
if (getLastTimePeriod) {
const duration = rangeEnd - rangeStart
return (
- t.error === null &&
createdTimestamp >= rangeStart - duration &&
createdTimestamp < rangeStart
)
}
- return (
- t.error === null &&
- createdTimestamp >= rangeStart &&
- createdTimestamp <= rangeEnd
- )
+ return createdTimestamp >= rangeStart && createdTimestamp <= rangeEnd
}
const convertFiatToLocale = item => {
if (item.fiatCode === fiatLocale)
return {
...item,
- fiat: parseFloat(item.fiat),
- profit: parseFloat(item.profit),
+ fiat: new BigNumber(item.fiat),
+ profit: new BigNumber(item.profit),
}
const itemRate = R.find(R.propEq(item.fiatCode, 'code'))(data.fiatRates)
const localeRate = R.find(R.propEq(fiatLocale, 'code'))(data.fiatRates)
const multiplier = localeRate.rate / itemRate.rate
return {
...item,
- fiat: parseFloat(item.fiat) * multiplier,
- profit: parseFloat(item.profit) * multiplier,
+ fiat: new BigNumber(item.fiat).times(multiplier),
+ profit: new BigNumber(item.profit).times(multiplier),
}
}
- const transactionsToShow = R.map(convertFiatToLocale)(
- R.filter(isInRangeAndNoError(false), data?.transactions ?? []),
- )
- const transactionsLastTimePeriod = R.map(convertFiatToLocale)(
- R.filter(isInRangeAndNoError(true), data?.transactions ?? []),
- )
+ const prepareTransactions = getLastTimePeriod =>
+ allTransactions
+ .filter(isInRangeAndNoError(getLastTimePeriod))
+ .map(convertFiatToLocale)
+
+ const transactionsToShow = prepareTransactions(false)
+ const transactionsLastTimePeriod = prepareTransactions(true)
const getNumTransactions = () => {
return R.length(transactionsToShow)
}
const getFiatVolume = () =>
- new BigNumber(R.sum(getFiats(transactionsToShow))).toFormat(2)
-
- const getProfit = transactions => {
- return R.reduce(
- (acc, value) => acc.plus(value.profit),
- new BigNumber(0),
- transactions,
- )
- }
+ sumBNBy(tx => tx.fiat)(transactionsToShow).toFormat(2)
const getPercentChange = () => {
const thisTimePeriodProfit = getProfit(transactionsToShow)
@@ -182,16 +174,16 @@ const SystemPerformance = () => {
return (
<>
- {!loading && R.isEmpty(data.transactions) && (
+ {!loading && R.isEmpty(allTransactions) && (