Skip to content

Commit

Permalink
feat: overlay add attribute modeSensitivity #302
Browse files Browse the repository at this point in the history
  • Loading branch information
liihuu committed May 29, 2023
1 parent fd627cd commit b5fc46a
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 5 deletions.
19 changes: 17 additions & 2 deletions src/component/Overlay.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,11 @@ export interface Overlay {
*/
mode: OverlayMode

/**
* When mode is weak_magnet is the response distance
*/
modeSensitivity: number

/**
* Time and value information
*/
Expand Down Expand Up @@ -302,6 +307,7 @@ export default abstract class OverlayImp implements Overlay {
zLevel: number
defaultZLevel: number
mode: OverlayMode
modeSensitivity: number
points: Array<Partial<Point>> = []
extendData: any
styles: Nullable<DeepPartial<OverlayStyle>>
Expand Down Expand Up @@ -330,7 +336,7 @@ export default abstract class OverlayImp implements Overlay {

constructor (overlay: OverlayTemplate) {
const {
mode, extendData, styles,
mode, modeSensitivity, extendData, styles,
name, totalStep, lock, visible, zLevel,
needDefaultPointFigure, needDefaultXAxisFigure, needDefaultYAxisFigure,
createPointFigures, createXAxisFigures, createYAxisFigures,
Expand All @@ -350,6 +356,7 @@ export default abstract class OverlayImp implements Overlay {
this.needDefaultXAxisFigure = needDefaultXAxisFigure ?? false
this.needDefaultYAxisFigure = needDefaultYAxisFigure ?? false
this.mode = mode ?? OverlayMode.Normal
this.modeSensitivity = modeSensitivity ?? 8
this.extendData = extendData
this.styles = styles ?? null
this.createPointFigures = createPointFigures ?? null
Expand Down Expand Up @@ -483,13 +490,21 @@ export default abstract class OverlayImp implements Overlay {
}

setMode (mode: OverlayMode): boolean {
if (mode !== this.mode) {
if (this.mode !== mode) {
this.mode = mode
return true
}
return false
}

setModeSensitivity (modeSensitivity: number): boolean {
if (this.modeSensitivity !== modeSensitivity) {
this.modeSensitivity = modeSensitivity
return true
}
return false
}

setOnDrawStartCallback (callback: Nullable<OverlayEventCallback>): boolean {
if (this.onDrawStart !== callback) {
this.onDrawStart = callback
Expand Down
6 changes: 5 additions & 1 deletion src/store/OverlayStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,8 @@ export default class OverlayStore {

private _overrideInstance (instance: OverlayImp, overlay: Partial<OverlayCreate>): [boolean, boolean] {
const {
id, groupId, points, styles, lock, visible, zLevel, mode, extendData,
id, groupId, points, styles, lock, visible,
zLevel, mode, modeSensitivity, extendData,
onDrawStart, onDrawing,
onDrawEnd, onClick, onDoubleClick, onRightClick,
onPressedMoveStart, onPressedMoving, onPressedMoveEnd,
Expand Down Expand Up @@ -134,6 +135,9 @@ export default class OverlayStore {
if (mode !== undefined) {
instance.setMode(mode)
}
if (modeSensitivity !== undefined) {
instance.setModeSensitivity(modeSensitivity)
}
if (extendData !== undefined && instance.setExtendData(extendData)) {
updateFlag = true
}
Expand Down
5 changes: 3 additions & 2 deletions src/view/OverlayView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -297,10 +297,11 @@ export default class OverlayView<C extends Axis = YAxis> extends View<C> {
if (overlay.mode !== OverlayMode.Normal && paneId === PaneIdConstants.CANDLE && point.dataIndex !== undefined) {
const kLineData = timeScaleStore.getDataByDataIndex(point.dataIndex)
if (kLineData !== null) {
const modeSensitivity = overlay.modeSensitivity
if (value > kLineData.high) {
if (overlay.mode === OverlayMode.WeakMagnet) {
const highY = yAxis.convertToPixel(kLineData.high)
const buffValue = yAxis.convertFromPixel(highY - 8)
const buffValue = yAxis.convertFromPixel(highY - modeSensitivity)
if (value < buffValue) {
value = kLineData.high
}
Expand All @@ -310,7 +311,7 @@ export default class OverlayView<C extends Axis = YAxis> extends View<C> {
} else if (value < kLineData.low) {
if (overlay.mode === OverlayMode.WeakMagnet) {
const lowY = yAxis.convertToPixel(kLineData.low)
const buffValue = yAxis.convertFromPixel(lowY - 8)
const buffValue = yAxis.convertFromPixel(lowY - modeSensitivity)
if (value > buffValue) {
value = kLineData.low
}
Expand Down

0 comments on commit b5fc46a

Please sign in to comment.