diff --git a/src/components/CustomOrder.vue b/src/components/CustomOrder.vue index 5a55c2b..163f2b7 100644 --- a/src/components/CustomOrder.vue +++ b/src/components/CustomOrder.vue @@ -26,7 +26,7 @@ import {useOrderStore} from "@/store/store"; import LimitPrice from "@/components/LimitPrice.vue"; import Order from "@/components/Order.vue"; import {computed, ref} from "vue"; -import {applyLimit} from "@/orderbuild.js"; +import {applyLimitOld} from "@/orderbuild.js"; import {validateRequired, validateTranches} from "@/validate.js"; import {MAX_FRACTION, newTranche} from "@/blockchain/orderlib.js"; @@ -81,7 +81,7 @@ function buildTranches() { // todo optional deadline const fraction = Math.min(MAX_FRACTION, Math.ceil(MAX_FRACTION * fractions.value[i]) ) const tranche = newTranche({fraction}) - applyLimit(tranche, rungs.value[i]) + applyLimitOld(tranche, rungs.value[i]) ts.push(tranche) } return ts diff --git a/src/components/LadderOrder.vue b/src/components/LadderOrder.vue index ace0e26..2595843 100644 --- a/src/components/LadderOrder.vue +++ b/src/components/LadderOrder.vue @@ -29,7 +29,7 @@ import {useOrderStore} from "@/store/store"; import LimitPrice from "@/components/LimitPrice.vue"; import Order from "@/components/Order.vue"; import {computed, ref} from "vue"; -import {applyLimit} from "@/orderbuild.js"; +import {applyLimitOld} from "@/orderbuild.js"; import {validateRequired, validateTranches} from "@/validate.js"; import {MAX_FRACTION, newTranche} from "@/blockchain/orderlib.js"; @@ -84,7 +84,7 @@ function buildTranches() { // todo optional deadline const fraction = Math.min(MAX_FRACTION, Math.ceil(MAX_FRACTION * fractions.value[i]) ) const tranche = newTranche({fraction}) - applyLimit(tranche, rungs.value[i]) + applyLimitOld(tranche, rungs.value[i]) ts.push(tranche) } return ts diff --git a/src/components/TimedOrder.vue b/src/components/TimedOrder.vue index 919d9a5..e4f4da3 100644 --- a/src/components/TimedOrder.vue +++ b/src/components/TimedOrder.vue @@ -10,7 +10,7 @@ import {routeInverted, SingletonCoroutine, vAutoSelect} from "@/misc.js"; import Order from "@/components/Order.vue"; import LimitPrice from "@/components/LimitPrice.vue"; -import {timesliceTranches, applyLimit} from "@/orderbuild.js"; +import {timesliceTranches, applyLimitOld} from "@/orderbuild.js"; import Tranches from "@/components/Tranches.vue"; import {useOrderStore} from "@/store/store.js"; @@ -22,7 +22,7 @@ function buildTranches() { const price = os.limitPrice if( price ) for( let i=0; i { }) -export function applyLimit(tranche, price = null, isMinimum = null) { +export function applyLimitOld(tranche, price = null, isMinimum = null) { + // todo deprecate. used by old forms-based components. if (price === null) { const os = useOrderStore() price = os.limitPrice @@ -109,7 +108,7 @@ export function applyLimit(tranche, price = null, isMinimum = null) { return } - applyLine(tranche, price, 0, isMinimum) + applyLineOld(tranche, price, 0, isMinimum) } @@ -139,23 +138,45 @@ export function linePointsValue(time0, price0, time1, price1, unixTime = null) { } -export function applyLinePoints(tranche, buy, time0, price0, time1, price1, poolDecimals, inverted) { +export function applyLinePoints(tranche, isMinimum, time0, price0, time1, price1) { const [intercept, slope] = computeInterceptSlope(time0, price0, time1, price1); - applyLine(tranche, buy, intercept, slope, poolDecimals, inverted) + applyLine(tranche, isMinimum, intercept, slope) } -export function applyLine(tranche, buy, intercept, slope, poolDecimals, inverted) { +export function applyLineOld(tranche, intercept, slope, isMinimum = null) { + console.log('intercept, slope', intercept, slope) // intercept and slope are still in "human" units of decimal-adjusted prices - const scale = 10 ** -poolDecimals - let m = slope === 0 ? 0 : inverted ? -scale / slope : scale * slope - let b = inverted ? scale / intercept : scale * intercept - // const cur = b + timestamp() * m - // console.log('inverted b, m, cur', inverted, b, m, cur) + const os = useOrderStore() + const route = os.route + const inverted = routeInverted(route) + const scale = 10 ** (os.tokenA.d - os.tokenB.d) + let m = inverted ? -scale / slope : slope / scale + let b = inverted ? scale / intercept : intercept / scale + const cur = b + timestamp() * m + console.log('inverted b, m, cur', inverted, b, m, cur) + m = encodeIEE754(m) + b = encodeIEE754(b) + if (isMinimum === null) + isMinimum = os.limitIsMinimum + console.log('limit is minimum', isMinimum) + if (isMinimum) { + tranche.minIntercept = b; + tranche.minSlope = m; + } else { + tranche.maxIntercept = b; + tranche.maxSlope = m; + } + tranche.marketOrder = false; +} + + +export function applyLine(tranche, isMinimum, intercept, slope) { + // intercept and slope must be already adjusted to be in correct pool units + let m = slope + let b = intercept m = encodeIEE754(m) b = encodeIEE754(b) - const isMinimum = !(buy ^ inverted) - console.log('applyLine', buy, intercept, slope, poolDecimals, inverted, isMinimum) if (isMinimum) { tranche.minIntercept = b; tranche.minSlope = m;