Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | 1x 75x 75x 75x 57x 57x 57x 1x 75x 75x 1x 15x 15x 15x 15x 15x | import { useGetDisputesStats } from "@components/Disputes/DisputesList/hooks/useGetDisputesStats";
import { parseAmount } from "@utils/index";
const getFractionDigits = (ratio: number = 0) => {
const percentage = ratio * 100;
const absVal = Math.abs(percentage);
if (absVal >= 0.1) return 1;
const str = absVal.toFixed(10);
const decimals = str.split(".")[1];
// if it only contain 0 return 1
Eif (/^0+$/.test(decimals)) return 1;
// Count how many leading zeros before first significant digit
let count = Math.floor(-Math.log10(absVal));
// Fix for values like 0.01, 0.001, 0.0001
if (absVal === Math.pow(10, -count)) {
count -= 1;
}
return count + 1;
};
const formatRatio = (value?: number) => {
const ratio = value || 0;
return `(${parseAmount(ratio * 100, getFractionDigits(ratio))}%)`;
};
export const useDisputesStats = () => {
const { data, isLoading } = useGetDisputesStats();
const {
disputeVolumeRatio,
disputeCount,
disputeCountRatio,
winCount,
preChargebackRefundCount,
preChargebackRefundCountRatio,
winCountRatio,
lostCount,
lostCountRatio,
disputeAmount,
} = data || {};
const stats = [
{
title: "Disputes Count",
value: disputeCount || 0,
ratio: formatRatio(disputeCountRatio),
},
{
title: "Refunded Count",
value: preChargebackRefundCount || 0,
ratio: formatRatio(preChargebackRefundCountRatio),
},
{
title: "Won Count",
value: winCount || 0,
ratio: formatRatio(winCountRatio),
},
{
title: "Lost Count",
value: lostCount || 0,
ratio: formatRatio(lostCountRatio),
},
];
const mainStats = [
{
isAmount: true,
title: "Disputes Amount",
value: parseAmount(disputeAmount ? disputeAmount / 100 : 0) ?? 0,
ratio: formatRatio(disputeVolumeRatio),
},
];
return {
isLoading,
data: {
mainStats,
stats,
},
tabStats: data,
};
};
|