Skip to content

Commit cc7dfe0

Browse files
authored
fix: bullet legend invalid cofiguration (#3116)
1 parent c9bc70b commit cc7dfe0

File tree

6 files changed

+50
-17
lines changed

6 files changed

+50
-17
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"build:site": "pnpm -r --stream --filter=./site run build",
1111
"build:lib": "pnpm -r --stream --filter=!./site run build:lib",
1212
"dev:graphs": "cd packages/graphs && pnpm run dev",
13+
"dev:plots": "cd packages/plots && pnpm run dev",
1314
"profile": "webpack --config webpack.config.js --mode production --profile --json > stats.json",
1415
"prettier": "prettier --write \"**/**.{js,jsx,tsx,ts,less,md,json}\"",
1516
"ci:version": "pnpm changeset version",

packages/plots/examples/App.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import React from 'react';
22
import { Route, Routes } from 'react-router-dom';
33
import { ExampleList } from './pages';
4+
import { DemoBulletLegend } from './pages/bullet-legend';
45
import { DemoRadar } from './pages/radar';
56

67
function App() {
78
return (
89
<Routes>
910
<Route path="/" element={<ExampleList />} />
1011
<Route path="/radar" element={<DemoRadar />} />
12+
<Route path="/bullet-legend" element={<DemoBulletLegend />} />
1113
</Routes>
1214
);
1315
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import React from 'react';
2+
import { Bullet } from '../../src';
3+
4+
const data = [
5+
{ name: 'G2', star: 0 },
6+
{ name: 'G6', star: 0 },
7+
{ name: 'F2', star: 0 },
8+
{ name: 'L7', star: 0 },
9+
];
10+
11+
export const DemoBulletLegend = () => {
12+
const config = {
13+
// default xField: 'title'、rangeField: 'ranges'、measureField: 'measures'、targetField: 'targets'
14+
data: [
15+
{
16+
title: '满意度',
17+
ranges: 100,
18+
measures: 80,
19+
targets: 85,
20+
},
21+
],
22+
legend: false,
23+
};
24+
return <Bullet {...config} />;
25+
};

packages/plots/examples/pages/index.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ const dataSource = [
66
example: 'radar',
77
description: '雷达图所有值为 0 的场景',
88
},
9+
{
10+
example: 'bullet-legend',
11+
description: '子弹图关闭图例',
12+
},
913
].map((item, index) => ({ key: index, ...item }));
1014

1115
export const ExampleList = () => {
@@ -16,13 +20,13 @@ export const ExampleList = () => {
1620
margin: '24px auto',
1721
border: '1px solid #eee',
1822
borderRadius: 4,
19-
padding: 24,
23+
padding: 12,
2024
boxShadow: '0 4px 12px rgba(0,0,0,0.1)',
2125
}}
2226
>
2327
{dataSource.map((data) => (
24-
<div key={data.key}>
25-
<Link to={`/${data.example}`} target="_blank" rel="noreferrer">
28+
<div key={data.key} style={{ margin: 12 }}>
29+
<Link to={`/${data.example}`} target="_blank" rel="noreferrer" title={data.description}>
2630
<b>{data.example}: </b>
2731
<span>{data.description}</span>
2832
</Link>

packages/plots/examples/pages/radar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export const DemoRadar = () => {
2424
},
2525
axis: {
2626
y: {
27-
labelFormatter: (v) => `${v / 1000} K`,
27+
labelFormatter: (v: number) => `${v / 1000} K`,
2828
},
2929
},
3030
style: {

packages/plots/src/core/plots/bullet/adaptor.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { allCoordinateLayout } from '../../adaptor';
22
import {
33
flow,
4-
transformOptions,
5-
map,
6-
set,
74
get,
8-
isArray,
95
includes,
10-
isNumber,
11-
mergeWithArrayCoverage,
6+
isArray,
127
isNil,
8+
isNumber,
139
isString,
10+
map,
11+
mergeWithArrayCoverage,
12+
set,
13+
transformOptions,
1414
} from '../../utils';
1515

1616
import type { Adaptor } from '../../types';
@@ -150,13 +150,14 @@ export function adaptor(params: Params) {
150150
});
151151
set(options, 'scale.color.range', colors);
152152
// legend itemMarker 的形状
153-
options.legend.color.itemMarker = (d) => {
154-
if (mapField && includes(mapField?.[targetField], d)) {
155-
return 'line';
156-
}
157-
return d?.replace(/\_\d$/, '') === targetField ? 'line' : 'square';
158-
};
159-
153+
if (get(options, 'legend.color') && isNil(get(options, 'legend.color.itemMarker'))) {
154+
options.legend.color.itemMarker = (d) => {
155+
if (mapField && includes(mapField?.[targetField], d)) {
156+
return 'line';
157+
}
158+
return d?.replace(/\_\d$/, '') === targetField ? 'line' : 'square';
159+
};
160+
}
160161
return params;
161162
};
162163

0 commit comments

Comments
 (0)