fill trade size from position size

This commit is contained in:
saml33 2021-08-20 21:51:29 +10:00
parent 4fb0126d18
commit cbd0e0b934
5 changed files with 69 additions and 13 deletions

View File

@ -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">

View File

@ -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`}>

View File

@ -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`}>

View File

@ -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

View File

@ -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>