bugfix for order display switching symbols

This commit is contained in:
tim
2024-10-27 18:56:36 -04:00
parent dfcadb1ec2
commit 8a34c55fe0
2 changed files with 19 additions and 9 deletions

View File

@@ -34,10 +34,12 @@ function symbolChanged(symbol) {
} }
export async function setSymbol(symbol) { export async function setSymbol(symbol, interval=null) {
if (interval===null)
interval = widget.symbolInterval().interval
await new Promise(resolve => { await new Promise(resolve => {
if (co.selectedSymbol?.ticker !== symbol.ticker) if (co.selectedSymbol?.ticker !== symbol.ticker)
widget.activeChart().setSymbol(symbol.ticker, null, resolve) widget.setSymbol(symbol.ticker, interval, ()=>setTimeout(resolve,0))
else else
resolve() resolve()
}) })

View File

@@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<v-data-table :headers="datatableHeaders" :items="orders" item-value="id" <v-data-table :headers="datatableHeaders" :items="orders" item-value="id"
:show-select="true" :show-expand="true" v-model="selected"> :show-select="true" :show-expand="true" v-model="selected" select-strategy="single">
<template v-slot:item.startTime="{ value }">{{ timestampString(value) }}</template> <template v-slot:item.startTime="{ value }">{{ timestampString(value) }}</template>
<template v-slot:item.input="{ item }"> <template v-slot:item.input="{ item }">
<span v-if="item.order.amountIsInput"> <span v-if="item.order.amountIsInput">
@@ -110,7 +110,7 @@
<span v-if="item.state > OrderState.Signing"> <span v-if="item.state > OrderState.Signing">
<pulse :touch="item.trancheStatus[i].filledIn"> <pulse :touch="item.trancheStatus[i].filledIn">
<token-amount :chain-id="item.chainId" :addr="item.order.tokenIn" <token-amount :chain-id="item.chainId" :addr="item.order.tokenIn"
:amount="item.trancheStatus[i].filledIn" :raw="true"/> :amount="item.trancheStatus[i].filledIn" :raw="item.order.amountIsInput"/>
</pulse> </pulse>
</span> </span>
</suspense> </suspense>
@@ -127,9 +127,8 @@
<span v-if="item.state > OrderState.Signing"> <span v-if="item.state > OrderState.Signing">
<pulse :touch="item.trancheStatus[i].filledOut"> <pulse :touch="item.trancheStatus[i].filledOut">
<token-amount :chain-id="item.chainId" :addr="item.order.tokenOut" <token-amount :chain-id="item.chainId" :addr="item.order.tokenOut"
:amount="item.trancheStatus[i].filledOut" :raw="true"/> :amount="item.trancheStatus[i].filledOut" :raw="!item.order.amountIsInput"/>
</pulse> </pulse>
<token-symbol :addr="item.order.tokenOut"/>
</span> </span>
</suspense> </suspense>
<suspense> <suspense>
@@ -195,21 +194,30 @@ watch(selected, async ()=>{
const ticker = tickerForOrder(chainId, status.order) const ticker = tickerForOrder(chainId, status.order)
const symbol = lookupSymbol(ticker) const symbol = lookupSymbol(ticker)
if (co.selectedSymbol.ticker !== ticker) { if (co.selectedSymbol.ticker !== ticker) {
co.selectedSymbol = symbol // switch symbol
deleteOrderShapes()
await setSymbol(symbol) await setSymbol(symbol)
console.log('change symbol completed')
} }
console.log('creating order shape', id)
orderShapes[id] = new OrderShapes(symbol, status) orderShapes[id] = new OrderShapes(symbol, status)
} }
} }
deleteOrderShapes(selectedIndex)
})
function deleteOrderShapes(keepSet={}) {
// now delete old shapes // now delete old shapes
const keys = [...Object.keys(orderShapes)] const keys = [...Object.keys(orderShapes)]
for (const id of keys) { for (const id of keys) {
if (!(id in selectedIndex)) { if (!(id in keepSet)) {
console.log('deleting order shape', id)
orderShapes[id].delete() orderShapes[id].delete()
delete orderShapes[id] delete orderShapes[id]
} }
} }
}) }
const orderShapes = {} const orderShapes = {}