From 43d9c6dcba087c683e22d75ce24562ab35d03017 Mon Sep 17 00:00:00 2001 From: kkxxkk2019 Date: Mon, 13 May 2024 22:13:17 +0800 Subject: [PATCH] refactor: optimize code --- .../marker/mark-line/base-mark-line.ts | 11 ++-- .../marker/mark-line/cartesian-mark-line.ts | 50 +++---------------- 2 files changed, 16 insertions(+), 45 deletions(-) diff --git a/packages/vchart/src/component/marker/mark-line/base-mark-line.ts b/packages/vchart/src/component/marker/mark-line/base-mark-line.ts index 8aee5b4642..450787710a 100644 --- a/packages/vchart/src/component/marker/mark-line/base-mark-line.ts +++ b/packages/vchart/src/component/marker/mark-line/base-mark-line.ts @@ -115,7 +115,7 @@ export abstract class BaseMarkLine extends BaseMarker implements return markLine as unknown as IGroup; } - protected _markerLayout() { + protected _getUpdateMarkerAttrs() { const spec = this._spec; const data = this._markerData; const startRelativeSeries = this._startRelativeSeries; @@ -150,13 +150,18 @@ export abstract class BaseMarkLine extends BaseMarker implements : markerComponentAttr.label?.text }; - this._markerComponent?.setAttributes({ + return { ...pointsAttr, label: labelAttrs as MarkLineComponent['attribute']['label'], limitRect, dx: this._layoutOffsetX, dy: this._layoutOffsetY - }); + }; + } + + protected _markerLayout() { + const updateAttrs = this._getUpdateMarkerAttrs(); + this._markerComponent?.setAttributes(updateAttrs); } protected _initDataView(): void { diff --git a/packages/vchart/src/component/marker/mark-line/cartesian-mark-line.ts b/packages/vchart/src/component/marker/mark-line/cartesian-mark-line.ts index baaa92a315..a6d9bf5807 100644 --- a/packages/vchart/src/component/marker/mark-line/cartesian-mark-line.ts +++ b/packages/vchart/src/component/marker/mark-line/cartesian-mark-line.ts @@ -74,41 +74,12 @@ export class CartesianMarkLine extends BaseMarkLine { } protected _markerLayout() { - const spec = this._spec as any; - const data = this._markerData; - const startRelativeSeries = this._startRelativeSeries; - const endRelativeSeries = this._endRelativeSeries; - const relativeSeries = this._relativeSeries; - - const { points } = this._computePointsAttr(); - - const seriesData = this._relativeSeries.getViewData().latestData; - const dataPoints = - data.latestData[0] && data.latestData[0].latestData ? data.latestData[0].latestData : data.latestData; - - let limitRect; - if (spec.clip || spec.label?.confine) { - const { minX, maxX, minY, maxY } = computeClipRange([ - startRelativeSeries.getRegion(), - endRelativeSeries.getRegion(), - relativeSeries.getRegion() - ]); - limitRect = { - x: minX, - y: minY, - width: maxX - minX, - height: maxY - minY - }; - } - const markerComponentAttr = this._markerComponent?.attribute ?? {}; - const labelAttrs = { - ...markerComponentAttr.label, - text: this._spec.label.formatMethod - ? this._spec.label.formatMethod(dataPoints, seriesData) - : markerComponentAttr.label?.text - }; + const updateAttrs = this._getUpdateMarkerAttrs(); if ((this._spec as IStepMarkLineSpec).type === 'type-step') { + const startRelativeSeries = this._startRelativeSeries; + const endRelativeSeries = this._endRelativeSeries; + const { multiSegment, mainSegmentIndex } = (this._spec as IStepMarkLineSpec).line || {}; const { connectDirection, expandDistance = 0 } = this._spec as IStepMarkLineSpec; @@ -141,6 +112,7 @@ export class CartesianMarkLine extends BaseMarkLine { } else { expandDistanceValue = expandDistance as number; } + const { points, label, limitRect } = updateAttrs; const joinPoints = getInsertPoints( (points as IPoint[])[0], @@ -167,7 +139,7 @@ export class CartesianMarkLine extends BaseMarkLine { refY: 0 }; } - + const markerComponentAttr = this._markerComponent?.attribute ?? {}; this._markerComponent?.setAttributes({ points: multiSegment ? [ @@ -177,7 +149,7 @@ export class CartesianMarkLine extends BaseMarkLine { ] : joinPoints, label: { - ...labelAttrs, + ...label, ...labelPositionAttrs, textStyle: { ...markerComponentAttr.label.textStyle, @@ -192,13 +164,7 @@ export class CartesianMarkLine extends BaseMarkLine { dy: this._layoutOffsetY } as any); } else { - this._markerComponent?.setAttributes({ - points, - label: labelAttrs as MarkLineComponent['attribute']['label'], - limitRect, - dx: this._layoutOffsetX, - dy: this._layoutOffsetY - } as any); + this._markerComponent?.setAttributes(updateAttrs); } }