order workflow

This commit is contained in:
Tim
2024-03-28 15:34:37 -04:00
parent ed553f4dc0
commit 23e0deee91
14 changed files with 170 additions and 102 deletions

View File

@@ -31,12 +31,15 @@ export const orderFuncs = {}
// the key is order.builder.id and the value is a function() that returns an array of tranches
export const builderFuncs = {}
function newDefaultOrder() {
return { id:uuid(), amount:1, amountIsTokenA: true, buy: true, builders:[] }
}
export const useChartOrderStore = defineStore('chart_orders', () => {
const chartReady = ref(false)
const orders = ref([]) // order models in UI format
const built = ref([]) // orders in blockchain format, ready to send
const orders = ref([newDefaultOrder()]) // order models in UI format
const built = ref([{}]) // orders in blockchain format, ready to send
const selectedOrder = ref(null)
const selectedSymbol = ref(null)
const selectedPool = ref(null)
@@ -45,7 +48,7 @@ export const useChartOrderStore = defineStore('chart_orders', () => {
const drawingCallbacks = ref(null) // only during draw mode
function newOrder() {
const order = {id:uuid(), amount:1, amountIsTokenA: true, buy: true, builders:[] }
const order = newDefaultOrder()
orders.value.push(order)
built.value.push({})
selectedOrder.value = order
@@ -54,15 +57,25 @@ export const useChartOrderStore = defineStore('chart_orders', () => {
function removeOrder(order) {
let index = orders.value.findIndex((o)=>o.id===order.id)
if (index === -1) return
orders.value = orders.value.filter((o)=>o.id!==order.id)
if (orders.value.length === 0)
selectedOrder.value = null
const result = orders.value.filter((o)=>o.id!==order.id)
if (result.length === 0) {
const order = newDefaultOrder()
result.push(order)
selectedOrder.value = order
}
else
selectedOrder.value = orders.value[Math.max(0,index-1)] // select the order above the removed one
selectedOrder.value = result[Math.max(0,index-1)] // select the order above the removed one
orders.value = result
}
function resetOrders() {
const order = newDefaultOrder()
orders.value = [order]
selectedOrder.value = order
}
return {
chartReady, selectedSymbol, selectedPool, orders, drawing, drawingCallbacks, newOrder, removeOrder,
chartReady, selectedSymbol, selectedPool, orders, drawing, drawingCallbacks, newOrder, removeOrder, resetOrders,
}
})