diff --git a/src/charts/chart.js b/src/charts/chart.js index dff33c9..d3fe77d 100644 --- a/src/charts/chart.js +++ b/src/charts/chart.js @@ -4,7 +4,6 @@ import {DataFeed, feelessTickerKey, getAllSymbols, lookupSymbol} from "@/charts/ import {intervalToSeconds, SingletonCoroutine} from "@/misc.js"; import {usePrefStore, useStore} from "@/store/store.js"; import {tvCustomThemes} from "../../theme.js"; -import {copyPoints} from "@/charts/chart-misc.js"; export let widget = null export let chart = null @@ -316,14 +315,10 @@ function onSelectedLineToolChanged() { export let dragging = false export let draggingShapeIds = [] -let draggingShapeStartPoints = null -let mouseClickPoint = null - function mouseDown() { // console.log('mouseDown') // todo push into drawing event queue instead, then set dragging there dragging = true - mouseClickPoint = {time: crosshairPoint.time, price: crosshairPoint.price} } function mouseUp() { @@ -351,11 +346,7 @@ function doHandleCrosshairMovement(point) { if (selection.length) draggingShapeIds = selection // console.log('dragging selected', draggingShapeIds) - const initStartPoints = draggingShapeStartPoints === null - if (initStartPoints) - draggingShapeStartPoints = [] - for (const i in draggingShapeIds) { - const shapeId = draggingShapeIds[i] + for (const shapeId of draggingShapeIds) { let shape try { shape = chart.getShapeById(shapeId); @@ -363,33 +354,15 @@ function doHandleCrosshairMovement(point) { catch (e) { continue } - const shapePoints = shape.getPoints(); + const points = structuredClone(shape.getPoints()); const lpbe = shape._model._linePointBeingEdited - const points = []; - const dt = point.time - mouseClickPoint.time - const dp = point.price - mouseClickPoint.price - if (initStartPoints) - draggingShapeStartPoints.push(copyPoints(shapePoints)) - for (const j in shapePoints) { - if (lpbe!==null) - // if this is the point being dragged, set it to the cursor position. otherwise pass it unchanged. - points.push(j===lpbe ? {time: point.time, price: point.price} : shapePoints[j]) - else { - // lpbe is null if the user is dragging the entire object (translation,) meaning all points are affected - // todo use the origin of any selected point - const startPoint = draggingShapeStartPoints[i][j]; - // push a point that applies the cursor delta to the starting position of the shape - points.push({time: startPoint.time + dt, price: startPoint.price + dp}) - } - } - //console.log('lpbe', lpbe) + points[lpbe] = point // console.log('drag calling onPoints', points, shape, lpbe) invokeCallbacks(shapeCallbacks[shapeId], 'onPoints', shapeId, shape, points) } } else if (draggingShapeIds.length > 0) { draggingShapeIds = [] - draggingShapeStartPoints = [] } } diff --git a/src/components/chart/ChartPlaceOrder.vue b/src/components/chart/ChartPlaceOrder.vue index 767aa19..64f8690 100644 --- a/src/components/chart/ChartPlaceOrder.vue +++ b/src/components/chart/ChartPlaceOrder.vue @@ -24,12 +24,13 @@ - - - - {{w}} - - + + +
    +
  • {{w}}
  • +
+
+ Continue placing this order? Back