@orbcharts/plugins-basic 3.0.0-beta.12 → 3.0.0-beta.13

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.
Files changed (99) hide show
  1. package/LICENSE +200 -200
  2. package/dist/orbcharts-plugins-basic.es.js +38 -38
  3. package/dist/orbcharts-plugins-basic.umd.js +9 -9
  4. package/lib/core-types.ts +7 -7
  5. package/lib/core.ts +6 -6
  6. package/lib/plugins-basic-types.ts +6 -6
  7. package/package.json +44 -44
  8. package/src/base/BaseBars.ts +765 -765
  9. package/src/base/BaseBarsTriangle.ts +676 -676
  10. package/src/base/BaseDots.ts +464 -464
  11. package/src/base/BaseGroupAxis.ts +679 -679
  12. package/src/base/BaseLegend.ts +684 -684
  13. package/src/base/BaseLineAreas.ts +629 -629
  14. package/src/base/BaseLines.ts +706 -706
  15. package/src/base/BaseStackedBar.ts +782 -782
  16. package/src/base/BaseTooltip.ts +385 -385
  17. package/src/base/BaseValueAxis.ts +583 -583
  18. package/src/base/types.ts +2 -2
  19. package/src/const.ts +30 -30
  20. package/src/grid/defaults.ts +246 -246
  21. package/src/grid/gridObservables.ts +554 -554
  22. package/src/grid/index.ts +16 -16
  23. package/src/grid/plugins/Bars.ts +69 -69
  24. package/src/grid/plugins/BarsPN.ts +66 -66
  25. package/src/grid/plugins/BarsTriangle.ts +73 -73
  26. package/src/grid/plugins/Dots.ts +68 -68
  27. package/src/grid/plugins/GridLegend.ts +107 -107
  28. package/src/grid/plugins/GridTooltip.ts +66 -66
  29. package/src/grid/plugins/GridZoom.ts +218 -218
  30. package/src/grid/plugins/GroupAux.ts +1103 -1103
  31. package/src/grid/plugins/GroupAxis.ts +97 -97
  32. package/src/grid/plugins/LineAreas.ts +65 -65
  33. package/src/grid/plugins/Lines.ts +59 -59
  34. package/src/grid/plugins/StackedBar.ts +64 -64
  35. package/src/grid/plugins/StackedValueAxis.ts +96 -96
  36. package/src/grid/plugins/ValueAxis.ts +94 -94
  37. package/src/index.ts +6 -6
  38. package/src/multiGrid/defaults.ts +224 -224
  39. package/src/multiGrid/index.ts +14 -14
  40. package/src/multiGrid/multiGridObservables.ts +49 -49
  41. package/src/multiGrid/plugins/MultiBars.ts +108 -108
  42. package/src/multiGrid/plugins/MultiBarsTriangle.ts +114 -114
  43. package/src/multiGrid/plugins/MultiDots.ts +102 -102
  44. package/src/multiGrid/plugins/MultiGridLegend.ts +159 -159
  45. package/src/multiGrid/plugins/MultiGridTooltip.ts +66 -66
  46. package/src/multiGrid/plugins/MultiGroupAxis.ts +137 -137
  47. package/src/multiGrid/plugins/MultiLineAreas.ts +107 -107
  48. package/src/multiGrid/plugins/MultiLines.ts +101 -101
  49. package/src/multiGrid/plugins/MultiStackedBar.ts +106 -106
  50. package/src/multiGrid/plugins/MultiStackedValueAxis.ts +134 -134
  51. package/src/multiGrid/plugins/MultiValueAxis.ts +134 -134
  52. package/src/multiGrid/plugins/OverlappingStackedValueAxes.ts +299 -299
  53. package/src/multiGrid/plugins/OverlappingValueAxes.ts +300 -300
  54. package/src/multiValue/defaults.ts +166 -166
  55. package/src/multiValue/index.ts +8 -8
  56. package/src/multiValue/multiValueObservables.ts +297 -297
  57. package/src/multiValue/plugins/MultiValueLegend.ts +107 -107
  58. package/src/multiValue/plugins/MultiValueTooltip.ts +66 -66
  59. package/src/multiValue/plugins/Scatter.ts +426 -426
  60. package/src/multiValue/plugins/ScatterBubbles.ts +554 -554
  61. package/src/multiValue/plugins/XYAux.ts +681 -681
  62. package/src/multiValue/plugins/XYAxes.ts +684 -684
  63. package/src/multiValue/plugins/XYZoom.ts +299 -299
  64. package/src/noneData/defaults.ts +102 -102
  65. package/src/noneData/index.ts +3 -3
  66. package/src/noneData/plugins/Container.ts +27 -27
  67. package/src/noneData/plugins/Tooltip.ts +373 -373
  68. package/src/relationship/defaults.ts +196 -196
  69. package/src/relationship/index.ts +5 -5
  70. package/src/relationship/plugins/ForceDirected.ts +1168 -1168
  71. package/src/relationship/plugins/ForceDirectedBubbles.ts +1395 -1395
  72. package/src/relationship/plugins/RelationshipLegend.ts +100 -100
  73. package/src/relationship/plugins/RelationshipTooltip.ts +66 -66
  74. package/src/relationship/relationshipObservables.ts +49 -49
  75. package/src/series/defaults.ts +207 -207
  76. package/src/series/index.ts +9 -9
  77. package/src/series/plugins/Bubbles.ts +606 -606
  78. package/src/series/plugins/Pie.ts +623 -623
  79. package/src/series/plugins/PieEventTexts.ts +284 -284
  80. package/src/series/plugins/PieLabels.ts +640 -640
  81. package/src/series/plugins/Rose.ts +516 -516
  82. package/src/series/plugins/RoseLabels.ts +600 -600
  83. package/src/series/plugins/SeriesLegend.ts +107 -107
  84. package/src/series/plugins/SeriesTooltip.ts +66 -66
  85. package/src/series/seriesObservables.ts +145 -145
  86. package/src/series/seriesUtils.ts +51 -51
  87. package/src/tree/defaults.ts +78 -78
  88. package/src/tree/index.ts +4 -4
  89. package/src/tree/plugins/TreeLegend.ts +100 -100
  90. package/src/tree/plugins/TreeMap.ts +333 -333
  91. package/src/tree/plugins/TreeTooltip.ts +66 -66
  92. package/src/utils/commonUtils.ts +21 -21
  93. package/src/utils/d3Graphics.ts +174 -174
  94. package/src/utils/d3Utils.ts +74 -74
  95. package/src/utils/observables.ts +14 -14
  96. package/src/utils/orbchartsUtils.ts +115 -115
  97. package/tsconfig.base.json +13 -13
  98. package/tsconfig.json +2 -2
  99. package/vite.config.js +22 -22
