You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@echarts.apache.org by wa...@apache.org on 2021/04/21 17:21:39 UTC

[echarts] 02/02: fix(MarkerLine): add missing value type `string | number` to `symbolOffset` and add missing return type `string | number` to `SymbolOffsetCallback`.

This is an automated email from the ASF dual-hosted git repository.

wangzx pushed a commit to branch fix-marker
in repository https://gitbox.apache.org/repos/asf/echarts.git

commit ad053597fe9dfaa163fadf1cfcdd2db4fb86699f
Author: plainheart <yh...@all-my-life.cn>
AuthorDate: Thu Apr 22 01:15:10 2021 +0800

    fix(MarkerLine): add missing value type `string | number` to `symbolOffset` and add missing return type `string | number` to `SymbolOffsetCallback`.
---
 src/chart/helper/Line.ts             |  2 +-
 src/component/marker/MarkLineView.ts | 25 +++++++++++++++++++++----
 src/util/types.ts                    |  4 ++--
 src/visual/symbol.ts                 |  2 +-
 4 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/src/chart/helper/Line.ts b/src/chart/helper/Line.ts
index b2edb27..4ec9df8 100644
--- a/src/chart/helper/Line.ts
+++ b/src/chart/helper/Line.ts
@@ -81,7 +81,7 @@ function createSymbol(name: 'fromSymbol' | 'toSymbol', lineData: LineList, idx:
         ? symbolOffset : [symbolOffset, symbolOffset];
 
     symbolOffsetArr[0] = parsePercent(symbolOffsetArr[0], symbolSizeArr[0]);
-    symbolOffsetArr[1] = parsePercent(retrieve2(symbolOffsetArr[1], symbolOffsetArr[0]),symbolSizeArr[1]);
+    symbolOffsetArr[1] = parsePercent(retrieve2(symbolOffsetArr[1], symbolOffsetArr[0]), symbolSizeArr[1]);
 
     const symbolPath = symbolUtil.createSymbol(
         symbolType,
diff --git a/src/component/marker/MarkLineView.ts b/src/component/marker/MarkLineView.ts
index 902a574..1495cac 100644
--- a/src/component/marker/MarkLineView.ts
+++ b/src/component/marker/MarkLineView.ts
@@ -318,10 +318,15 @@ class MarkLineView extends MarkerView {
         // Line data for tooltip and formatter
         mlModel.setData(lineData);
 
+        // TODO
+        // Functionally, `symbolSize` & `symbolOffset` can also be 2D array now.
+        // But the related logic and type definition are not finished yet.
+        // Finish it if required
         let symbolType = mlModel.get('symbol');
         let symbolSize = mlModel.get('symbolSize');
         let symbolRotate = mlModel.get('symbolRotate');
         let symbolOffset = mlModel.get('symbolOffset');
+        // TODO: support callback function like markPoint
         if (!isArray(symbolType)) {
             symbolType = [symbolType, symbolType];
         }
@@ -401,10 +406,22 @@ class MarkLineView extends MarkerView {
             data.setItemVisual(idx, {
                 symbolKeepAspect: itemModel.get('symbolKeepAspect'),
                 // `0` should be considered as a valid value, so use `retrieve2` instead of `||`
-                symbolOffset: retrieve2(itemModel.get('symbolOffset'), (symbolOffset as (string | number)[])[isFrom ? 0 : 1]),
-                symbolRotate: retrieve2(itemModel.get('symbolRotate', true), (symbolRotate as number[])[isFrom ? 0 : 1]),
-                symbolSize: retrieve2(itemModel.get('symbolSize'), (symbolSize as number[])[isFrom ? 0 : 1]),
-                symbol: retrieve2(itemModel.get('symbol', true), (symbolType as string[])[isFrom ? 0 : 1]),
+                symbolOffset: retrieve2(
+                    itemModel.get('symbolOffset', true),
+                    (symbolOffset as (string | number)[])[isFrom ? 0 : 1]
+                ),
+                symbolRotate: retrieve2(
+                    itemModel.get('symbolRotate', true),
+                    (symbolRotate as number[])[isFrom ? 0 : 1]
+                ),
+                symbolSize: retrieve2(
+                    itemModel.get('symbolSize', true),
+                    (symbolSize as number[])[isFrom ? 0 : 1]
+                ),
+                symbol: retrieve2(
+                    itemModel.get('symbol', true),
+                    (symbolType as string[])[isFrom ? 0 : 1]
+                ),
                 style
             });
         }
diff --git a/src/util/types.ts b/src/util/types.ts
index 62ddb56..67285a2 100644
--- a/src/util/types.ts
+++ b/src/util/types.ts
@@ -922,7 +922,7 @@ export interface RoamOptionMixin {
 export type SymbolSizeCallback<T> = (rawValue: any, params: T) => number | number[];
 export type SymbolCallback<T> = (rawValue: any, params: T) => string;
 export type SymbolRotateCallback<T> = (rawValue: any, params: T) => number;
-export type SymbolOffsetCallback<T> = (rawValue: any, params: T) => (string | number)[];
+export type SymbolOffsetCallback<T> = (rawValue: any, params: T) => string | number | (string | number)[];
 /**
  * Mixin of option set to control the element symbol.
  * Include type of symbol, and size of symbol.
@@ -941,7 +941,7 @@ export interface SymbolOptionMixin<T = unknown> {
 
     symbolKeepAspect?: boolean
 
-    symbolOffset?: (string | number)[] | (unknown extends T ? never : SymbolOffsetCallback<T>)
+    symbolOffset?: string | number | (string | number)[] | (unknown extends T ? never : SymbolOffsetCallback<T>)
 }
 
 /**
diff --git a/src/visual/symbol.ts b/src/visual/symbol.ts
index e15e425..59fdcfc 100644
--- a/src/visual/symbol.ts
+++ b/src/visual/symbol.ts
@@ -83,7 +83,7 @@ const seriesSymbolTask: StageHandler = {
             symbolSize: seriesSymbolSize as number | number[],
             symbolKeepAspect: keepAspect,
             symbolRotate: seriesSymbolRotate as number,
-            symbolOffset: seriesSymbolOffset as (string | number)[]
+            symbolOffset: seriesSymbolOffset as string | number | (string | number)[]
         });
 
         // Only visible series has each data be visual encoded

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@echarts.apache.org
For additional commands, e-mail: commits-help@echarts.apache.org