@publishfx/publish-chart 2.1.24 → 2.1.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -230,7 +230,6 @@ const G2BarChart = ({ height = 300, data, x = "", y = "", indicatorMap, onChartC
230
230
  height: 12,
231
231
  borderRadius: "50%",
232
232
  transform: "translate(-50%, 0%)",
233
- background: item?.color,
234
233
  zIndex: 999
235
234
  },
236
235
  pointP: item.pointP,
@@ -374,7 +374,6 @@ const G2CombineChart = ({ height = 300, data, x = "", y = "", z = "", indicatorM
374
374
  height: 12,
375
375
  borderRadius: "50%",
376
376
  transform: "translate(-50%, 0%)",
377
- background: item?.color,
378
377
  zIndex: 999
379
378
  },
380
379
  pointP: item.pointP,
@@ -256,7 +256,6 @@ const G2LineChart = ({ height = 300, data, x = "", y = "", z = "", indicatorMap,
256
256
  height: 12,
257
257
  borderRadius: "50%",
258
258
  transform: "translate(-50%, 0%)",
259
- background: item?.color,
260
259
  zIndex: 999
261
260
  },
262
261
  pointP: item.pointP,
@@ -275,9 +275,11 @@ export declare function applyLegendColor(view: any, options?: ApplyLegendColorOp
275
275
  export interface AuxiliaryLineItem {
276
276
  name: string;
277
277
  value: number;
278
- axis?: 'left' | 'right';
278
+ axis?: 'left' | 'right' | '';
279
279
  }
280
280
  export interface ApplyAuxiliaryLineYOptions {
281
+ maxLeft?: number;
282
+ maxRight?: number;
281
283
  stroke?: string;
282
284
  strokeOpacity?: number;
283
285
  labelMaxLength?: number;
@@ -146,29 +146,26 @@ function applyLegendColor(view, options = {}) {
146
146
  }
147
147
  function applyAuxiliaryLineY(view, lines, options = {}) {
148
148
  if (!lines?.length) return;
149
- const { labelMaxLength = 5 } = options;
149
+ const { labelMaxLength = 5, stroke = 'rgb(234, 54, 106)', maxLeft, maxRight } = options;
150
150
  lines.forEach((auxLine)=>{
151
151
  view.lineY().data([
152
152
  {
153
153
  y: auxLine.value
154
154
  }
155
- ]).encode('y', auxLine.value).style('stroke', 'rgb(234, 54, 106)').style('strokeOpacity', 1).style('opacity', 1).style('lineWidth', 2).style('shadowColor', 'transparent').animate(false).scale('y', {
155
+ ]).encode('y', auxLine.value).style('stroke', stroke).style('strokeOpacity', 1).style('opacity', 1).style('lineWidth', 2).style('shadowColor', 'transparent').animate(false).scale('y', {
156
156
  key: auxLine?.axis === 'right' ? 'line' : 'main'
157
157
  }).axis('x', false).label({
158
158
  opacity: 1,
159
159
  dx: -20,
160
160
  dy: 0,
161
- text: splitTextToMultiline(auxLine.name, labelMaxLength, '\n'),
161
+ text: splitTextToMultiline(auxLine.name, labelMaxLength, '<br />'),
162
162
  position: auxLine?.axis === 'right' ? 'bottom-right' : 'bottom-left',
163
- style: {
164
- fill: 'red',
165
- shadowColor: 'red',
166
- fillOpacity: 1,
167
- strokeOpacity: 1,
168
- opacity: 1,
169
- shadowBlur: 10,
170
- shadowOffsetX: 0,
171
- shadowOffsetY: 0
163
+ render: (text)=>{
164
+ let top = auxLine?.name?.length > 5 ? -38 : -24;
165
+ if ((auxLine?.axis === 'left' || auxLine?.axis === '') && maxLeft && auxLine.value > 0.92 * maxLeft || auxLine?.axis === 'right' && maxRight && auxLine.value > 0.92 * maxRight) top = 0;
166
+ top += 'px';
167
+ return `<div style="background-color: rgba(255, 0, 102, 0.15); padding: 5px; border-radius: 5px;font-size: 12px;position: absolute;left: ${auxLine?.axis === 'right' ? '-75px' : '0px'}; top: ${top} ; display:inline-block; min-width: 65px; line-height: 14px; color: #FF0066;
168
+ font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;">${text}</div>`;
172
169
  }
173
170
  });
174
171
  });
@@ -131,7 +131,8 @@ function renderG2BarChart(container, options) {
131
131
  }
132
132
  });
133
133
  applyAuxiliaryLineY(view, auxiliaryLineData, {
134
- labelMaxLength: 5
134
+ labelMaxLength: 5,
135
+ maxLeft: maxY
135
136
  });
136
137
  const nodeResult = applyNodeData(view, nodeData, x, y);
137
138
  if (isDataTag && formatLabel) interval.label({
@@ -5,7 +5,7 @@ const Y_AXIS_FIELD = 'groupValue';
5
5
  const BAR_Y_FIELD = 'barValue';
6
6
  const LINE_Y_FIELD = 'lineValue';
7
7
  function renderG2CombineChart(container, options) {
8
- const { data, nodeData, x, z: _z, maxLeft, maxRight, themeColors, indicatorMap: _indicatorMap, formatAxis, formatLineAxis, isDataTag = true, isCombineDataTag = true, isLegend: _isLegend = false, isCompare = false, formatLabel, highlightDate = [], isHighlight = true, isClickable = false, indicators = [], tooltipRender, auxiliaryLineData = [], onNodeListChange, lineColors, onChartRender, isGroup, legendItems = [], indicatorId } = options;
8
+ const { data, nodeData, x, z: _z, maxLeft, maxRight, themeColors, indicatorMap: _indicatorMap, formatAxis, formatLineAxis, isDataTag = true, isCombineDataTag = true, isCompare = false, formatLabel, highlightDate = [], isHighlight = true, isClickable = false, indicators = [], tooltipRender, auxiliaryLineData = [], onNodeListChange, lineColors, onChartRender, isGroup, legendItems = [], indicatorId } = options;
9
9
  const chart = createChart({
10
10
  container,
11
11
  autoFit: true
@@ -17,7 +17,7 @@ function renderG2CombineChart(container, options) {
17
17
  animate: null
18
18
  });
19
19
  const view = getMainView(chart);
20
- view.attr('marginLeft', 0).attr('marginRight', 30).attr('marginTop', 10).attr('marginBottom', 16).animate(false);
20
+ view.attr('marginLeft', 0).attr('marginRight', 30).attr('marginTop', 16).attr('marginBottom', 0).animate(false);
21
21
  view.data(data);
22
22
  const xValueCount = new Set(data.map((d)=>d[x])).size;
23
23
  applyAxisX(view, {
@@ -298,7 +298,10 @@ function renderG2CombineChart(container, options) {
298
298
  tipFontSize: '12px',
299
299
  tipBoxShadow: '0 3px 6px -4px rgba(0, 0, 0, 1)'
300
300
  });
301
- applyAuxiliaryLineY(view, auxiliaryLineData);
301
+ applyAuxiliaryLineY(view, auxiliaryLineData, {
302
+ maxLeft,
303
+ maxRight
304
+ });
302
305
  const nodeResult = applyNodeData(view, nodeData, x, 'groupValue');
303
306
  if (formatLabel) {
304
307
  if (isDataTag) {
@@ -117,7 +117,9 @@ function renderG2LineChart(container, options) {
117
117
  tipFontSize: '12px',
118
118
  tipBoxShadow: '0 3px 6px -4px rgba(0, 0, 0, 1)'
119
119
  });
120
- applyAuxiliaryLineY(view, auxiliaryLineData);
120
+ applyAuxiliaryLineY(view, auxiliaryLineData, {
121
+ maxLeft: maxY
122
+ });
121
123
  const nodeResult = applyNodeData(view, nodeData, x, y);
122
124
  if (isDataTag && formatLabel) {
123
125
  line.label({
@@ -1,3 +1,13 @@
1
+ export declare const nodeMap: Map<number, {
2
+ des: string;
3
+ color: string;
4
+ bgc: string;
5
+ }>;
6
+ export declare const nodeTextMap: Map<string, {
7
+ type: number;
8
+ color: string;
9
+ bgc: string;
10
+ }>;
1
11
  /**
2
12
  * 图表配置接口
3
13
  */
@@ -23,6 +33,12 @@ export interface ChartConfig {
23
33
  barPaddingRight?: number;
24
34
  horBarPaddingRight?: number;
25
35
  };
36
+ /** 节点映射表 */
37
+ nodeMap?: Map<number, {
38
+ des: string;
39
+ color: string;
40
+ bgc: string;
41
+ }>;
26
42
  }
27
43
  /**
28
44
  * 默认图表配置
@@ -36,13 +52,3 @@ export declare const getThemeColors: () => string[];
36
52
  * 合并配置
37
53
  */
38
54
  export declare const mergeChartConfig: (defaultConfig: ChartConfig, userConfig: Partial<ChartConfig>) => ChartConfig;
39
- export declare const nodeMap: Map<number, {
40
- des: string;
41
- color: string;
42
- bgc: string;
43
- }>;
44
- export declare const nodeTextMap: Map<string, {
45
- type: number;
46
- color: string;
47
- bgc: string;
48
- }>;
@@ -1,70 +1,4 @@
1
1
  import { getTheme } from "bizcharts";
2
- const defaultChartConfig = {
3
- baseChartConfig: {
4
- appendPadding: [
5
- 20,
6
- 0,
7
- 10,
8
- 0
9
- ],
10
- padding: 'auto',
11
- autoFit: true,
12
- limitInPlot: false,
13
- forceUpdate: false,
14
- animate: {
15
- leave: false
16
- }
17
- },
18
- theme: {
19
- colors: [
20
- '#5B8FF9',
21
- '#5AD8A6',
22
- '#5D7092',
23
- '#F6BD16',
24
- '#6F5EF9',
25
- '#6DC8EC',
26
- '#945FB9',
27
- '#FF9845',
28
- '#1E9493',
29
- '#FF99C3',
30
- '#8CD85A',
31
- '#FE765E',
32
- '#67A1FF',
33
- '#D85ACB',
34
- '#F95B8F'
35
- ],
36
- combineColors: [
37
- '#FF8C00',
38
- '#FFD700'
39
- ]
40
- },
41
- layout: {
42
- barPaddingRight: 10,
43
- horBarPaddingRight: 50
44
- }
45
- };
46
- const getThemeColors = ()=>{
47
- try {
48
- const theme = getTheme();
49
- return theme.colors10 || defaultChartConfig.theme.colors;
50
- } catch {
51
- return defaultChartConfig.theme.colors;
52
- }
53
- };
54
- const mergeChartConfig = (defaultConfig, userConfig)=>({
55
- baseChartConfig: {
56
- ...defaultConfig.baseChartConfig,
57
- ...userConfig.baseChartConfig
58
- },
59
- theme: {
60
- ...defaultConfig.theme,
61
- ...userConfig.theme
62
- },
63
- layout: {
64
- ...defaultConfig.layout,
65
- ...userConfig.layout
66
- }
67
- });
68
2
  const nodeMap = new Map([
69
3
  [
70
4
  1,
@@ -149,4 +83,71 @@ const nodeTextMap = new Map([
149
83
  }
150
84
  ]
151
85
  ]);
86
+ const defaultChartConfig = {
87
+ baseChartConfig: {
88
+ appendPadding: [
89
+ 20,
90
+ 0,
91
+ 10,
92
+ 0
93
+ ],
94
+ padding: 'auto',
95
+ autoFit: true,
96
+ limitInPlot: false,
97
+ forceUpdate: false,
98
+ animate: {
99
+ leave: false
100
+ }
101
+ },
102
+ theme: {
103
+ colors: [
104
+ '#5B8FF9',
105
+ '#5AD8A6',
106
+ '#5D7092',
107
+ '#F6BD16',
108
+ '#6F5EF9',
109
+ '#6DC8EC',
110
+ '#945FB9',
111
+ '#FF9845',
112
+ '#1E9493',
113
+ '#FF99C3',
114
+ '#8CD85A',
115
+ '#FE765E',
116
+ '#67A1FF',
117
+ '#D85ACB',
118
+ '#F95B8F'
119
+ ],
120
+ combineColors: [
121
+ '#FF8C00',
122
+ '#FFD700'
123
+ ]
124
+ },
125
+ layout: {
126
+ barPaddingRight: 10,
127
+ horBarPaddingRight: 50
128
+ },
129
+ nodeMap
130
+ };
131
+ const getThemeColors = ()=>{
132
+ try {
133
+ const theme = getTheme();
134
+ return theme.colors10 || defaultChartConfig.theme.colors;
135
+ } catch {
136
+ return defaultChartConfig.theme.colors;
137
+ }
138
+ };
139
+ const mergeChartConfig = (defaultConfig, userConfig)=>({
140
+ baseChartConfig: {
141
+ ...defaultConfig.baseChartConfig,
142
+ ...userConfig.baseChartConfig
143
+ },
144
+ theme: {
145
+ ...defaultConfig.theme,
146
+ ...userConfig.theme
147
+ },
148
+ layout: {
149
+ ...defaultConfig.layout,
150
+ ...userConfig.layout
151
+ }
152
+ });
152
153
  export { defaultChartConfig, getThemeColors, mergeChartConfig, nodeMap, nodeTextMap };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@publishfx/publish-chart",
3
- "version": "2.1.24",
3
+ "version": "2.1.26",
4
4
  "description": "A React chart component library for the Publish platform, including BarChart, LineChart, BarLineChart and other visualization components",
5
5
  "type": "module",
6
6
  "keywords": [