@@ -1,225 +1,225 @@
1
- import type {
2
- MultiGridLegendParams,
3
- MultiBarsParams,
4
- MultiStackedBarParams,
5
- MultiBarsTriangleParams,
6
- MultiLinesParams,
7
- MultiLineAreasParams,
8
- MultiDotsParams,
9
- MultiGroupAxisParams,
10
- MultiGridTooltipParams,
11
- MultiValueAxisParams,
12
- MultiStackedValueAxisParams,
13
- OverlappingValueAxesParams,
14
- OverlappingStackedValueAxesParams
15
- } from '../../lib/plugins-basic-types'
16
- import { measureTextWidth } from '../utils/commonUtils'
17
-
18
- export const DEFAULT_MULTI_GRID_LEGEND_PARAMS: MultiGridLegendParams = {
19
- // position: 'right',
20
- // justify: 'end',
21
- placement: 'bottom',
22
- padding: 28,
23
- backgroundFill: 'none',
24
- backgroundStroke: 'none',
25
- gap: 10,
26
- listRectWidth: 14,
27
- listRectHeight: 14,
28
- listRectRadius: 0,
29
- gridList: [
30
- {
31
- listRectWidth: 14,
32
- listRectHeight: 14,
33
- listRectRadius: 0,
34
- }
35
- ],
36
- textColorType: 'primary'
37
- }
38
-
39
- export const DEFAULT_MULTI_GROUP_AXIS_PARAMS: MultiGroupAxisParams = {
40
- // labelAnchor: 'start',
41
- labelOffset: [0, 0],
42
- labelColorType: 'primary',
43
- axisLineVisible: true,
44
- axisLineColorType: 'primary',
45
- ticks: 'all',
46
- tickFormat: text => text,
47
- tickLineVisible: true,
48
- tickPadding: 20,
49
- tickFullLine: false,
50
- tickFullLineDasharray: 'none',
51
- tickColorType: 'secondary',
52
- tickTextRotate: 0,
53
- tickTextColorType: 'primary',
54
- gridIndexes: [0]
55
- }
56
- DEFAULT_MULTI_GROUP_AXIS_PARAMS.tickFormat.toString = () => `text => text`
57
-
58
- export const DEFAULT_MULTI_VALUE_AXIS_PARAMS: MultiValueAxisParams = {
59
- // labelAnchor: 'end',
60
- labelOffset: [0, 0],
61
- labelColorType: 'primary',
62
- axisLineVisible: false,
63
- axisLineColorType: 'primary',
64
- ticks: 4,
65
- tickFormat: ',.0f',
66
- tickLineVisible: true,
67
- tickPadding: 20,
68
- tickFullLine: true,
69
- tickFullLineDasharray: 'none',
70
- tickColorType: 'secondary',
71
- tickTextRotate: 0,
72
- tickTextColorType: 'primary',
73
- gridIndexes: [0]
74
- }
75
-
76
- export const DEFAULT_MULTI_STACKED_VALUE_AXIS_PARAMS: MultiStackedValueAxisParams = {
77
- ...DEFAULT_MULTI_VALUE_AXIS_PARAMS
78
- }
79
-
80
- export const DEFAULT_MULTI_BARS_PARAMS: MultiBarsParams = {
81
- barWidth: 0,
82
- barPadding: 1,
83
- barGroupPadding: 40,
84
- barRadius: false,
85
- gridIndexes: [0]
86
- }
87
-
88
- export const DEFAULT_MULTI_STACKED_BAR_PARAMS: MultiStackedBarParams = {
89
- barWidth: 0,
90
- barGroupPadding: 10,
91
- barRadius: false,
92
- gridIndexes: [0]
93
- }
94
-
95
- export const DEFAULT_MULTI_BARS_TRIANGLE_PARAMS: MultiBarsTriangleParams = {
96
- barWidth: 0,
97
- barPadding: 1,
98
- barGroupPadding: 20,
99
- linearGradientOpacity: [1, 0],
100
- gridIndexes: [0]
101
- }
102
-
103
- export const DEFAULT_MULTI_LINES_PARAMS: MultiLinesParams = {
104
- lineCurve: 'curveLinear',
105
- lineWidth: 2,
106
- gridIndexes: [1]
107
- }
108
-
109
- export const DEFAULT_MULTI_LINE_AREAS_PARAMS: MultiLineAreasParams = {
110
- lineCurve: 'curveLinear',
111
- linearGradientOpacity: [1, 0],
112
- gridIndexes: [1]
113
- }
114
-
115
- export const DEFAULT_MULTI_DOTS_PARAMS: MultiDotsParams = {
116
- radius: 4,
117
- fillColorType: 'white',
118
- strokeColorType: 'label',
119
- strokeWidth: 2,
120
- onlyShowHighlighted: false,
121
- gridIndexes: [1]
122
- }
123
-
124
- export const DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS: OverlappingValueAxesParams = {
125
- firstAxis: {
126
- // labelAnchor: 'end',
127
- labelOffset: [0, 0],
128
- labelColorType: 'primary',
129
- axisLineVisible: false,
130
- axisLineColorType: 'primary',
131
- ticks: 4,
132
- tickFormat: ',.0f',
133
- tickLineVisible: true,
134
- tickPadding: 20,
135
- tickFullLine: true,
136
- tickFullLineDasharray: 'none',
137
- tickColorType: 'secondary',
138
- tickTextRotate: 0,
139
- tickTextColorType: 'primary',
140
- },
141
- secondAxis: {
142
- // labelAnchor: 'end',
143
- labelOffset: [0, 0],
144
- labelColorType: 'primary',
145
- axisLineVisible: false,
146
- axisLineColorType: 'primary',
147
- ticks: 4,
148
- tickFormat: ',.0f',
149
- tickLineVisible: true,
150
- tickPadding: 20,
151
- tickFullLine: true,
152
- tickFullLineDasharray: 'none',
153
- tickColorType: 'secondary',
154
- tickTextRotate: 0,
155
- tickTextColorType: 'primary',
156
- },
157
- gridIndexes: [0, 1]
158
- }
159
-
160
- export const DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS: OverlappingStackedValueAxesParams = {
161
- ...DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS
162
- }
163
-
164
- export const DEFAULT_MULTI_GRID_TOOLTIP_PARAMS: MultiGridTooltipParams = {
165
- backgroundColorType: 'background',
166
- strokeColorType: 'primary',
167
- backgroundOpacity: 0.8,
168
- textColorType: 'primary',
169
- offset: [20, 5],
170
- padding: 10,
171
- renderFn: (eventData, { styles, utils }) => {
172
- const bulletWidth = styles.textSizePx * 0.7
173
- const offset = (styles.textSizePx / 2) - (bulletWidth / 2)
174
-
175
- const titleSvg = `<g><text dominant-baseline="hanging" font-size="${styles.textSizePx}">${eventData.groupLabel}</text></g>`
176
- const maxLengthText = eventData.groups.reduce((acc, group) => {
177
- const text = `${group.seriesLabel}${group.value}`
178
- return text.length > acc.length ? text : acc
179
- }, '')
180
- const maxTextWidth = utils.measureTextWidth(maxLengthText, styles.textSizePx)
181
- const lineEndX = maxTextWidth + styles.textSizePx * 2
182
- const contentSvg = eventData.groups
183
- .map((group, i) => {
184
- const y = i * styles.textSizePx * 1.5
185
- const isHighlight = group.id === (eventData.datum && eventData.datum.id)
186
- return `<g transform="translate(0, ${styles.textSizePx * 2})">
187
- <rect width="${bulletWidth}" height="${bulletWidth}" x="${offset}" y="${y + offset}" rx="${bulletWidth / 2}" fill="${group.color}"></rect>
188
- <text x="${styles.textSizePx * 1.5}" y="${y}" font-size="${styles.textSizePx}" dominant-baseline="hanging" fill="${styles.textColor}">
189
- <tspan font-weight="${isHighlight ? 'bold' : ''}">${group.seriesLabel}</tspan>
190
- <tspan font-weight="bold" text-anchor="end" x="${lineEndX}">${group.value}</tspan>
191
- </text>
192
- </g>`
193
- })
194
- .join('')
195
- return `${titleSvg}
196
- ${contentSvg}`
197
- }
198
- }
199
- DEFAULT_MULTI_GRID_TOOLTIP_PARAMS.renderFn.toString = () => `(eventData, { styles, utils }) => {
200
- const bulletWidth = styles.textSizePx * 0.7
201
- const offset = (styles.textSizePx / 2) - (bulletWidth / 2)
202
-
203
- const titleSvg = \`<g><text dominant-baseline="hanging" font-size="\${styles.textSizePx}">\${eventData.groupLabel}</text></g>\`
204
- const maxLengthText = eventData.groups.reduce((acc, group) => {
205
- const text = \`\${group.seriesLabel}\${group.value}\`
206
- return text.length > acc.length ? text : acc
207
- }, '')
208
- const maxTextWidth = utils.measureTextWidth(maxLengthText, styles.textSizePx)
209
- const lineEndX = maxTextWidth + styles.textSizePx * 2
210
- const contentSvg = eventData.groups
211
- .map((group, i) => {
212
- const y = i * styles.textSizePx * 1.5
213
- const isHighlight = group.id === (eventData.datum && eventData.datum.id)
214
- return \`<g transform="translate(0, \${styles.textSizePx * 2})">
215
- <rect width="\${bulletWidth}" height="\${bulletWidth}" x="\${offset}" y="\${y + offset}" rx="\${bulletWidth / 2}" fill="\${group.color}"></rect>
216
- <text x="\${styles.textSizePx * 1.5}" y="\${y}" font-size="\${styles.textSizePx}" dominant-baseline="hanging" fill="\${styles.textColor}">
217
- <tspan font-weight="\${isHighlight ? 'bold' : ''}">\${group.seriesLabel}</tspan>
218
- <tspan font-weight="bold" text-anchor="end" x="\${lineEndX}">\${group.value}</tspan>
219
- </text>
220
- </g>\`
221
- })
222
- .join('')
223
- return \`\${titleSvg}
224
- \${contentSvg}\`
1
+ import type {
2
+ MultiGridLegendParams,
3
+ MultiBarsParams,
4
+ MultiStackedBarParams,
5
+ MultiBarsTriangleParams,
6
+ MultiLinesParams,
7
+ MultiLineAreasParams,
8
+ MultiDotsParams,
9
+ MultiGroupAxisParams,
10
+ MultiGridTooltipParams,
11
+ MultiValueAxisParams,
12
+ MultiStackedValueAxisParams,
13
+ OverlappingValueAxesParams,
14
+ OverlappingStackedValueAxesParams
15
+ } from '../../lib/plugins-basic-types'
16
+ import { measureTextWidth } from '../utils/commonUtils'
17
+
18
+ export const DEFAULT_MULTI_GRID_LEGEND_PARAMS: MultiGridLegendParams = {
19
+ // position: 'right',
20
+ // justify: 'end',
21
+ placement: 'bottom',
22
+ padding: 28,
23
+ backgroundFill: 'none',
24
+ backgroundStroke: 'none',
25
+ gap: 10,
26
+ listRectWidth: 14,
27
+ listRectHeight: 14,
28
+ listRectRadius: 0,
29
+ gridList: [
30
+ {
31
+ listRectWidth: 14,
32
+ listRectHeight: 14,
33
+ listRectRadius: 0,
34
+ }
35
+ ],
36
+ textColorType: 'primary'
37
+ }
38
+
39
+ export const DEFAULT_MULTI_GROUP_AXIS_PARAMS: MultiGroupAxisParams = {
40
+ // labelAnchor: 'start',
41
+ labelOffset: [0, 0],
42
+ labelColorType: 'primary',
43
+ axisLineVisible: true,
44
+ axisLineColorType: 'primary',
45
+ ticks: 'all',
46
+ tickFormat: text => text,
47
+ tickLineVisible: true,
48
+ tickPadding: 20,
49
+ tickFullLine: false,
50
+ tickFullLineDasharray: 'none',
51
+ tickColorType: 'secondary',
52
+ tickTextRotate: 0,
53
+ tickTextColorType: 'primary',
54
+ gridIndexes: [0]
55
+ }
56
+ DEFAULT_MULTI_GROUP_AXIS_PARAMS.tickFormat.toString = () => `text => text`
57
+
58
+ export const DEFAULT_MULTI_VALUE_AXIS_PARAMS: MultiValueAxisParams = {
59
+ // labelAnchor: 'end',
60
+ labelOffset: [0, 0],
61
+ labelColorType: 'primary',
62
+ axisLineVisible: false,
63
+ axisLineColorType: 'primary',
64
+ ticks: 4,
65
+ tickFormat: ',.0f',
66
+ tickLineVisible: true,
67
+ tickPadding: 20,
68
+ tickFullLine: true,
69
+ tickFullLineDasharray: 'none',
70
+ tickColorType: 'secondary',
71
+ tickTextRotate: 0,
72
+ tickTextColorType: 'primary',
73
+ gridIndexes: [0]
74
+ }
75
+
76
+ export const DEFAULT_MULTI_STACKED_VALUE_AXIS_PARAMS: MultiStackedValueAxisParams = {
77
+ ...DEFAULT_MULTI_VALUE_AXIS_PARAMS
78
+ }
79
+
80
+ export const DEFAULT_MULTI_BARS_PARAMS: MultiBarsParams = {
81
+ barWidth: 0,
82
+ barPadding: 1,
83
+ barGroupPadding: 40,
84
+ barRadius: false,
85
+ gridIndexes: [0]
86
+ }
87
+
88
+ export const DEFAULT_MULTI_STACKED_BAR_PARAMS: MultiStackedBarParams = {
89
+ barWidth: 0,
90
+ barGroupPadding: 10,
91
+ barRadius: false,
92
+ gridIndexes: [0]
93
+ }
94
+
95
+ export const DEFAULT_MULTI_BARS_TRIANGLE_PARAMS: MultiBarsTriangleParams = {
96
+ barWidth: 0,
97
+ barPadding: 1,
98
+ barGroupPadding: 20,
99
+ linearGradientOpacity: [1, 0],
100
+ gridIndexes: [0]
101
+ }
102
+
103
+ export const DEFAULT_MULTI_LINES_PARAMS: MultiLinesParams = {
104
+ lineCurve: 'curveLinear',
105
+ lineWidth: 2,
106
+ gridIndexes: [1]
107
+ }
108
+
109
+ export const DEFAULT_MULTI_LINE_AREAS_PARAMS: MultiLineAreasParams = {
110
+ lineCurve: 'curveLinear',
111
+ linearGradientOpacity: [1, 0],
112
+ gridIndexes: [1]
113
+ }
114
+
115
+ export const DEFAULT_MULTI_DOTS_PARAMS: MultiDotsParams = {
116
+ radius: 4,
117
+ fillColorType: 'white',
118
+ strokeColorType: 'label',
119
+ strokeWidth: 2,
120
+ onlyShowHighlighted: false,
121
+ gridIndexes: [1]
122
+ }
123
+
124
+ export const DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS: OverlappingValueAxesParams = {
125
+ firstAxis: {
126
+ // labelAnchor: 'end',
127
+ labelOffset: [0, 0],
128
+ labelColorType: 'primary',
129
+ axisLineVisible: false,
130
+ axisLineColorType: 'primary',
131
+ ticks: 4,
132
+ tickFormat: ',.0f',
133
+ tickLineVisible: true,
134
+ tickPadding: 20,
135
+ tickFullLine: true,
136
+ tickFullLineDasharray: 'none',
137
+ tickColorType: 'secondary',
138
+ tickTextRotate: 0,
139
+ tickTextColorType: 'primary',
140
+ },
141
+ secondAxis: {
142
+ // labelAnchor: 'end',
143
+ labelOffset: [0, 0],
144
+ labelColorType: 'primary',
145
+ axisLineVisible: false,
146
+ axisLineColorType: 'primary',
147
+ ticks: 4,
148
+ tickFormat: ',.0f',
149
+ tickLineVisible: true,
150
+ tickPadding: 20,
151
+ tickFullLine: true,
152
+ tickFullLineDasharray: 'none',
153
+ tickColorType: 'secondary',
154
+ tickTextRotate: 0,
155
+ tickTextColorType: 'primary',
156
+ },
157
+ gridIndexes: [0, 1]
158
+ }
159
+
160
+ export const DEFAULT_OVERLAPPING_STACKED_VALUE_AXES_PARAMS: OverlappingStackedValueAxesParams = {
161
+ ...DEFAULT_OVERLAPPING_VALUE_AXES_PARAMS
162
+ }
163
+
164
+ export const DEFAULT_MULTI_GRID_TOOLTIP_PARAMS: MultiGridTooltipParams = {
165
+ backgroundColorType: 'background',
166
+ strokeColorType: 'primary',
167
+ backgroundOpacity: 0.8,
168
+ textColorType: 'primary',
169
+ offset: [20, 5],
170
+ padding: 10,
171
+ renderFn: (eventData, { styles, utils }) => {
172
+ const bulletWidth = styles.textSizePx * 0.7
173
+ const offset = (styles.textSizePx / 2) - (bulletWidth / 2)
174
+
175
+ const titleSvg = `<g><text dominant-baseline="hanging" font-size="${styles.textSizePx}">${eventData.groupLabel}</text></g>`
176
+ const maxLengthText = eventData.group.reduce((acc, group) => {
177
+ const text = `${group.seriesLabel}${group.value}`
178
+ return text.length > acc.length ? text : acc
179
+ }, '')
180
+ const maxTextWidth = utils.measureTextWidth(maxLengthText, styles.textSizePx)
181
+ const lineEndX = maxTextWidth + styles.textSizePx * 2
182
+ const contentSvg = eventData.group
183
+ .map((group, i) => {
184
+ const y = i * styles.textSizePx * 1.5
185
+ const isHighlight = group.id === (eventData.datum && eventData.datum.id)
186
+ return `<g transform="translate(0, ${styles.textSizePx * 2})">
187
+ <rect width="${bulletWidth}" height="${bulletWidth}" x="${offset}" y="${y + offset}" rx="${bulletWidth / 2}" fill="${group.color}"></rect>
188
+ <text x="${styles.textSizePx * 1.5}" y="${y}" font-size="${styles.textSizePx}" dominant-baseline="hanging" fill="${styles.textColor}">
189
+ <tspan font-weight="${isHighlight ? 'bold' : ''}">${group.seriesLabel}</tspan>
190
+ <tspan font-weight="bold" text-anchor="end" x="${lineEndX}">${group.value}</tspan>
191
+ </text>
192
+ </g>`
193
+ })
194
+ .join('')
195
+ return `${titleSvg}
196
+ ${contentSvg}`
197
+ }
198
+ }
199
+ DEFAULT_MULTI_GRID_TOOLTIP_PARAMS.renderFn.toString = () => `(eventData, { styles, utils }) => {
200
+ const bulletWidth = styles.textSizePx * 0.7
201
+ const offset = (styles.textSizePx / 2) - (bulletWidth / 2)
202
+
203
+ const titleSvg = \`<g><text dominant-baseline="hanging" font-size="\${styles.textSizePx}">\${eventData.groupLabel}</text></g>\`
204
+ const maxLengthText = eventData.group.reduce((acc, group) => {
205
+ const text = \`\${group.seriesLabel}\${group.value}\`
206
+ return text.length > acc.length ? text : acc
207
+ }, '')
208
+ const maxTextWidth = utils.measureTextWidth(maxLengthText, styles.textSizePx)
209
+ const lineEndX = maxTextWidth + styles.textSizePx * 2
210
+ const contentSvg = eventData.group
211
+ .map((group, i) => {
212
+ const y = i * styles.textSizePx * 1.5
213
+ const isHighlight = group.id === (eventData.datum && eventData.datum.id)
214
+ return \`<g transform="translate(0, \${styles.textSizePx * 2})">
215
+ <rect width="\${bulletWidth}" height="\${bulletWidth}" x="\${offset}" y="\${y + offset}" rx="\${bulletWidth / 2}" fill="\${group.color}"></rect>
216
+ <text x="\${styles.textSizePx * 1.5}" y="\${y}" font-size="\${styles.textSizePx}" dominant-baseline="hanging" fill="\${styles.textColor}">
217
+ <tspan font-weight="\${isHighlight ? 'bold' : ''}">\${group.seriesLabel}</tspan>
218
+ <tspan font-weight="bold" text-anchor="end" x="\${lineEndX}">\${group.value}</tspan>
219
+ </text>
220
+ </g>\`
221
+ })
222
+ .join('')
223
+ return \`\${titleSvg}
224
+ \${contentSvg}\`
225
225
  }`
@@ -1,15 +1,15 @@
1
- export * from './defaults'
2
- // export * from './types'
3
- export { MultiGridLegend } from './plugins/MultiGridLegend'
4
- export { MultiBars } from './plugins/MultiBars'
5
- export { MultiStackedBar } from './plugins/MultiStackedBar'
6
- export { MultiBarsTriangle } from './plugins/MultiBarsTriangle'
7
- export { MultiLines } from './plugins/MultiLines'
8
- export { MultiLineAreas } from './plugins/MultiLineAreas'
9
- export { MultiDots } from './plugins/MultiDots'
10
- export { MultiGroupAxis } from './plugins/MultiGroupAxis'
11
- export { MultiValueAxis } from './plugins/MultiValueAxis'
12
- export { MultiGridTooltip } from './plugins/MultiGridTooltip'
13
- export { MultiStackedValueAxis } from './plugins/MultiStackedValueAxis'
14
- export { OverlappingValueAxes } from './plugins/OverlappingValueAxes'
1
+ export * from './defaults'
2
+ // export * from './types'
3
+ export { MultiGridLegend } from './plugins/MultiGridLegend'
4
+ export { MultiBars } from './plugins/MultiBars'
5
+ export { MultiStackedBar } from './plugins/MultiStackedBar'
6
+ export { MultiBarsTriangle } from './plugins/MultiBarsTriangle'
7
+ export { MultiLines } from './plugins/MultiLines'
8
+ export { MultiLineAreas } from './plugins/MultiLineAreas'
9
+ export { MultiDots } from './plugins/MultiDots'
10
+ export { MultiGroupAxis } from './plugins/MultiGroupAxis'
11
+ export { MultiValueAxis } from './plugins/MultiValueAxis'
12
+ export { MultiGridTooltip } from './plugins/MultiGridTooltip'
13
+ export { MultiStackedValueAxis } from './plugins/MultiStackedValueAxis'
14
+ export { OverlappingValueAxes } from './plugins/OverlappingValueAxes'
15
15
  export { OverlappingStackedValueAxes } from './plugins/OverlappingStackedValueAxes'
@@ -1,49 +1,49 @@
1
- import type { Observable } from 'rxjs'
2
- import {
3
- Subject,
4
- takeUntil,
5
- of,
6
- map,
7
- reduce,
8
- switchMap,
9
- combineLatest,
10
- distinctUntilChanged,
11
- shareReplay
12
- } from 'rxjs'
13
- import type {
14
- ContextObserverMultiGrid,
15
- ComputedDataGrid,
16
- DataFormatterGrid,
17
- ContextObserverGridDetail,
18
- ContextObserverMultiGridDetail } from '../../lib/core-types'
19
-
20
- // 可設定多個gridIndex的params
21
- interface MultiGridPluginParams {
22
- gridIndexes: number[] | 'all'
23
- }
24
-
25
- // 對應grid資料的plugin所需Observable(必須有gridIndexes)
26
- export const multiGridPluginDetailObservables = (observer: ContextObserverMultiGrid<MultiGridPluginParams>): Observable<ContextObserverMultiGridDetail[]> => {
27
- const gridIndexes$ = observer.fullParams$.pipe(
28
- map(fullParams => fullParams.gridIndexes),
29
- distinctUntilChanged(),
30
- shareReplay(1)
31
- )
32
-
33
- return combineLatest({
34
- multiGridEachDetail: observer.multiGridEachDetail$,
35
- gridIndexes: gridIndexes$,
36
- }).pipe(
37
- map(data => {
38
- // 對應所有grid
39
- if (data.gridIndexes === 'all') {
40
- return data.multiGridEachDetail
41
- }
42
- // 自訂對應grid
43
- return data.gridIndexes.map(gridIndex => {
44
- return data.multiGridEachDetail[gridIndex] ?? data.multiGridEachDetail[0]
45
- })
46
- })
47
- )
48
- }
49
-
1
+ import type { Observable } from 'rxjs'
2
+ import {
3
+ Subject,
4
+ takeUntil,
5
+ of,
6
+ map,
7
+ reduce,
8
+ switchMap,
9
+ combineLatest,
10
+ distinctUntilChanged,
11
+ shareReplay
12
+ } from 'rxjs'
13
+ import type {
14
+ ContextObserverMultiGrid,
15
+ ComputedDataGrid,
16
+ DataFormatterGrid,
17
+ ContextObserverGridDetail,
18
+ ContextObserverMultiGridDetail } from '../../lib/core-types'
19
+
20
+ // 可設定多個gridIndex的params
21
+ interface MultiGridPluginParams {
22
+ gridIndexes: number[] | 'all'
23
+ }
24
+
25
+ // 對應grid資料的plugin所需Observable(必須有gridIndexes)
26
+ export const multiGridPluginDetailObservables = (observer: ContextObserverMultiGrid<MultiGridPluginParams>): Observable<ContextObserverMultiGridDetail[]> => {
27
+ const gridIndexes$ = observer.fullParams$.pipe(
28
+ map(fullParams => fullParams.gridIndexes),
29
+ distinctUntilChanged(),
30
+ shareReplay(1)
31
+ )
32
+
33
+ return combineLatest({
34
+ multiGridEachDetail: observer.multiGridEachDetail$,
35
+ gridIndexes: gridIndexes$,
36
+ }).pipe(
37
+ map(data => {
38
+ // 對應所有grid
39
+ if (data.gridIndexes === 'all') {
40
+ return data.multiGridEachDetail
41
+ }
42
+ // 自訂對應grid
43
+ return data.gridIndexes.map(gridIndex => {
44
+ return data.multiGridEachDetail[gridIndex] ?? data.multiGridEachDetail[0]
45
+ })
46
+ })
47
+ )
48
+ }
49
+