fill trade size from position size
This commit is contained in:
parent
4fb0126d18
commit
cbd0e0b934
|
@ -206,7 +206,7 @@ const MarketHeader = () => {
|
|||
Avg Funding Rate (1h)
|
||||
</div>
|
||||
<div className="font-semibold text-th-fgd-1 text-xs">
|
||||
{calculateFundingRate(perpStats, selectedMarket)?.toFixed(6)}%
|
||||
{calculateFundingRate(perpStats, selectedMarket)?.toFixed(4)}%
|
||||
</div>
|
||||
</div>
|
||||
<div className="pr-6">
|
||||
|
|
|
@ -84,6 +84,7 @@ export default function MarketPosition() {
|
|||
const selectedMarket = useMangoStore((s) => s.selectedMarket.current)
|
||||
const marketConfig = useMangoStore((s) => s.selectedMarket.config)
|
||||
const connected = useMangoStore((s) => s.wallet.connected)
|
||||
const setMangoStore = useMangoStore((s) => s.set)
|
||||
const baseSymbol = marketConfig.baseSymbol
|
||||
const marketName = marketConfig.name
|
||||
const tradeHistory = useTradeHistory()
|
||||
|
@ -101,6 +102,12 @@ export default function MarketPosition() {
|
|||
}
|
||||
}, [marketName, mangoAccount, marketIndex])
|
||||
|
||||
const handleSizeClick = (size) => {
|
||||
setMangoStore((state) => {
|
||||
state.tradeForm.baseSize = size
|
||||
})
|
||||
}
|
||||
|
||||
if (!mangoGroup) return null
|
||||
|
||||
return selectedMarket instanceof PerpMarket ? (
|
||||
|
@ -114,7 +121,7 @@ export default function MarketPosition() {
|
|||
side={perpAccount.basePosition.gt(ZERO_BN) ? 'long' : 'short'}
|
||||
/>
|
||||
) : (
|
||||
'-'
|
||||
'--'
|
||||
)}
|
||||
</div>
|
||||
<div className={`flex justify-between pt-2 pb-2`}>
|
||||
|
@ -122,12 +129,27 @@ export default function MarketPosition() {
|
|||
Position size
|
||||
</div>
|
||||
<div className={`text-th-fgd-1`}>
|
||||
{perpAccount
|
||||
? Math.abs(
|
||||
{perpAccount &&
|
||||
Math.abs(
|
||||
selectedMarket.baseLotsToNumber(perpAccount.basePosition)
|
||||
) > 0 ? (
|
||||
<span
|
||||
className="cursor-pointer underline hover:no-underline"
|
||||
onClick={() =>
|
||||
handleSizeClick(
|
||||
Math.abs(
|
||||
selectedMarket.baseLotsToNumber(perpAccount.basePosition)
|
||||
)
|
||||
)
|
||||
}
|
||||
>
|
||||
{`${Math.abs(
|
||||
selectedMarket.baseLotsToNumber(perpAccount.basePosition)
|
||||
)
|
||||
: 0}{' '}
|
||||
{baseSymbol}
|
||||
)} ${baseSymbol}`}
|
||||
</span>
|
||||
) : (
|
||||
`0 ${baseSymbol}`
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className={`flex justify-between pt-2 pb-2`}>
|
||||
|
|
|
@ -12,7 +12,7 @@ import SideBadge from './SideBadge'
|
|||
import { useSortableData } from '../hooks/useSortableData'
|
||||
import { Order, Market } from '@project-serum/serum/lib/market'
|
||||
import { PerpOrder, PerpMarket } from '@blockworks-foundation/mango-client'
|
||||
import { usdFormatter } from '../utils'
|
||||
import { formatUsdValue } from '../utils'
|
||||
|
||||
const OpenOrdersTable = () => {
|
||||
const { asPath } = useRouter()
|
||||
|
@ -185,7 +185,7 @@ const OpenOrdersTable = () => {
|
|||
<Td
|
||||
className={`px-6 py-2 whitespace-nowrap text-th-fgd-1`}
|
||||
>
|
||||
{usdFormatter(order.price)}
|
||||
{formatUsdValue(order.price)}
|
||||
</Td>
|
||||
<Td className={`px-6 py-2 whitespace-nowrap`}>
|
||||
<div className={`flex justify-end`}>
|
||||
|
|
|
@ -11,7 +11,6 @@ import {
|
|||
} from '@blockworks-foundation/mango-client'
|
||||
import Button from './Button'
|
||||
import { notify } from '../utils/notifications'
|
||||
|
||||
import BN from 'bn.js'
|
||||
import SideBadge from './SideBadge'
|
||||
import { useState } from 'react'
|
||||
|
@ -76,6 +75,7 @@ const PositionsTable = () => {
|
|||
const allMarkets = useMangoStore((s) => s.selectedMangoGroup.markets)
|
||||
const [settlingPerpAcc, setSettlingPerpAcc] = useState(null)
|
||||
const tradeHistory = useTradeHistory()
|
||||
const setMangoStore = useMangoStore((s) => s.set)
|
||||
|
||||
const perpAccounts = mangoAccount
|
||||
? groupConfig.perpMarkets.map((m) => {
|
||||
|
@ -130,6 +130,12 @@ const PositionsTable = () => {
|
|||
}
|
||||
}
|
||||
|
||||
const handleSizeClick = (size) => {
|
||||
setMangoStore((state) => {
|
||||
state.tradeForm.baseSize = size
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="flex flex-col py-4">
|
||||
<div className="-my-2 overflow-x-auto sm:-mx-6 lg:-mx-8">
|
||||
|
@ -216,10 +222,32 @@ const PositionsTable = () => {
|
|||
)}
|
||||
</Td>
|
||||
<Td className="px-2 py-2 whitespace-nowrap text-sm text-th-fgd-1">
|
||||
{Math.abs(
|
||||
{perpAccount &&
|
||||
Math.abs(
|
||||
perpMarket.baseLotsToNumber(
|
||||
perpAccount.basePosition
|
||||
)
|
||||
) > 0 ? (
|
||||
<span
|
||||
className="cursor-pointer underline hover:no-underline"
|
||||
onClick={() =>
|
||||
handleSizeClick(
|
||||
Math.abs(
|
||||
perpMarket.baseLotsToNumber(
|
||||
perpAccount.basePosition
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
>
|
||||
{`${Math.abs(
|
||||
perpMarket.baseLotsToNumber(
|
||||
perpAccount.basePosition
|
||||
)
|
||||
)} ${marketConfig.baseSymbol}`}
|
||||
</span>
|
||||
) : (
|
||||
`0 ${marketConfig.baseSymbol}`
|
||||
)}
|
||||
</Td>
|
||||
<Th
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
import { useState } from 'react'
|
||||
import { useEffect, useState } from 'react'
|
||||
import FloatingElement from './FloatingElement'
|
||||
import OpenOrdersTable from './OpenOrdersTable'
|
||||
import BalancesTable from './BalancesTable'
|
||||
import PositionsTable from './PerpPositionsTable'
|
||||
import TradeHistoryTable from './TradeHistoryTable'
|
||||
import { useRouter } from 'next/router'
|
||||
// import FeeDiscountsTable from './FeeDiscountsTable'
|
||||
|
||||
const TABS = [
|
||||
|
@ -81,7 +82,12 @@ const TabContent = ({ activeTab }) => {
|
|||
}
|
||||
|
||||
const UserInfo = () => {
|
||||
const [activeTab, setActiveTab] = useState(TABS[0])
|
||||
const { asPath } = useRouter()
|
||||
const [activeTab, setActiveTab] = useState('')
|
||||
|
||||
useEffect(() => {
|
||||
asPath.includes('perp') ? setActiveTab(TABS[2]) : setActiveTab(TABS[0])
|
||||
}, [asPath])
|
||||
|
||||
return (
|
||||
<FloatingElement>
|
||||
|
|
Loading…
Reference in New Issue