fix: fixes around formatting numbers and arrange edit order dialog (#2178)

* fix: update size and order edit dialog

* fix: update decimals on position notional size

* fix: normalize values

* fix: fix positions unit tests

* fix: remove liquidation price

* fix: positions linting issue

* fix: remove liquidation price test

* fix: remove total summary row

* fix: remove comments

* fix: cypress test to not show trailing 0s

* fix: add back liq. price est as cell only

* fix: remove not used params

* fix: positions formatting in select market and format account numbers

* fix: remove import

* fix: remove redundant comment

* fix: fix unit tests

* fix: fix cypress tests
This commit is contained in:
m.ray 2022-11-18 14:00:38 -05:00 committed by GitHub
parent c7a0b126ad
commit 0189b9c94e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 56 additions and 46 deletions

View File

@ -81,8 +81,8 @@ describe('market info is displayed', { tags: '@smoke' }, () => {
'Contract address', 'Contract address',
'0x0158031158Bb4dF2AD02eAA31e8963E84EA978a4' '0x0158031158Bb4dF2AD02eAA31e8963E84EA978a4'
); );
validateMarketDataRow(8, 'Withdrawal threshold', '0.00050'); validateMarketDataRow(8, 'Withdrawal threshold', '0.0005');
validateMarketDataRow(9, 'Lifetime limit', '1,230.00000'); validateMarketDataRow(9, 'Lifetime limit', '1,230');
}); });
it('metadata displayed', () => { it('metadata displayed', () => {
@ -184,7 +184,7 @@ describe('market info is displayed', { tags: '@smoke' }, () => {
.and('contain', '/governance/market-0'); .and('contain', '/governance/market-0');
cy.getByTestId(externalLink) cy.getByTestId(externalLink)
.eq(1) .eq(1)
.should('have.text', 'Propose a change to this market') .should('have.text', 'Propose a change to market')
.and('have.attr', 'href') .and('have.attr', 'href')
.and('contain', '/governance/propose/update-market'); .and('contain', '/governance/propose/update-market');
}); });

View File

@ -28,6 +28,6 @@ describe('accounts', { tags: '@smoke' }, () => {
cy.getByTestId('tab-accounts') cy.getByTestId('tab-accounts')
.get(tradingAccountRowId) .get(tradingAccountRowId)
.find('[col-id="deposited"]') .find('[col-id="deposited"]')
.should('have.text', '1,000.00000'); .should('have.text', '1,000');
}); });
}); });

View File

