Commit 52062102 authored by isstuev's avatar isstuev Committed by isstuev

batch entity

parent bd9de9e9
...@@ -120,6 +120,14 @@ const BlockDetails = ({ query }: Props) => { ...@@ -120,6 +120,14 @@ const BlockDetails = ({ query }: Props) => {
); );
})(); })();
const verificationTitle = (() => {
if (config.features.zkEvmRollup.isEnabled) {
return 'Sequenced by';
}
return config.chain.verificationType === 'validation' ? 'Validated by' : 'Mined by';
})();
return ( return (
<Grid <Grid
columnGap={ 8 } columnGap={ 8 }
...@@ -193,7 +201,7 @@ const BlockDetails = ({ query }: Props) => { ...@@ -193,7 +201,7 @@ const BlockDetails = ({ query }: Props) => {
</DetailsInfoItem> </DetailsInfoItem>
) } ) }
<DetailsInfoItem <DetailsInfoItem
title={ config.chain.verificationType === 'validation' ? 'Validated by' : 'Mined by' } title={ verificationTitle }
hint="A block producer who successfully included the block onto the blockchain" hint="A block producer who successfully included the block onto the blockchain"
columnGap={ 1 } columnGap={ 1 }
isLoading={ isPlaceholderData } isLoading={ isPlaceholderData }
...@@ -205,7 +213,8 @@ const BlockDetails = ({ query }: Props) => { ...@@ -205,7 +213,8 @@ const BlockDetails = ({ query }: Props) => {
{ /* api doesn't return the block processing time yet */ } { /* api doesn't return the block processing time yet */ }
{ /* <Text>{ dayjs.duration(block.minedIn, 'second').humanize(true) }</Text> */ } { /* <Text>{ dayjs.duration(block.minedIn, 'second').humanize(true) }</Text> */ }
</DetailsInfoItem> </DetailsInfoItem>
{ !config.features.rollup.isEnabled && !totalReward.isEqualTo(ZERO) && !config.UI.views.block.hiddenFields?.total_reward && ( { !config.features.rollup.isEnabled && !config.features.zkEvmRollup.isEnabled &&
!totalReward.isEqualTo(ZERO) && !config.UI.views.block.hiddenFields?.total_reward && (
<DetailsInfoItem <DetailsInfoItem
title="Block reward" title="Block reward"
hint={ hint={
......
...@@ -8,10 +8,8 @@ import React from 'react'; ...@@ -8,10 +8,8 @@ import React from 'react';
import type { ZkEvmL2TxnBatchesItem } from 'types/api/zkEvml2TxnBatches'; import type { ZkEvmL2TxnBatchesItem } from 'types/api/zkEvml2TxnBatches';
import { route } from 'nextjs-routes';
import BlockTimestamp from 'ui/blocks/BlockTimestamp'; import BlockTimestamp from 'ui/blocks/BlockTimestamp';
import BlockEntityL2 from 'ui/shared/entities/block/BlockEntityL2'; import ZkEvmBatchEntityL2 from 'ui/shared/entities/block/ZkEvmBatchEntityL2';
import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus'; import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus';
type Props = { type Props = {
...@@ -34,7 +32,7 @@ const LatestZkevmL2BatchItem = ({ batch, isLoading }: Props) => { ...@@ -34,7 +32,7 @@ const LatestZkevmL2BatchItem = ({ batch, isLoading }: Props) => {
p={ 6 } p={ 6 }
> >
<Flex alignItems="center" overflow="hidden" w="100%" mb={ 3 }> <Flex alignItems="center" overflow="hidden" w="100%" mb={ 3 }>
<BlockEntityL2 <ZkEvmBatchEntityL2
isLoading={ isLoading } isLoading={ isLoading }
number={ batch.number } number={ batch.number }
tailLength={ 2 } tailLength={ 2 }
...@@ -42,7 +40,6 @@ const LatestZkevmL2BatchItem = ({ batch, isLoading }: Props) => { ...@@ -42,7 +40,6 @@ const LatestZkevmL2BatchItem = ({ batch, isLoading }: Props) => {
lineHeight={ 7 } lineHeight={ 7 }
fontWeight={ 500 } fontWeight={ 500 }
mr="auto" mr="auto"
href={ route({ pathname: '/zkevm-l2-txn-batch/[number]', query: { number: batch.number.toString() } }) }
/> />
<BlockTimestamp <BlockTimestamp
ts={ batch.timestamp } ts={ batch.timestamp }
......
import { chakra } from '@chakra-ui/react';
import _omit from 'lodash/omit';
import React from 'react';
import { route } from 'nextjs-routes';
import config from 'configs/app';
import txBatchIcon from 'icons/txn_batches_slim.svg';
import * as BlockEntity from './BlockEntity';
const feature = config.features.zkEvmRollup;
const BlockEntityL2 = (props: BlockEntity.EntityProps) => {
const linkProps = _omit(props, [ 'className' ]);
const partsProps = _omit(props, [ 'className', 'onClick' ]);
if (!feature.isEnabled) {
return null;
}
return (
<BlockEntity.Container className={ props.className }>
<BlockEntity.Icon { ...partsProps } asProp={ txBatchIcon }/>
<BlockEntity.Link
{ ...linkProps }
href={ feature.L1BaseUrl + route({ pathname: '/zkevm-l2-txn-batch/[number]', query: { number: props.number.toString() } }) }
>
<BlockEntity.Content { ...partsProps }/>
</BlockEntity.Link>
</BlockEntity.Container>
);
};
export default chakra(BlockEntityL2);
...@@ -19,8 +19,6 @@ import { scroller, Element } from 'react-scroll'; ...@@ -19,8 +19,6 @@ import { scroller, Element } from 'react-scroll';
import { ZKEVM_L2_TX_STATUSES } from 'types/api/transaction'; import { ZKEVM_L2_TX_STATUSES } from 'types/api/transaction';
import { route } from 'nextjs-routes';
import config from 'configs/app'; import config from 'configs/app';
import clockIcon from 'icons/clock.svg'; import clockIcon from 'icons/clock.svg';
import flameIcon from 'icons/flame.svg'; import flameIcon from 'icons/flame.svg';
...@@ -40,7 +38,7 @@ import DetailsInfoItemDivider from 'ui/shared/DetailsInfoItemDivider'; ...@@ -40,7 +38,7 @@ import DetailsInfoItemDivider from 'ui/shared/DetailsInfoItemDivider';
import DetailsSponsoredItem from 'ui/shared/DetailsSponsoredItem'; import DetailsSponsoredItem from 'ui/shared/DetailsSponsoredItem';
import AddressEntity from 'ui/shared/entities/address/AddressEntity'; import AddressEntity from 'ui/shared/entities/address/AddressEntity';
import BlockEntity from 'ui/shared/entities/block/BlockEntity'; import BlockEntity from 'ui/shared/entities/block/BlockEntity';
import BlockEntityL2 from 'ui/shared/entities/block/BlockEntityL2'; import ZkEvmBatchEntityL2 from 'ui/shared/entities/block/ZkEvmBatchEntityL2';
import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic'; import HashStringShortenDynamic from 'ui/shared/HashStringShortenDynamic';
import LogDecodedInputData from 'ui/shared/logs/LogDecodedInputData'; import LogDecodedInputData from 'ui/shared/logs/LogDecodedInputData';
import RawInputData from 'ui/shared/RawInputData'; import RawInputData from 'ui/shared/RawInputData';
...@@ -199,10 +197,9 @@ const TxDetails = () => { ...@@ -199,10 +197,9 @@ const TxDetails = () => {
title="Tx batch" title="Tx batch"
isLoading={ isPlaceholderData } isLoading={ isPlaceholderData }
> >
<BlockEntityL2 <ZkEvmBatchEntityL2
isLoading={ isPlaceholderData } isLoading={ isPlaceholderData }
number={ data.zkevm_batch_number } number={ data.zkevm_batch_number }
href={ route({ pathname: '/zkevm-l2-txn-batch/[number]', query: { number: data.zkevm_batch_number.toString() } }) }
/> />
</DetailsInfoItem> </DetailsInfoItem>
) } ) }
......
...@@ -121,7 +121,6 @@ const ZkEvmL2TxnBatchDetails = ({ query }: Props) => { ...@@ -121,7 +121,6 @@ const ZkEvmL2TxnBatchDetails = ({ query }: Props) => {
</DetailsInfoItem> </DetailsInfoItem>
<DetailsInfoItem <DetailsInfoItem
title="Transactions" title="Transactions"
hint="The number of transactions in the batch"
isLoading={ isPlaceholderData } isLoading={ isPlaceholderData }
> >
<Skeleton isLoaded={ !isPlaceholderData }> <Skeleton isLoaded={ !isPlaceholderData }>
......
...@@ -7,7 +7,7 @@ import { route } from 'nextjs-routes'; ...@@ -7,7 +7,7 @@ import { route } from 'nextjs-routes';
import config from 'configs/app'; import config from 'configs/app';
import dayjs from 'lib/date/dayjs'; import dayjs from 'lib/date/dayjs';
import BlockEntityL2 from 'ui/shared/entities/block/BlockEntityL2'; import ZkEvmBatchEntityL2 from 'ui/shared/entities/block/ZkEvmBatchEntityL2';
import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1';
import LinkInternal from 'ui/shared/LinkInternal'; import LinkInternal from 'ui/shared/LinkInternal';
import ListItemMobileGrid from 'ui/shared/ListItemMobile/ListItemMobileGrid'; import ListItemMobileGrid from 'ui/shared/ListItemMobile/ListItemMobileGrid';
...@@ -29,13 +29,12 @@ const ZkEvmTxnBatchesListItem = ({ item, isLoading }: Props) => { ...@@ -29,13 +29,12 @@ const ZkEvmTxnBatchesListItem = ({ item, isLoading }: Props) => {
<ListItemMobileGrid.Label isLoading={ isLoading }>Batch #</ListItemMobileGrid.Label> <ListItemMobileGrid.Label isLoading={ isLoading }>Batch #</ListItemMobileGrid.Label>
<ListItemMobileGrid.Value> <ListItemMobileGrid.Value>
<BlockEntityL2 <ZkEvmBatchEntityL2
isLoading={ isLoading } isLoading={ isLoading }
number={ item.number } number={ item.number }
fontSize="sm" fontSize="sm"
lineHeight={ 5 } lineHeight={ 5 }
fontWeight={ 600 } fontWeight={ 600 }
href={ route({ pathname: '/zkevm-l2-txn-batch/[number]', query: { number: item.number.toString() } }) }
/> />
</ListItemMobileGrid.Value> </ListItemMobileGrid.Value>
......
...@@ -7,7 +7,7 @@ import { route } from 'nextjs-routes'; ...@@ -7,7 +7,7 @@ import { route } from 'nextjs-routes';
import config from 'configs/app'; import config from 'configs/app';
import dayjs from 'lib/date/dayjs'; import dayjs from 'lib/date/dayjs';
import BlockEntityL2 from 'ui/shared/entities/block/BlockEntityL2'; import ZkEvmBatchEntityL2 from 'ui/shared/entities/block/ZkEvmBatchEntityL2';
import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1'; import TxEntityL1 from 'ui/shared/entities/tx/TxEntityL1';
import LinkInternal from 'ui/shared/LinkInternal'; import LinkInternal from 'ui/shared/LinkInternal';
import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus'; import ZkEvmL2TxnBatchStatus from 'ui/shared/statusTag/ZkEvmL2TxnBatchStatus';
...@@ -26,13 +26,12 @@ const TxnBatchesTableItem = ({ item, isLoading }: Props) => { ...@@ -26,13 +26,12 @@ const TxnBatchesTableItem = ({ item, isLoading }: Props) => {
return ( return (
<Tr> <Tr>
<Td> <Td>
<BlockEntityL2 <ZkEvmBatchEntityL2
isLoading={ isLoading } isLoading={ isLoading }
number={ item.number } number={ item.number }
fontSize="sm" fontSize="sm"
lineHeight={ 5 } lineHeight={ 5 }
fontWeight={ 600 } fontWeight={ 600 }
href={ route({ pathname: '/zkevm-l2-txn-batch/[number]', query: { number: item.number.toString() } }) }
/> />
</Td> </Td>
<Td> <Td>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment