cancel drawing when limit entered

This commit is contained in:
Tim
2024-04-13 02:04:55 -04:00
parent 362a5b1d6b
commit 7352646a9f
2 changed files with 13 additions and 15 deletions

View File

@@ -112,6 +112,7 @@ export const VerboseCallback = prototype(ShapeCallback, {
}) })
let drawingTool = null let drawingTool = null
let previousDrawingTool = null
export function drawShape(shapeType, ...callbacks) { export function drawShape(shapeType, ...callbacks) {
// puts the chart into a line-drawing mode for a new shape // puts the chart into a line-drawing mode for a new shape
@@ -121,6 +122,7 @@ export function drawShape(shapeType, ...callbacks) {
invokeCallbacks(co.drawingCallbacks, 'onUndraw') invokeCallbacks(co.drawingCallbacks, 'onUndraw')
co.drawingCallbacks = callbacks co.drawingCallbacks = callbacks
drawingTool = null drawingTool = null
previousDrawingTool = widget.selectedLineTool()
co.drawing = true co.drawing = true
widget.selectLineTool(shapeType.code) widget.selectLineTool(shapeType.code)
invokeCallbacks(callbacks, 'onDraw') invokeCallbacks(callbacks, 'onDraw')
@@ -154,8 +156,9 @@ export function createShape(shapeType, points, options={}, ...callbacks) {
export function cancelDrawing() { export function cancelDrawing() {
const co = useChartOrderStore() const co = useChartOrderStore()
if (co.drawing) { if (co.drawing) {
invokeCallbacks(co.drawingCallbacks, 'onUndraw')
co.drawing = false co.drawing = false
widget.selectLineTool(previousDrawingTool)
invokeCallbacks(co.drawingCallbacks, 'onUndraw')
} }
} }

View File

@@ -36,7 +36,7 @@
density="compact" hide-details variant="outlined" label="Skew" step="5" density="compact" hide-details variant="outlined" label="Skew" step="5"
:color="color" :base-color="color"> :color="color" :base-color="color">
<template v-slot:prepend> <template v-slot:prepend>
<v-btn icon="mdi-scale-balance" variant="plain" @click="builder.skew=0; adjustShapes()" :color="color"/> <v-btn icon="mdi-scale-balance" variant="plain" @click="builder.skew=0" :color="color"/>
</template> </template>
</v-text-field> </v-text-field>
</div> </div>
@@ -62,7 +62,7 @@
<script setup> <script setup>
import {computed, onBeforeUnmount, onMounted, onUnmounted, onUpdated, watch, watchEffect} from "vue"; import {computed, onBeforeUnmount, onMounted, onUnmounted, onUpdated, watch, watchEffect} from "vue";
import {chart} from "@/charts/chart.js"; import {cancelDrawing, chart} from "@/charts/chart.js";
import {applyLine2, builderFuncs, useChartOrderStore} from "@/orderbuild.js"; import {applyLine2, builderFuncs, useChartOrderStore} from "@/orderbuild.js";
import Color from "color"; import Color from "color";
import {HLine} from "@/charts/shape.js"; import {HLine} from "@/charts/shape.js";
@@ -149,7 +149,7 @@ onUnmounted(() => delete builderFuncs[lastId])
const skew100 = computed( { const skew100 = computed( {
get() {return props.builder.skew*100}, get() {return props.builder.skew*100},
set(v) {props.builder.skew = v/100; adjustShapes()} set(v) {props.builder.skew = v/100; }
} ) } )
// we keep two special control lines as the edge of the ranges and then deletable lines in-between // we keep two special control lines as the edge of the ranges and then deletable lines in-between
@@ -158,13 +158,12 @@ const lineAPrice = computed({
get() { return props.builder.priceA }, get() { return props.builder.priceA },
set(v) { set(v) {
props.builder.priceA = v===null ? v : Number(v) props.builder.priceA = v===null ? v : Number(v)
adjustShapes()
} }
}) })
const lineA = new HLine( const lineA = new HLine(
{price:null,color:defaultColor}, {price:null,color:defaultColor},
function (line) {props.builder.priceA = line.price; props.builder.color = line.color; adjustShapes()}, function (line) {props.builder.priceA = line.price; props.builder.color = line.color; },
deleteBuilder deleteBuilder
) )
@@ -172,19 +171,17 @@ const lineBPrice = computed({
get() { return props.builder.priceB }, get() { return props.builder.priceB },
set(v) { set(v) {
props.builder.priceB = v===null ? v : Number(v) props.builder.priceB = v===null ? v : Number(v)
adjustShapes()
} }
}) })
const lineB = new HLine( const lineB = new HLine(
{price:null,color:props.builder.color.value}, {price:null,color:props.builder.color.value},
(line)=>{props.builder.priceB = line.price; props.builder.color = line.color; adjustShapes()}, (line)=>{props.builder.priceB = line.price; props.builder.color = line.color; },
deleteBuilder deleteBuilder
) )
const adjustInteriorLine = (line) => { const adjustInteriorLine = (line) => {
props.builder.color = line.color props.builder.color = line.color
adjustShapes()
} }
let interiorLines = [] let interiorLines = []
@@ -196,7 +193,6 @@ function createInteriorLine(price, lineProps) {
if (delta !== 0) { if (delta !== 0) {
props.builder.priceA += delta props.builder.priceA += delta
props.builder.priceB += delta props.builder.priceB += delta
adjustShapes()
} }
} }
interiorLines.push(line) interiorLines.push(line)
@@ -228,12 +224,12 @@ const colorStyle = computed(() => {
const start = computed({ const start = computed({
get() {return props.builder.start || 0}, get() {return props.builder.start || 0},
set(v) {props.builder.start=v; adjustShapes()}, set(v) {props.builder.start=v; },
}) })
const end = computed({ const end = computed({
get() {return props.builder.end || 0}, get() {return props.builder.end || 0},
set(v) {props.builder.end=v; adjustShapes()}, set(v) {props.builder.end=v; },
}) })
function computeRange() { function computeRange() {
@@ -277,7 +273,6 @@ const rungs = computed({
props.builder.priceA = (props.builder.priceA + props.builder.priceB) / 2 props.builder.priceA = (props.builder.priceA + props.builder.priceB) / 2
props.builder.priceB = null props.builder.priceB = null
} }
adjustShapes()
} }
}) })
@@ -353,7 +348,7 @@ function allocationText(weight) {
function adjustShapes() { function adjustShapes() {
// this is where all the lines are created or adjusted // this is where all the lines are created or adjusted
// console.log('adjustShapes()') // console.log('adjustShapes()')
cancelDrawing()
const limits = prices.value const limits = prices.value
const colorStrings = colors.value const colorStrings = colors.value
// line properties // line properties
@@ -407,7 +402,7 @@ function adjustShapes() {
} }
watch(props.order, adjustShapes) watchEffect(adjustShapes)
// const autoAdjust = computed(adjustShapes) // const autoAdjust = computed(adjustShapes)