@ -554,7 +554,13 @@ export const columnsPositionMarkets = (
{ {
kind: ColumnKind.Position, kind: ColumnKind.Position,
value: ( value: (
<p className={signedNumberCssClass(openVolume || '')}>{openVolume}</p> <p className={signedNumberCssClass(openVolume || '')}>
{openVolume &&
addDecimalsNormalizeNumber(
openVolume,
market.positionDecimalPlaces
)}
</p>
), ),
className: `${cellClassNames} hidden xxl:table-cell font-mono`, className: `${cellClassNames} hidden xxl:table-cell font-mono`,
onlyOnDetailed: true, onlyOnDetailed: true,

View File

@ -55,8 +55,8 @@ describe('AccountsTable', () => {
const cells = await screen.findAllByRole('gridcell'); const cells = await screen.findAllByRole('gridcell');
const expectedValues = [ const expectedValues = [
'tBTC', 'tBTC',
'1,256.00000', '1,256',
'1,256.00001,256.0000', '1,2561,256',
'Breakdown', 'Breakdown',
'Deposit', 'Deposit',
]; ];

View File

@ -2,7 +2,7 @@ import { forwardRef, useState } from 'react';
import type { ValueFormatterParams } from 'ag-grid-community'; import type { ValueFormatterParams } from 'ag-grid-community';
import type { Asset } from '@vegaprotocol/assets'; import type { Asset } from '@vegaprotocol/assets';
import { import {
addDecimalsFormatNumber, addDecimalsNormalizeNumber,
isNumeric, isNumeric,
t, t,
} from '@vegaprotocol/react-helpers'; } from '@vegaprotocol/react-helpers';
@ -38,8 +38,8 @@ export const progressBarValueFormatter = ({
const max = BigInt(data.deposited); const max = BigInt(data.deposited);
const range = max > min ? max : min; const range = max > min ? max : min;
return { return {
low: addDecimalsFormatNumber(min.toString(), data.asset.decimals, 4), low: addDecimalsNormalizeNumber(min.toString(), data.asset.decimals, 4),
high: addDecimalsFormatNumber(mid.toString(), data.asset.decimals, 4), high: addDecimalsNormalizeNumber(mid.toString(), data.asset.decimals, 4),
value: range ? Number((min * BigInt(100)) / range) : 0, value: range ? Number((min * BigInt(100)) / range) : 0,
intent: Intent.Warning, intent: Intent.Warning,
}; };
@ -125,7 +125,7 @@ export const AccountTable = forwardRef<AgGridReact, AccountTableProps>(
data && data &&
data.asset && data.asset &&
isNumeric(value) && isNumeric(value) &&
addDecimalsFormatNumber(value, data.asset.decimals) addDecimalsNormalizeNumber(value, data.asset.decimals)
} }
maxWidth={300} maxWidth={300}
/> />

View File

@ -51,9 +51,9 @@ describe('BreakdownTable', () => {
const expectedValues = [ const expectedValues = [
'Margin', 'Margin',
'BTCUSD Monthly (30 Jun 2022)', 'BTCUSD Monthly (30 Jun 2022)',
'1,256.00001,256.0000', '1,2561,256',
'1,256.00000', '1,256',
'1,256.00000', '1,256',
]; ];
cells.forEach((cell, i) => { cells.forEach((cell, i) => {
expect(cell).toHaveTextContent(expectedValues[i]); expect(cell).toHaveTextContent(expectedValues[i]);

View File

@ -83,8 +83,8 @@ describe('AssetDetailsDialog', () => {
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Enabled' }, { key: AssetDetail.STATUS, value: 'Enabled' },
{ key: AssetDetail.CONTRACT_ADDRESS, value: '0x123' }, { key: AssetDetail.CONTRACT_ADDRESS, value: '0x123' },
{ key: AssetDetail.WITHDRAWAL_THRESHOLD, value: '0.050' }, { key: AssetDetail.WITHDRAWAL_THRESHOLD, value: '0.05' },
{ key: AssetDetail.LIFETIME_LIMIT, value: '123,000.000' }, { key: AssetDetail.LIFETIME_LIMIT, value: '123,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.001', value: '0.001',
@ -115,10 +115,10 @@ describe('AssetDetailsDialog', () => {
{ key: AssetDetail.DECIMALS, value: '5' }, { key: AssetDetail.DECIMALS, value: '5' },
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Enabled' }, { key: AssetDetail.STATUS, value: 'Enabled' },
{ key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000.00000' }, { key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.00000', value: '0',
}, },
], ],
], ],
@ -132,10 +132,10 @@ describe('AssetDetailsDialog', () => {
{ key: AssetDetail.DECIMALS, value: '5' }, { key: AssetDetail.DECIMALS, value: '5' },
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Pending listing' }, { key: AssetDetail.STATUS, value: 'Pending listing' },
{ key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000.00000' }, { key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.00000', value: '0',
}, },
], ],
], ],
@ -149,10 +149,10 @@ describe('AssetDetailsDialog', () => {
{ key: AssetDetail.DECIMALS, value: '5' }, { key: AssetDetail.DECIMALS, value: '5' },
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Proposed' }, { key: AssetDetail.STATUS, value: 'Proposed' },
{ key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000.00000' }, { key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.00000', value: '0',
}, },
], ],
], ],
@ -166,10 +166,10 @@ describe('AssetDetailsDialog', () => {
{ key: AssetDetail.DECIMALS, value: '5' }, { key: AssetDetail.DECIMALS, value: '5' },
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Rejected' }, { key: AssetDetail.STATUS, value: 'Rejected' },
{ key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000.00000' }, { key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.00000', value: '0',
}, },
], ],
], ],

View File

@ -23,8 +23,8 @@ describe('AssetDetailsTable', () => {
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Enabled' }, { key: AssetDetail.STATUS, value: 'Enabled' },
{ key: AssetDetail.CONTRACT_ADDRESS, value: '0x123' }, { key: AssetDetail.CONTRACT_ADDRESS, value: '0x123' },
{ key: AssetDetail.WITHDRAWAL_THRESHOLD, value: '0.050' }, { key: AssetDetail.WITHDRAWAL_THRESHOLD, value: '0.05' },
{ key: AssetDetail.LIFETIME_LIMIT, value: '123,000.000' }, { key: AssetDetail.LIFETIME_LIMIT, value: '123,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.001', value: '0.001',
@ -56,10 +56,10 @@ describe('AssetDetailsTable', () => {
{ key: AssetDetail.DECIMALS, value: '5' }, { key: AssetDetail.DECIMALS, value: '5' },
{ key: AssetDetail.QUANTUM, value: '1' }, { key: AssetDetail.QUANTUM, value: '1' },
{ key: AssetDetail.STATUS, value: 'Enabled' }, { key: AssetDetail.STATUS, value: 'Enabled' },
{ key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000.00000' }, { key: AssetDetail.MAX_FAUCET_AMOUNT_MINT, value: '50,000' },
{ {
key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE, key: AssetDetail.INFRASTRUCTURE_FEE_ACCOUNT_BALANCE,
value: '0.00000', value: '0',
}, },
], ],
], ],

View File

@ -1,4 +1,4 @@
import { addDecimalsFormatNumber, t } from '@vegaprotocol/react-helpers'; import { addDecimalsNormalizeNumber, t } from '@vegaprotocol/react-helpers';
import type { Schema } from '@vegaprotocol/types'; import type { Schema } from '@vegaprotocol/types';
import type { KeyValueTableRowProps } from '@vegaprotocol/ui-toolkit'; import type { KeyValueTableRowProps } from '@vegaprotocol/ui-toolkit';
import { import {
@ -43,7 +43,7 @@ type Mapping = { [key in string]: { value: string; tooltip: string } };
const num = (asset: Asset, n: string | undefined | null) => { const num = (asset: Asset, n: string | undefined | null) => {
if (typeof n === 'undefined' || n == null) return ''; if (typeof n === 'undefined' || n == null) return '';
return addDecimalsFormatNumber(n, asset.decimals); return addDecimalsNormalizeNumber(n, asset.decimals);
}; };
export const rows: Rows = [ export const rows: Rows = [

View File

@ -1,5 +1,5 @@
import { import {
addDecimalsFormatNumber, addDecimalsNormalizeNumber,
formatNumber, formatNumber,
formatNumberPercentage, formatNumberPercentage,
t, t,
@ -40,8 +40,9 @@ const Row = ({
return value; return value;
} }
if (decimalPlaces) { if (decimalPlaces) {
return `${parseFloat( return `${addDecimalsNormalizeNumber(
addDecimalsFormatNumber(value, decimalPlaces) value,
decimalPlaces
)} ${assetSymbol}`; )} ${assetSymbol}`;
} }
if (asPercentage) { if (asPercentage) {

View File

@ -391,7 +391,7 @@ export const Info = ({ market, onSelect }: InfoProps) => {
'' ''
} }
> >
{t('Propose a change to this market')} {t('Propose a change to market')}
</ExternalLink> </ExternalLink>
</div> </div>
), ),

View File

@ -1,10 +1,10 @@
import { import {
t, t,
addDecimalsFormatNumber,
toDecimal, toDecimal,
Size, Size,
getDateTimeFormat, getDateTimeFormat,
addDecimal, addDecimal,
addDecimalsNormalizeNumber,
} from '@vegaprotocol/react-helpers'; } from '@vegaprotocol/react-helpers';
import { Schema } from '@vegaprotocol/types'; import { Schema } from '@vegaprotocol/types';
import { import {
@ -57,22 +57,25 @@ export const OrderEditDialog = ({
title={t('Edit order')} title={t('Edit order')}
icon={<Icon name="edit" />} icon={<Icon name="edit" />}
> >
<div className="grid grid-cols-1 md:grid-cols-3 gap-8"> <div className="grid grid-cols-1 md:grid-cols-4 gap-8">
{order.market && ( {order.market && (
<div> <div className="md:col-span-2">
<p className={headerClassName}>{t(`Market`)}</p> <p className={headerClassName}>{t(`Market`)}</p>
<p>{t(`${order.market.tradableInstrument.instrument.name}`)}</p> <p>{t(`${order.market.tradableInstrument.instrument.name}`)}</p>
</div> </div>
)} )}
{order.type === Schema.OrderType.TYPE_LIMIT && order.market && ( {order.type === Schema.OrderType.TYPE_LIMIT && order.market && (
<div> <div className="md:col-span-1">
<p className={headerClassName}>{t(`Current price`)}</p> <p className={headerClassName}>{t(`Price`)}</p>
<p> <p>
{addDecimalsFormatNumber(order.price, order.market.decimalPlaces)} {addDecimalsNormalizeNumber(
order.price,
order.market.decimalPlaces
)}
</p> </p>
</div> </div>
)} )}
<div> <div className="md:col-span-1">
<p className={headerClassName}>{t(`Size`)}</p> <p className={headerClassName}>{t(`Size`)}</p>
<p> <p>
{order.market && ( {order.market && (

View File

@ -77,7 +77,7 @@ describe('Close position dialog - Request', () => {
); );
const closingOrderRow = closingOrderTable.getAllByRole('row'); const closingOrderRow = closingOrderTable.getAllByRole('row');
expect(closingOrderRow[0].children[0]).toHaveTextContent('test market'); expect(closingOrderRow[0].children[0]).toHaveTextContent('test market');
expect(closingOrderRow[0].children[1]).toHaveTextContent('+0.10'); expect(closingOrderRow[0].children[1]).toHaveTextContent('+0.1');
expect(closingOrderRow[0].children[2]).toHaveTextContent('~1.00 SYM'); expect(closingOrderRow[0].children[2]).toHaveTextContent('~1.00 SYM');
// orders // orders
@ -87,13 +87,13 @@ describe('Close position dialog - Request', () => {
); );
const orderRows = ordersTable.getAllByRole('row'); const orderRows = ordersTable.getAllByRole('row');
expect(orderRows).toHaveLength(orders.length); expect(orderRows).toHaveLength(orders.length);
expect(orderRows[0].children[0]).toHaveTextContent('+2.00'); expect(orderRows[0].children[0]).toHaveTextContent('+2');
expect(orderRows[0].children[1]).toHaveTextContent('9.99 SYM'); expect(orderRows[0].children[1]).toHaveTextContent('9.99 SYM');
expect(orderRows[0].children[2]).toHaveTextContent( expect(orderRows[0].children[2]).toHaveTextContent(
"Good 'til Cancelled (GTC)" "Good 'til Cancelled (GTC)"
); );
expect(orderRows[1].children[0]).toHaveTextContent('-3.00'); expect(orderRows[1].children[0]).toHaveTextContent('-3');
expect(orderRows[1].children[1]).toHaveTextContent('8.88 SYM'); expect(orderRows[1].children[1]).toHaveTextContent('8.88 SYM');
expect(orderRows[1].children[2]).toHaveTextContent( expect(orderRows[1].children[2]).toHaveTextContent(
"Good 'til Cancelled (GTC)" "Good 'til Cancelled (GTC)"

View File

@ -1,7 +1,7 @@
import { Schema } from '@vegaprotocol/types'; import { Schema } from '@vegaprotocol/types';
import type { ICellRendererParams } from 'ag-grid-community'; import type { ICellRendererParams } from 'ag-grid-community';
import classNames from 'classnames'; import classNames from 'classnames';
import { addDecimalsFormatNumber } from '../format'; import { addDecimalsNormalizeNumber } from '../format';
export const Size = ({ export const Size = ({
value, value,
@ -26,7 +26,7 @@ export const Size = ({
: side === Schema.Side.SIDE_SELL : side === Schema.Side.SIDE_SELL
? '-' ? '-'
: ''} : ''}
{addDecimalsFormatNumber(value, positionDecimalPlaces)} {addDecimalsNormalizeNumber(value, positionDecimalPlaces)}
</span> </span>
); );
}; };