fix(trading): 24hr price and volume in header (#5908)
This commit is contained in:
parent
82df401611
commit
b163af3e8a
@ -1,8 +1,6 @@
|
|||||||
{
|
{
|
||||||
"{{liquidityPriceRange}} of mid price": "{{liquidityPriceRange}} of mid price",
|
"{{liquidityPriceRange}} of mid price": "{{liquidityPriceRange}} of mid price",
|
||||||
"{{probability}} probability price bounds": "{{probability}} probability price bounds",
|
"{{probability}} probability price bounds": "{{probability}} probability price bounds",
|
||||||
"24 hour change is unavailable at this time. The price change in the last 120 hours is:": "24 hour change is unavailable at this time. The price change in the last 120 hours is:",
|
|
||||||
"24 hour change is unavailable at this time. The volume change in the last 120 hours is {{candleVolumeValue}} for a total of {{candleVolumePrice}} {{quoteUnit}}": "24 hour change is unavailable at this time. The volume change in the last 120 hours is {{candleVolumeValue}} for a total of {{candleVolumePrice}} {{quoteUnit}}",
|
|
||||||
"A concept derived from traditional markets. It is a calculated value for the ‘current market price’ on a market.": "A concept derived from traditional markets. It is a calculated value for the ‘current market price’ on a market.",
|
"A concept derived from traditional markets. It is a calculated value for the ‘current market price’ on a market.": "A concept derived from traditional markets. It is a calculated value for the ‘current market price’ on a market.",
|
||||||
"A number that will be calculated by an appropriate stochastic risk model, dependent on the type of risk model used and its parameters.": "A number that will be calculated by an appropriate stochastic risk model, dependent on the type of risk model used and its parameters.",
|
"A number that will be calculated by an appropriate stochastic risk model, dependent on the type of risk model used and its parameters.": "A number that will be calculated by an appropriate stochastic risk model, dependent on the type of risk model used and its parameters.",
|
||||||
"A sliding penalty for how much an LP bond is slashed if an LP fails to reach the minimum SLA. This is a network parameter.": "A sliding penalty for how much an LP bond is slashed if an LP fails to reach the minimum SLA. This is a network parameter.",
|
"A sliding penalty for how much an LP bond is slashed if an LP fails to reach the minimum SLA. This is a network parameter.": "A sliding penalty for how much an LP bond is slashed if an LP fails to reach the minimum SLA. This is a network parameter.",
|
||||||
@ -51,9 +49,6 @@
|
|||||||
"Market": "Market",
|
"Market": "Market",
|
||||||
"Market data": "Market data",
|
"Market data": "Market data",
|
||||||
"Market governance": "Market governance",
|
"Market governance": "Market governance",
|
||||||
"Market has not been active for 24 hours. The price change between {{start}} and {{end}} is:": "Market has not been active for 24 hours. The price change between {{start}} and {{end}} is:",
|
|
||||||
"Market has not been active for 24 hours. The volume traded between {{start}} and {{end}} is:": "Market has not been active for 24 hours. The volume traded between {{start}} and {{end}} is:",
|
|
||||||
"Market has not been active for 24 hours. The volume traded between {{start}} and {{end}} is {{candleVolumeValue}} for a total of {{candleVolumePrice}} {{quoteUnit}}": "Market has not been active for 24 hours. The volume traded between {{start}} and {{end}} is {{candleVolumeValue}} for a total of {{candleVolumePrice}} {{quoteUnit}}",
|
|
||||||
"Market ID": "Market ID",
|
"Market ID": "Market ID",
|
||||||
"Market price": "Market price",
|
"Market price": "Market price",
|
||||||
"Market specification": "Market specification",
|
"Market specification": "Market specification",
|
||||||
|
@ -2,16 +2,14 @@ import { type ReactNode } from 'react';
|
|||||||
import {
|
import {
|
||||||
addDecimalsFormatNumber,
|
addDecimalsFormatNumber,
|
||||||
formatNumberPercentage,
|
formatNumberPercentage,
|
||||||
getDateTimeFormat,
|
|
||||||
priceChange,
|
priceChange,
|
||||||
priceChangePercentage,
|
priceChangePercentage,
|
||||||
} from '@vegaprotocol/utils';
|
} from '@vegaprotocol/utils';
|
||||||
import { PriceChangeCell, signedNumberCssClass } from '@vegaprotocol/datagrid';
|
import { signedNumberCssClass } from '@vegaprotocol/datagrid';
|
||||||
import { Tooltip, VegaIcon, VegaIconNames } from '@vegaprotocol/ui-toolkit';
|
import { VegaIcon, VegaIconNames } from '@vegaprotocol/ui-toolkit';
|
||||||
import { useCandles } from '../../hooks/use-candles';
|
import { useCandles } from '../../hooks/use-candles';
|
||||||
import BigNumber from 'bignumber.js';
|
import BigNumber from 'bignumber.js';
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { useT } from '../../use-t';
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
marketId?: string;
|
marketId?: string;
|
||||||
@ -24,7 +22,6 @@ export const Last24hPriceChange = ({
|
|||||||
decimalPlaces,
|
decimalPlaces,
|
||||||
fallback,
|
fallback,
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const t = useT();
|
|
||||||
const { oneDayCandles, fiveDaysCandles, error } = useCandles({
|
const { oneDayCandles, fiveDaysCandles, error } = useCandles({
|
||||||
marketId,
|
marketId,
|
||||||
});
|
});
|
||||||
@ -35,56 +32,6 @@ export const Last24hPriceChange = ({
|
|||||||
return nonIdeal;
|
return nonIdeal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fiveDaysCandles.length < 24) {
|
|
||||||
return (
|
|
||||||
<Tooltip
|
|
||||||
description={
|
|
||||||
<span className="justify-start">
|
|
||||||
{t(
|
|
||||||
'Market has not been active for 24 hours. The price change between {{start}} and {{end}} is:',
|
|
||||||
{
|
|
||||||
start: getDateTimeFormat().format(
|
|
||||||
new Date(fiveDaysCandles[0].periodStart)
|
|
||||||
),
|
|
||||||
end: getDateTimeFormat().format(
|
|
||||||
new Date(
|
|
||||||
fiveDaysCandles[fiveDaysCandles.length - 1].periodStart
|
|
||||||
)
|
|
||||||
),
|
|
||||||
}
|
|
||||||
)}
|
|
||||||
<PriceChangeCell
|
|
||||||
candles={fiveDaysCandles.map((c) => c.close) || []}
|
|
||||||
decimalPlaces={decimalPlaces}
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<span>{nonIdeal}</span>
|
|
||||||
</Tooltip>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (oneDayCandles.length < 24) {
|
|
||||||
return (
|
|
||||||
<Tooltip
|
|
||||||
description={
|
|
||||||
<span className="justify-start">
|
|
||||||
{t(
|
|
||||||
'24 hour change is unavailable at this time. The price change in the last 120 hours is:'
|
|
||||||
)}{' '}
|
|
||||||
<PriceChangeCell
|
|
||||||
candles={fiveDaysCandles.map((c) => c.close) || []}
|
|
||||||
decimalPlaces={decimalPlaces}
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<span>{nonIdeal}</span>
|
|
||||||
</Tooltip>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const candles = oneDayCandles?.map((c) => c.close) || [];
|
const candles = oneDayCandles?.map((c) => c.close) || [];
|
||||||
const change = priceChange(candles);
|
const change = priceChange(candles);
|
||||||
const changePercentage = priceChangePercentage(candles);
|
const changePercentage = priceChangePercentage(candles);
|
||||||
|
@ -2,7 +2,6 @@ import { calcCandleVolume, calcCandleVolumePrice } from '../../market-utils';
|
|||||||
import {
|
import {
|
||||||
addDecimalsFormatNumber,
|
addDecimalsFormatNumber,
|
||||||
formatNumber,
|
formatNumber,
|
||||||
getDateTimeFormat,
|
|
||||||
isNumeric,
|
isNumeric,
|
||||||
} from '@vegaprotocol/utils';
|
} from '@vegaprotocol/utils';
|
||||||
import { Tooltip } from '@vegaprotocol/ui-toolkit';
|
import { Tooltip } from '@vegaprotocol/ui-toolkit';
|
||||||
@ -37,83 +36,6 @@ export const Last24hVolume = ({
|
|||||||
return nonIdeal;
|
return nonIdeal;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fiveDaysCandles.length < 24) {
|
|
||||||
const candleVolume = calcCandleVolume(fiveDaysCandles);
|
|
||||||
const candleVolumePrice = calcCandleVolumePrice(
|
|
||||||
fiveDaysCandles,
|
|
||||||
marketDecimals,
|
|
||||||
positionDecimalPlaces
|
|
||||||
);
|
|
||||||
const candleVolumeValue =
|
|
||||||
candleVolume && isNumeric(positionDecimalPlaces)
|
|
||||||
? addDecimalsFormatNumber(
|
|
||||||
candleVolume,
|
|
||||||
positionDecimalPlaces,
|
|
||||||
formatDecimals
|
|
||||||
)
|
|
||||||
: '-';
|
|
||||||
return (
|
|
||||||
<Tooltip
|
|
||||||
description={
|
|
||||||
<div>
|
|
||||||
<span className="flex flex-col">
|
|
||||||
{t(
|
|
||||||
'Market has not been active for 24 hours. The volume traded between {{start}} and {{end}} is {{candleVolumeValue}} for a total of {{candleVolumePrice}} {{quoteUnit}}',
|
|
||||||
{
|
|
||||||
start: getDateTimeFormat().format(
|
|
||||||
new Date(fiveDaysCandles[0].periodStart)
|
|
||||||
),
|
|
||||||
end: getDateTimeFormat().format(
|
|
||||||
new Date(
|
|
||||||
fiveDaysCandles[fiveDaysCandles.length - 1].periodStart
|
|
||||||
)
|
|
||||||
),
|
|
||||||
candleVolumeValue,
|
|
||||||
candleVolumePrice,
|
|
||||||
quoteUnit,
|
|
||||||
}
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<span>{nonIdeal}</span>
|
|
||||||
</Tooltip>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (oneDayCandles.length < 24) {
|
|
||||||
const candleVolume = calcCandleVolume(fiveDaysCandles);
|
|
||||||
const candleVolumePrice = calcCandleVolumePrice(
|
|
||||||
fiveDaysCandles,
|
|
||||||
marketDecimals,
|
|
||||||
positionDecimalPlaces
|
|
||||||
);
|
|
||||||
const candleVolumeValue =
|
|
||||||
candleVolume && isNumeric(positionDecimalPlaces)
|
|
||||||
? addDecimalsFormatNumber(
|
|
||||||
candleVolume,
|
|
||||||
positionDecimalPlaces,
|
|
||||||
formatDecimals
|
|
||||||
)
|
|
||||||
: '-';
|
|
||||||
return (
|
|
||||||
<Tooltip
|
|
||||||
description={
|
|
||||||
<div>
|
|
||||||
<span className="flex flex-col">
|
|
||||||
{t(
|
|
||||||
'24 hour change is unavailable at this time. The volume change in the last 120 hours is {{candleVolumeValue}} for a total of ({{candleVolumePrice}} {{quoteUnit}})',
|
|
||||||
{ candleVolumeValue, candleVolumePrice, quoteUnit }
|
|
||||||
)}
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<span>{nonIdeal}</span>
|
|
||||||
</Tooltip>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
const candleVolume = oneDayCandles
|
const candleVolume = oneDayCandles
|
||||||
? calcCandleVolume(oneDayCandles)
|
? calcCandleVolume(oneDayCandles)
|
||||||
: initialValue;
|
: initialValue;
|
||||||
|
@ -8,7 +8,7 @@ export const useCandles = ({ marketId }: { marketId?: string }) => {
|
|||||||
const fiveDaysAgo = useFiveDaysAgo();
|
const fiveDaysAgo = useFiveDaysAgo();
|
||||||
const yesterday = useYesterday();
|
const yesterday = useYesterday();
|
||||||
const since = new Date(fiveDaysAgo).toISOString();
|
const since = new Date(fiveDaysAgo).toISOString();
|
||||||
const { data, error } = useThrottledDataProvider({
|
const { data: fiveDaysCandles, error } = useThrottledDataProvider({
|
||||||
dataProvider: marketCandlesProvider,
|
dataProvider: marketCandlesProvider,
|
||||||
variables: {
|
variables: {
|
||||||
marketId: marketId || '',
|
marketId: marketId || '',
|
||||||
@ -18,13 +18,6 @@ export const useCandles = ({ marketId }: { marketId?: string }) => {
|
|||||||
skip: !marketId,
|
skip: !marketId,
|
||||||
});
|
});
|
||||||
|
|
||||||
const fiveDaysCandles = data?.filter((c) => {
|
|
||||||
if (c.open === '' || c.close === '' || c.high === '' || c.close === '') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
|
|
||||||
const oneDayCandles = fiveDaysCandles?.filter((candle) =>
|
const oneDayCandles = fiveDaysCandles?.filter((candle) =>
|
||||||
isCandleLessThan24hOld(candle, yesterday)
|
isCandleLessThan24hOld(candle, yesterday)
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user