Skip to content

Commit

Permalink
fix(MarkerLine): add missing value type string | number to `symbolO…
Browse files Browse the repository at this point in the history
…ffset` and add missing return type `string | number` to `SymbolOffsetCallback`.
  • Loading branch information
plainheart committed Apr 21, 2021
1 parent 03fd554 commit ad05359
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 8 deletions.
2 changes: 1 addition & 1 deletion src/chart/helper/Line.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
25 changes: 21 additions & 4 deletions src/component/marker/MarkLineView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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];
}
Expand Down Expand Up @@ -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
});
}
Expand Down
4 changes: 2 additions & 2 deletions src/util/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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>)
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/visual/symbol.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ad05359

Please sign in to comment.