mirror of
https://github.com/luxfi/explore.git
synced 2026-09-24 00:28:18 +00:00
49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { upperFirst } from 'es-toolkit';
|
|
import React from 'react';
|
|
|
|
import config from 'configs/app';
|
|
import { SECOND } from 'toolkit/utils/consts';
|
|
import StatsWidget from 'ui/shared/stats/StatsWidget';
|
|
|
|
const flashblocksFeature = config.features.flashblocks;
|
|
|
|
interface Props {
|
|
itemsNum: number;
|
|
txsNum: number;
|
|
initialTs: number | undefined;
|
|
}
|
|
|
|
const FlashblocksStats = ({ itemsNum, txsNum, initialTs }: Props) => {
|
|
|
|
const timeElapsed = initialTs ? Date.now() - initialTs : undefined;
|
|
|
|
if (!flashblocksFeature.isEnabled) {
|
|
return null;
|
|
}
|
|
|
|
return (
|
|
<div
|
|
className="grid grid-cols-1 lg:grid-cols-3 gap-1 lg:gap-3 mb-6"
|
|
>
|
|
<StatsWidget
|
|
label={ `${ upperFirst(flashblocksFeature.name) }s (sec)` }
|
|
value={ timeElapsed ? Number(itemsNum / (timeElapsed / SECOND)).toLocaleString(undefined, { maximumFractionDigits: 0 }) : '-' }
|
|
/>
|
|
<StatsWidget
|
|
label="TPS"
|
|
value={ timeElapsed && txsNum > 0 ? Number(txsNum / (timeElapsed / SECOND)).toLocaleString(undefined, { maximumFractionDigits: 0 }) : '-' }
|
|
/>
|
|
<StatsWidget
|
|
label={ `${ upperFirst(flashblocksFeature.name) } time` }
|
|
value={
|
|
timeElapsed && itemsNum > 0 ?
|
|
Number(timeElapsed / itemsNum).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 }) + ' ms' :
|
|
'-'
|
|
}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default React.memo(FlashblocksStats);
|