Skip to content

Commit 89bff67

Browse files
authored
Merge pull request #4553 from VisActor/fix/sankey-tooltip-source-zero
fix: preserve Sankey tooltip titles for zero-index source links
2 parents bfb8336 + 8f208c1 commit 89bff67

3 files changed

Lines changed: 51 additions & 2 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"changes": [
3+
{
4+
"comment": "fix: handle sankey tooltip labels when source index is 0 (Issue #4488)",
5+
"type": "patch",
6+
"packageName": "@visactor/vchart"
7+
}
8+
],
9+
"packageName": "@visactor/vchart",
10+
"email": "lixuef1313@163.com"
11+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import { SankeySeriesTooltipHelper } from '../../../src/series/sankey/tooltip-helper';
2+
3+
const createMockSeries = () =>
4+
({
5+
id: 'sankey-series',
6+
type: 'sankey',
7+
getSpec: () => ({
8+
categoryField: 'nodeName'
9+
}),
10+
getSeriesField: () => 'nodeName',
11+
getSeriesKeys: () => ["Agricultural 'waste'", 'Bio-conversion', 'CCCCC', 'DDD'],
12+
getDimensionField: () => ['nodeName'],
13+
getMeasureField: () => ['value'],
14+
getSeriesStyle:
15+
(): any =>
16+
(_: string): any =>
17+
undefined,
18+
getDefaultShapeType: () => 'square'
19+
} as any);
20+
21+
describe('[Series-Sankey] tooltip helper', () => {
22+
test('should resolve link title when source is 0', () => {
23+
const helper = new SankeySeriesTooltipHelper(createMockSeries());
24+
25+
expect(
26+
helper.dimensionTooltipTitleCallback({
27+
source: 0,
28+
target: 2,
29+
value: 124.729,
30+
datum: {
31+
source: 0,
32+
target: 2,
33+
value: 124.729
34+
}
35+
} as any)
36+
).toBe("Agricultural 'waste' => CCCCC");
37+
});
38+
});

packages/vchart/src/series/sankey/tooltip-helper.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import type { ISeriesTooltipHelper } from '../interface';
22
import { BaseSeriesTooltipHelper } from '../base/tooltip-helper';
3-
import { isNumber } from '@visactor/vutils';
3+
import { isNil, isNumber } from '@visactor/vutils';
44
import type { Datum } from '../../typings/common';
55

66
export class SankeySeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {
77
protected _getDimensionData = (datum: any) => {
8-
if (datum.source) {
8+
if (!isNil(datum?.source) && !isNil(datum?.target)) {
99
if (isNumber(datum.source)) {
1010
const seriesKeys = this.series.getSeriesKeys();
1111
return seriesKeys[datum.source] + ' => ' + seriesKeys[datum.target];

0 commit comments

Comments
 (0)