@orbcharts/plugins-basic 3.0.0-alpha.44 → 3.0.0-alpha.45

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. package/LICENSE +200 -200
  2. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBarStack.d.ts +6 -4
  3. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBars.d.ts +6 -4
  4. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseBarsTriangle.d.ts +7 -4
  5. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseDots.d.ts +5 -3
  6. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseGroupAxis.d.ts +3 -3
  7. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLineAreas.d.ts +6 -3
  8. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLines.d.ts +6 -3
  9. package/dist/{src → orbcharts-plugins-basic/src}/base/BaseValueAxis.d.ts +3 -3
  10. package/dist/{src → orbcharts-plugins-basic/src}/grid/gridObservables.d.ts +4 -4
  11. package/dist/orbcharts-plugins-basic/src/index.d.ts +5 -0
  12. package/dist/orbcharts-plugins-basic/src/multiGrid/multiGridObservables.d.ts +8 -0
  13. package/dist/orbcharts-plugins-basic/src/series/plugins/PieEventTexts.d.ts +3 -0
  14. package/dist/orbcharts-plugins-basic/src/series/seriesObservables.d.ts +21 -0
  15. package/dist/{src → orbcharts-plugins-basic/src}/series/seriesUtils.d.ts +3 -3
  16. package/dist/orbcharts-plugins-basic.es.js +7696 -7529
  17. package/dist/orbcharts-plugins-basic.umd.js +8 -8
  18. package/dist/src/index.d.ts +1 -5
  19. package/package.json +42 -42
  20. package/src/base/BaseBarStack.ts +778 -881
  21. package/src/base/BaseBars.ts +764 -750
  22. package/src/base/BaseBarsTriangle.ts +672 -659
  23. package/src/base/BaseDots.ts +502 -639
  24. package/src/base/BaseGroupAxis.ts +496 -496
  25. package/src/base/BaseLegend.ts +641 -641
  26. package/src/base/BaseLineAreas.ts +625 -621
  27. package/src/base/BaseLines.ts +699 -692
  28. package/src/base/BaseValueAxis.ts +478 -479
  29. package/src/base/types.ts +2 -2
  30. package/src/grid/defaults.ts +121 -121
  31. package/src/grid/gridObservables.ts +247 -263
  32. package/src/grid/index.ts +15 -15
  33. package/src/grid/plugins/BarStack.ts +50 -37
  34. package/src/grid/plugins/Bars.ts +51 -37
  35. package/src/grid/plugins/BarsDiverging.ts +41 -39
  36. package/src/grid/plugins/BarsTriangle.ts +50 -34
  37. package/src/grid/plugins/Dots.ts +37 -35
  38. package/src/grid/plugins/GridLegend.ts +59 -59
  39. package/src/grid/plugins/GroupAux.ts +645 -646
  40. package/src/grid/plugins/GroupAxis.ts +42 -30
  41. package/src/grid/plugins/LineAreas.ts +39 -36
  42. package/src/grid/plugins/Lines.ts +38 -35
  43. package/src/grid/plugins/ScalingArea.ts +173 -174
  44. package/src/grid/plugins/ValueAxis.ts +43 -31
  45. package/src/grid/plugins/ValueStackAxis.ts +79 -70
  46. package/src/grid/types.ts +120 -120
  47. package/src/index.ts +9 -9
  48. package/src/multiGrid/defaults.ts +147 -147
  49. package/src/multiGrid/index.ts +11 -11
  50. package/src/multiGrid/multiGridObservables.ts +42 -289
  51. package/src/multiGrid/plugins/MultiBarStack.ts +74 -60
  52. package/src/multiGrid/plugins/MultiBars.ts +73 -59
  53. package/src/multiGrid/plugins/MultiBarsTriangle.ts +73 -58
  54. package/src/multiGrid/plugins/MultiDots.ts +60 -58
  55. package/src/multiGrid/plugins/MultiGridLegend.ts +89 -89
  56. package/src/multiGrid/plugins/MultiGroupAxis.ts +65 -53
  57. package/src/multiGrid/plugins/MultiLineAreas.ts +62 -59
  58. package/src/multiGrid/plugins/MultiLines.ts +61 -58
  59. package/src/multiGrid/plugins/MultiValueAxis.ts +65 -53
  60. package/src/multiGrid/plugins/OverlappingValueAxes.ts +169 -164
  61. package/src/multiGrid/types.ts +67 -67
  62. package/src/noneData/defaults.ts +64 -61
  63. package/src/noneData/index.ts +3 -3
  64. package/src/noneData/plugins/Container.ts +10 -10
  65. package/src/noneData/plugins/Tooltip.ts +310 -310
  66. package/src/noneData/types.ts +26 -26
  67. package/src/series/defaults.ts +109 -99
  68. package/src/series/index.ts +6 -6
  69. package/src/series/plugins/Bubbles.ts +571 -551
  70. package/src/series/plugins/Pie.ts +548 -600
  71. package/src/series/plugins/PieEventTexts.ts +258 -194
  72. package/src/series/plugins/PieLabels.ts +335 -288
  73. package/src/series/plugins/SeriesLegend.ts +59 -59
  74. package/src/series/seriesObservables.ts +145 -0
  75. package/src/series/seriesUtils.ts +50 -50
  76. package/src/series/types.ts +67 -67
  77. package/src/tree/defaults.ts +22 -22
  78. package/src/tree/index.ts +3 -3
  79. package/src/tree/plugins/TreeLegend.ts +59 -59
  80. package/src/tree/plugins/TreeMap.ts +305 -305
  81. package/src/tree/types.ts +23 -23
  82. package/src/utils/commonUtils.ts +21 -21
  83. package/src/utils/d3Graphics.ts +124 -124
  84. package/src/utils/d3Utils.ts +73 -73
  85. package/src/utils/observables.ts +14 -14
  86. package/src/utils/orbchartsUtils.ts +100 -100
  87. package/tsconfig.dev.json +16 -16
  88. package/tsconfig.json +16 -13
  89. package/tsconfig.prod.json +13 -13
  90. package/vite.config.js +49 -49
  91. package/dist/src/multiGrid/multiGridObservables.d.ts +0 -12
  92. package/dist/src/series/plugins/PieEventTexts.d.ts +0 -1
  93. /package/dist/{src → orbcharts-plugins-basic/src}/base/BaseGroupArea.d.ts +0 -0
  94. /package/dist/{src → orbcharts-plugins-basic/src}/base/BaseLegend.d.ts +0 -0
  95. /package/dist/{src → orbcharts-plugins-basic/src}/base/types.d.ts +0 -0
  96. /package/dist/{src → orbcharts-plugins-basic/src}/grid/defaults.d.ts +0 -0
  97. /package/dist/{src → orbcharts-plugins-basic/src}/grid/index.d.ts +0 -0
  98. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarStack.d.ts +0 -0
  99. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Bars.d.ts +0 -0
  100. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarsDiverging.d.ts +0 -0
  101. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/BarsTriangle.d.ts +0 -0
  102. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Dots.d.ts +0 -0
  103. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GridLegend.d.ts +0 -0
  104. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GroupAux.d.ts +0 -0
  105. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/GroupAxis.d.ts +0 -0
  106. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/LineAreas.d.ts +0 -0
  107. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Lines.d.ts +0 -0
  108. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/Ranking.d.ts +0 -0
  109. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/RankingAxis.d.ts +0 -0
  110. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/ScalingArea.d.ts +0 -0
  111. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/ValueAxis.d.ts +0 -0
  112. /package/dist/{src → orbcharts-plugins-basic/src}/grid/plugins/ValueStackAxis.d.ts +0 -0
  113. /package/dist/{src → orbcharts-plugins-basic/src}/grid/types.d.ts +0 -0
  114. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/defaults.d.ts +0 -0
  115. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/index.d.ts +0 -0
  116. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBarStack.d.ts +0 -0
  117. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBars.d.ts +0 -0
  118. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiBarsTriangle.d.ts +0 -0
  119. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiDots.d.ts +0 -0
  120. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGridLegend.d.ts +0 -0
  121. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiGroupAxis.d.ts +0 -0
  122. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiLineAreas.d.ts +0 -0
  123. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiLines.d.ts +0 -0
  124. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/MultiValueAxis.d.ts +0 -0
  125. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/plugins/OverlappingValueAxes.d.ts +0 -0
  126. /package/dist/{src → orbcharts-plugins-basic/src}/multiGrid/types.d.ts +0 -0
  127. /package/dist/{src → orbcharts-plugins-basic/src}/multiValue/index.d.ts +0 -0
  128. /package/dist/{src → orbcharts-plugins-basic/src}/multiValue/plugins/Scatter.d.ts +0 -0
  129. /package/dist/{src → orbcharts-plugins-basic/src}/multiValue/plugins/ScatterAxes.d.ts +0 -0
  130. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/defaults.d.ts +0 -0
  131. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/index.d.ts +0 -0
  132. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/plugins/Container.d.ts +0 -0
  133. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/plugins/Tooltip.d.ts +0 -0
  134. /package/dist/{src → orbcharts-plugins-basic/src}/noneData/types.d.ts +0 -0
  135. /package/dist/{src → orbcharts-plugins-basic/src}/relationship/index.d.ts +0 -0
  136. /package/dist/{src → orbcharts-plugins-basic/src}/relationship/plugins/Relationship.d.ts +0 -0
  137. /package/dist/{src → orbcharts-plugins-basic/src}/series/defaults.d.ts +0 -0
  138. /package/dist/{src → orbcharts-plugins-basic/src}/series/index.d.ts +0 -0
  139. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Bubbles.d.ts +0 -0
  140. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Pie.d.ts +0 -0
  141. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/PieLabels.d.ts +0 -0
  142. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/SeriesLegend.d.ts +0 -0
  143. /package/dist/{src → orbcharts-plugins-basic/src}/series/plugins/Waffle.d.ts +0 -0
  144. /package/dist/{src → orbcharts-plugins-basic/src}/series/types.d.ts +0 -0
  145. /package/dist/{src → orbcharts-plugins-basic/src}/tree/defaults.d.ts +0 -0
  146. /package/dist/{src → orbcharts-plugins-basic/src}/tree/index.d.ts +0 -0
  147. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeLegend.d.ts +0 -0
  148. /package/dist/{src → orbcharts-plugins-basic/src}/tree/plugins/TreeMap.d.ts +0 -0
  149. /package/dist/{src → orbcharts-plugins-basic/src}/tree/types.d.ts +0 -0
  150. /package/dist/{src → orbcharts-plugins-basic/src}/utils/commonUtils.d.ts +0 -0
  151. /package/dist/{src → orbcharts-plugins-basic/src}/utils/d3Graphics.d.ts +0 -0
  152. /package/dist/{src → orbcharts-plugins-basic/src}/utils/d3Utils.d.ts +0 -0
  153. /package/dist/{src → orbcharts-plugins-basic/src}/utils/observables.d.ts +0 -0
  154. /package/dist/{src → orbcharts-plugins-basic/src}/utils/orbchartsUtils.d.ts +0 -0
  155. /package/dist/{vite.config.d.ts → orbcharts-plugins-basic/vite.config.d.ts} +0 -0
@@ -1,31 +1,43 @@
1
- import {
2
- Subject } from 'rxjs'
3
- import {
4
- defineGridPlugin } from '@orbcharts/core'
5
- import { DEFAULT_GROUP_AXIS_PARAMS } from '../defaults'
6
- import { createBaseGroupAxis } from '../../base/BaseGroupAxis'
7
-
8
- const pluginName = 'GroupAxis'
9
-
10
- export const GroupAxis = defineGridPlugin(pluginName, DEFAULT_GROUP_AXIS_PARAMS)(({ selection, name, observer, subject }) => {
11
-
12
- const destroy$ = new Subject()
13
-
14
- const unsubscribeBaseGroupAxis = createBaseGroupAxis(pluginName, {
15
- selection,
16
- computedData$: observer.computedData$,
17
- fullParams$: observer.fullParams$,
18
- fullDataFormatter$: observer.fullDataFormatter$,
19
- fullChartParams$: observer.fullChartParams$,
20
- gridAxesTransform$: observer.gridAxesTransform$,
21
- gridAxesReverseTransform$: observer.gridAxesReverseTransform$,
22
- gridAxesSize$: observer.gridAxesSize$,
23
- gridContainer$: observer.gridContainer$,
24
- isSeriesPositionSeprate$: observer.isSeriesPositionSeprate$,
25
- })
26
-
27
- return () => {
28
- destroy$.next(undefined)
29
- unsubscribeBaseGroupAxis()
30
- }
1
+ import {
2
+ Subject,
3
+ takeUntil,
4
+ map,
5
+ distinctUntilChanged,
6
+ shareReplay
7
+ } from 'rxjs'
8
+ import {
9
+ defineGridPlugin } from '@orbcharts/core'
10
+ import { DEFAULT_GROUP_AXIS_PARAMS } from '../defaults'
11
+ import { createBaseGroupAxis } from '../../base/BaseGroupAxis'
12
+
13
+ const pluginName = 'GroupAxis'
14
+
15
+ export const GroupAxis = defineGridPlugin(pluginName, DEFAULT_GROUP_AXIS_PARAMS)(({ selection, name, observer, subject }) => {
16
+
17
+ const destroy$ = new Subject()
18
+
19
+ const isSeriesSeprate$ = observer.fullDataFormatter$.pipe(
20
+ takeUntil(destroy$),
21
+ map(d => d.grid.separateSeries),
22
+ distinctUntilChanged(),
23
+ shareReplay(1)
24
+ )
25
+
26
+ const unsubscribeBaseGroupAxis = createBaseGroupAxis(pluginName, {
27
+ selection,
28
+ computedData$: observer.computedData$,
29
+ fullParams$: observer.fullParams$,
30
+ fullDataFormatter$: observer.fullDataFormatter$,
31
+ fullChartParams$: observer.fullChartParams$,
32
+ gridAxesTransform$: observer.gridAxesTransform$,
33
+ gridAxesReverseTransform$: observer.gridAxesReverseTransform$,
34
+ gridAxesSize$: observer.gridAxesSize$,
35
+ gridContainerPosition$: observer.gridContainerPosition$,
36
+ isSeriesSeprate$,
37
+ })
38
+
39
+ return () => {
40
+ destroy$.next(undefined)
41
+ unsubscribeBaseGroupAxis()
42
+ }
31
43
  })
@@ -1,37 +1,40 @@
1
- import {
2
- Subject } from 'rxjs'
3
- import {
4
- defineGridPlugin } from '@orbcharts/core'
5
- import { DEFAULT_LINE_AREAS_PARAMS } from '../defaults'
6
- import { createBaseLineAreas } from '../../base/BaseLineAreas'
7
-
8
- const pluginName = 'LineAreas'
9
-
10
- export const LineAreas = defineGridPlugin(pluginName, DEFAULT_LINE_AREAS_PARAMS)(({ selection, name, observer, subject }) => {
11
-
12
- const destroy$ = new Subject()
13
-
14
- const unsubscribeBaseBars = createBaseLineAreas(pluginName, {
15
- selection,
16
- computedData$: observer.computedData$,
17
- existSeriesLabels$: observer.existSeriesLabels$,
18
- SeriesDataMap$: observer.SeriesDataMap$,
19
- GroupDataMap$: observer.GroupDataMap$,
20
- fullParams$: observer.fullParams$,
21
- fullDataFormatter$: observer.fullDataFormatter$,
22
- fullChartParams$: observer.fullChartParams$,
23
- gridAxesTransform$: observer.gridAxesTransform$,
24
- gridGraphicTransform$: observer.gridGraphicTransform$,
25
- gridAxesSize$: observer.gridAxesSize$,
26
- gridHighlight$: observer.gridHighlight$,
27
- gridContainer$: observer.gridContainer$,
28
- layout$: observer.layout$,
29
- event$: subject.event$,
30
- })
31
-
32
-
33
- return () => {
34
- destroy$.next(undefined)
35
- unsubscribeBaseBars()
36
- }
1
+ import {
2
+ Subject } from 'rxjs'
3
+ import {
4
+ defineGridPlugin } from '@orbcharts/core'
5
+ import { DEFAULT_LINE_AREAS_PARAMS } from '../defaults'
6
+ import { createBaseLineAreas } from '../../base/BaseLineAreas'
7
+
8
+ const pluginName = 'LineAreas'
9
+
10
+ export const LineAreas = defineGridPlugin(pluginName, DEFAULT_LINE_AREAS_PARAMS)(({ selection, name, observer, subject }) => {
11
+
12
+ const destroy$ = new Subject()
13
+
14
+ const unsubscribeBaseBars = createBaseLineAreas(pluginName, {
15
+ selection,
16
+ computedData$: observer.computedData$,
17
+ visibleComputedData$: observer.visibleComputedData$,
18
+ computedLayoutData$: observer.computedLayoutData$,
19
+ visibleComputedLayoutData$: observer.visibleComputedLayoutData$,
20
+ seriesLabels$: observer.seriesLabels$,
21
+ SeriesDataMap$: observer.SeriesDataMap$,
22
+ GroupDataMap$: observer.GroupDataMap$,
23
+ fullParams$: observer.fullParams$,
24
+ fullDataFormatter$: observer.fullDataFormatter$,
25
+ fullChartParams$: observer.fullChartParams$,
26
+ gridAxesTransform$: observer.gridAxesTransform$,
27
+ gridGraphicTransform$: observer.gridGraphicTransform$,
28
+ gridAxesSize$: observer.gridAxesSize$,
29
+ gridHighlight$: observer.gridHighlight$,
30
+ gridContainerPosition$: observer.gridContainerPosition$,
31
+ layout$: observer.layout$,
32
+ event$: subject.event$,
33
+ })
34
+
35
+
36
+ return () => {
37
+ destroy$.next(undefined)
38
+ unsubscribeBaseBars()
39
+ }
37
40
  })
@@ -1,36 +1,39 @@
1
- import {
2
- Subject } from 'rxjs'
3
- import {
4
- defineGridPlugin } from '@orbcharts/core'
5
- import { DEFAULT_LINES_PARAMS } from '../defaults'
6
- import { createBaseLines } from '../../base/BaseLines'
7
-
8
- const pluginName = 'Lines'
9
-
10
- export const Lines = defineGridPlugin(pluginName, DEFAULT_LINES_PARAMS)(({ selection, name, observer, subject }) => {
11
-
12
- const destroy$ = new Subject()
13
-
14
- const unsubscribeBaseBars = createBaseLines(pluginName, {
15
- selection,
16
- computedData$: observer.computedData$,
17
- existSeriesLabels$: observer.existSeriesLabels$,
18
- SeriesDataMap$: observer.SeriesDataMap$,
19
- GroupDataMap$: observer.GroupDataMap$,
20
- fullParams$: observer.fullParams$,
21
- fullDataFormatter$: observer.fullDataFormatter$,
22
- fullChartParams$: observer.fullChartParams$,
23
- gridAxesTransform$: observer.gridAxesTransform$,
24
- gridGraphicTransform$: observer.gridGraphicTransform$,
25
- gridAxesSize$: observer.gridAxesSize$,
26
- gridHighlight$: observer.gridHighlight$,
27
- gridContainer$: observer.gridContainer$,
28
- event$: subject.event$,
29
- })
30
-
31
-
32
- return () => {
33
- destroy$.next(undefined)
34
- unsubscribeBaseBars()
35
- }
1
+ import {
2
+ Subject } from 'rxjs'
3
+ import {
4
+ defineGridPlugin } from '@orbcharts/core'
5
+ import { DEFAULT_LINES_PARAMS } from '../defaults'
6
+ import { createBaseLines } from '../../base/BaseLines'
7
+
8
+ const pluginName = 'Lines'
9
+
10
+ export const Lines = defineGridPlugin(pluginName, DEFAULT_LINES_PARAMS)(({ selection, name, observer, subject }) => {
11
+
12
+ const destroy$ = new Subject()
13
+
14
+ const unsubscribeBaseBars = createBaseLines(pluginName, {
15
+ selection,
16
+ computedData$: observer.computedData$,
17
+ computedLayoutData$: observer.computedLayoutData$,
18
+ visibleComputedData$: observer.visibleComputedData$,
19
+ visibleComputedLayoutData$: observer.visibleComputedLayoutData$,
20
+ seriesLabels$: observer.seriesLabels$,
21
+ SeriesDataMap$: observer.SeriesDataMap$,
22
+ GroupDataMap$: observer.GroupDataMap$,
23
+ fullParams$: observer.fullParams$,
24
+ fullDataFormatter$: observer.fullDataFormatter$,
25
+ fullChartParams$: observer.fullChartParams$,
26
+ gridAxesTransform$: observer.gridAxesTransform$,
27
+ gridGraphicTransform$: observer.gridGraphicTransform$,
28
+ gridAxesSize$: observer.gridAxesSize$,
29
+ gridHighlight$: observer.gridHighlight$,
30
+ gridContainerPosition$: observer.gridContainerPosition$,
31
+ event$: subject.event$,
32
+ })
33
+
34
+
35
+ return () => {
36
+ destroy$.next(undefined)
37
+ unsubscribeBaseBars()
38
+ }
36
39
  })
@@ -1,175 +1,174 @@
1
- import * as d3 from 'd3'
2
- import {
3
- Observable,
4
- combineLatest,
5
- switchMap,
6
- distinctUntilChanged,
7
- first,
8
- map,
9
- takeUntil,
10
- debounceTime,
11
- Subject } from 'rxjs'
12
- import type { DataFormatterGrid } from '@orbcharts/core'
13
- import {
14
- defineGridPlugin } from '@orbcharts/core'
15
- import { DEFAULT_SCALING_AREA_PARAMS } from '../defaults'
16
- import { getClassName, getUniID } from '../../utils/orbchartsUtils'
17
- import { createAxisPointScale, createAxisLinearScale } from '@orbcharts/core'
18
-
19
- const pluginName = 'ScalingArea'
20
- const rectClassName = getClassName(pluginName, 'rect')
21
-
22
- export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PARAMS)(({ selection, rootSelection, name, observer, subject }) => {
23
-
24
- const destroy$ = new Subject()
25
-
26
- const rootRectSelection: d3.Selection<SVGRectElement, any, any, any> = rootSelection
27
- .insert('rect', 'g')
28
- .classed(rectClassName, true)
29
- .attr('opacity', 0)
30
- // .attr('pointer-events', 'none')
31
- // .attr('clip-path', 'url(#bpcharts__clipPath-box)')
32
- // const dataAreaSelection: d3.Selection<SVGGElement, any, any, any> = axisSelection.append('g')
33
-
34
- // 紀錄zoom最後一次的transform
35
- let lastTransform = {
36
- k: 1,
37
- x: 0,
38
- y: 0
39
- }
40
-
41
- observer.layout$.pipe(
42
- takeUntil(destroy$),
43
- ).subscribe(d => {
44
- rootRectSelection
45
- .attr('width', d.width)
46
- .attr('height', d.height)
47
- .attr('x', d.left)
48
- .attr('y', d.top)
49
- })
50
-
51
- const groupMaxIndex$ = observer.computedData$.pipe(
52
- map(d => d[0] ? d[0].length - 1 : 0),
53
- distinctUntilChanged()
54
- )
55
-
56
- // const fullDataFormatterEvent$: Subject<DataFormatterGrid> = new Subject()
57
- // fullDataFormatterEvent$
58
- // .pipe(
59
- // takeUntil(destroy$),
60
- // debounceTime(50)
61
- // )
62
- // .subscribe(fullDataFormatter => {
63
- // store.fullDataFormatter$.next(fullDataFormatter)
64
- // })
65
-
66
- combineLatest({
67
- initGroupAxis: observer.fullDataFormatter$.pipe(
68
- map(d => d.grid.groupAxis),
69
- // 只用第一次資料來計算scale才不會造成每次變動都受到影響
70
- first()
71
- ),
72
- // fullDataFormatter: fullDataFormatter$.pipe(first()), // 只用第一次資料來計算scale才不會造成每次變動都受到影響
73
- fullDataFormatter: observer.fullDataFormatter$,
74
- groupMaxIndex: groupMaxIndex$,
75
- layout: observer.layout$,
76
- axisSize: observer.gridAxesSize$
77
- }).pipe(
78
- takeUntil(destroy$),
79
- // 轉換後會退訂前一個未完成的訂閱事件,因此可以取到「同時間」最後一次的訂閱事件
80
- switchMap(async (d) => d),
81
- ).subscribe(data => {
82
- const groupMin = 0
83
- const groupMax = data.groupMaxIndex
84
- const groupScaleDomainMin = data.initGroupAxis.scaleDomain[0] === 'auto'
85
- ? groupMin - data.initGroupAxis.scalePadding
86
- : data.initGroupAxis.scaleDomain[0] as number - data.initGroupAxis.scalePadding
87
- const groupScaleDomainMax = data.initGroupAxis.scaleDomain[1] === 'auto'
88
- ? groupMax + data.initGroupAxis.scalePadding
89
- : data.initGroupAxis.scaleDomain[1] as number + data.initGroupAxis.scalePadding
90
-
91
- // const scaleRange: [number, number] = data.fullDataFormatter.grid.valueAxis.position === 'left' || data.fullDataFormatter.grid.valueAxis.position === 'top'
92
- // ? [0, 1]
93
- // : [1, 0]
94
-
95
- const groupScale: d3.ScaleLinear<number, number> = createAxisLinearScale({
96
- maxValue: data.groupMaxIndex,
97
- minValue: 0,
98
- axisWidth: data.axisSize.width,
99
- scaleDomain: [groupScaleDomainMin, groupScaleDomainMax],
100
- // scaleDomain: [groupMin, groupMax],
101
- scaleRange: [0, 1]
102
- })
103
-
104
- const shadowScale = groupScale.copy()
105
-
106
- const zoom = d3.zoom()
107
- // .scaleExtent([1, data.groupMaxIndex])
108
- // .translateExtent([[0, 0], [data.layout.rootWidth, data.layout.rootWidth]])
109
- .on("zoom", function zoomed(event) {
110
- // debugger
111
- // console.log('event', event)
112
- const t = event.transform;
113
- // console.log('t', t)
114
- const mapGroupindex = (d: number) => {
115
- const n = Math.round(d)
116
- return Math.min(groupMax, Math.max(groupMin, n));
117
- }
118
- const zoomedDomain = data.fullDataFormatter.grid.groupAxis.position === 'bottom' || data.fullDataFormatter.grid.groupAxis.position === 'top'
119
- ? t.rescaleX(shadowScale)
120
- .domain()
121
- .map(mapGroupindex)
122
- : t.rescaleY(shadowScale)
123
- .domain()
124
- .map(mapGroupindex)
125
-
126
- // domain超過極限值
127
- if (zoomedDomain[0] <= groupMin && zoomedDomain[1] >= groupMax) {
128
- // 繼續縮小
129
- if (t.k < lastTransform.k) {
130
- // 維持前一次的transform
131
- t.k = lastTransform.k
132
- t.x = lastTransform.x
133
- t.y = lastTransform.y
134
- }
135
- // domain間距小於1
136
- } else if ((zoomedDomain[1] - zoomedDomain[0]) <= 1) {
137
- // 繼續放大
138
- if (t.k > lastTransform.k) {
139
- // 維持前一次的transform
140
- t.k = lastTransform.k
141
- t.x = lastTransform.x
142
- t.y = lastTransform.y
143
- }
144
- }
145
- // 紀錄transform
146
- lastTransform.k = t.k
147
- lastTransform.x = t.x
148
- lastTransform.y = t.y
149
- // console.log(String(data.fullDataFormatter.visibleFilter))
150
- // console.log('zoomedDomain', zoomedDomain)
151
-
152
- const newDataFormatter: DataFormatterGrid = {
153
- ...data.fullDataFormatter,
154
- grid: {
155
- ...data.fullDataFormatter.grid,
156
- groupAxis: {
157
- ...data.fullDataFormatter.grid.groupAxis,
158
- scaleDomain: zoomedDomain
159
- }
160
- },
161
- }
162
- subject.dataFormatter$.next(newDataFormatter)
163
- })
164
-
165
- // 傳入外層selection
166
- // subject.selection.call(zoom as any)
167
- rootSelection.call(zoom as any)
168
-
169
- })
170
-
171
- return () => {
172
- destroy$.next(undefined)
173
- rootRectSelection.remove()
174
- }
1
+ import * as d3 from 'd3'
2
+ import {
3
+ Observable,
4
+ combineLatest,
5
+ switchMap,
6
+ distinctUntilChanged,
7
+ first,
8
+ map,
9
+ takeUntil,
10
+ debounceTime,
11
+ Subject } from 'rxjs'
12
+ import type { DataFormatterGrid } from '@orbcharts/core'
13
+ import {
14
+ defineGridPlugin } from '@orbcharts/core'
15
+ import { DEFAULT_SCALING_AREA_PARAMS } from '../defaults'
16
+ import { getClassName, getUniID } from '../../utils/orbchartsUtils'
17
+ import { createAxisPointScale, createAxisLinearScale } from '@orbcharts/core'
18
+
19
+ const pluginName = 'ScalingArea'
20
+ const rectClassName = getClassName(pluginName, 'rect')
21
+
22
+ export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PARAMS)(({ selection, rootSelection, name, observer, subject }) => {
23
+
24
+ const destroy$ = new Subject()
25
+
26
+ const rootRectSelection: d3.Selection<SVGRectElement, any, any, any> = rootSelection
27
+ .insert('rect', 'g')
28
+ .classed(rectClassName, true)
29
+ .attr('opacity', 0)
30
+ // .attr('pointer-events', 'none')
31
+ // .attr('clip-path', 'url(#bpcharts__clipPath-box)')
32
+ // const dataAreaSelection: d3.Selection<SVGGElement, any, any, any> = axisSelection.append('g')
33
+
34
+ // 紀錄zoom最後一次的transform
35
+ let lastTransform = {
36
+ k: 1,
37
+ x: 0,
38
+ y: 0
39
+ }
40
+
41
+ observer.layout$.pipe(
42
+ takeUntil(destroy$),
43
+ ).subscribe(d => {
44
+ rootRectSelection
45
+ .attr('width', d.width)
46
+ .attr('height', d.height)
47
+ .attr('x', d.left)
48
+ .attr('y', d.top)
49
+ })
50
+
51
+ const groupMaxIndex$ = observer.computedData$.pipe(
52
+ map(d => d[0] ? d[0].length - 1 : 0),
53
+ distinctUntilChanged()
54
+ )
55
+
56
+ // const fullDataFormatterEvent$: Subject<DataFormatterGrid> = new Subject()
57
+ // fullDataFormatterEvent$
58
+ // .pipe(
59
+ // takeUntil(destroy$),
60
+ // debounceTime(50)
61
+ // )
62
+ // .subscribe(fullDataFormatter => {
63
+ // store.fullDataFormatter$.next(fullDataFormatter)
64
+ // })
65
+
66
+ combineLatest({
67
+ initGroupAxis: observer.fullDataFormatter$.pipe(
68
+ map(d => d.grid.groupAxis),
69
+ // 只用第一次資料來計算scale才不會造成每次變動都受到影響
70
+ first()
71
+ ),
72
+ // fullDataFormatter: fullDataFormatter$.pipe(first()), // 只用第一次資料來計算scale才不會造成每次變動都受到影響
73
+ fullDataFormatter: observer.fullDataFormatter$,
74
+ groupMaxIndex: groupMaxIndex$,
75
+ layout: observer.layout$,
76
+ axisSize: observer.gridAxesSize$
77
+ }).pipe(
78
+ takeUntil(destroy$),
79
+ switchMap(async (d) => d),
80
+ ).subscribe(data => {
81
+ const groupMin = 0
82
+ const groupMax = data.groupMaxIndex
83
+ const groupScaleDomainMin = data.initGroupAxis.scaleDomain[0] === 'auto'
84
+ ? groupMin - data.initGroupAxis.scalePadding
85
+ : data.initGroupAxis.scaleDomain[0] as number - data.initGroupAxis.scalePadding
86
+ const groupScaleDomainMax = data.initGroupAxis.scaleDomain[1] === 'auto'
87
+ ? groupMax + data.initGroupAxis.scalePadding
88
+ : data.initGroupAxis.scaleDomain[1] as number + data.initGroupAxis.scalePadding
89
+
90
+ // const scaleRange: [number, number] = data.fullDataFormatter.grid.valueAxis.position === 'left' || data.fullDataFormatter.grid.valueAxis.position === 'top'
91
+ // ? [0, 1]
92
+ // : [1, 0]
93
+
94
+ const groupScale: d3.ScaleLinear<number, number> = createAxisLinearScale({
95
+ maxValue: data.groupMaxIndex,
96
+ minValue: 0,
97
+ axisWidth: data.axisSize.width,
98
+ scaleDomain: [groupScaleDomainMin, groupScaleDomainMax],
99
+ // scaleDomain: [groupMin, groupMax],
100
+ scaleRange: [0, 1]
101
+ })
102
+
103
+ const shadowScale = groupScale.copy()
104
+
105
+ const zoom = d3.zoom()
106
+ // .scaleExtent([1, data.groupMaxIndex])
107
+ // .translateExtent([[0, 0], [data.layout.rootWidth, data.layout.rootWidth]])
108
+ .on("zoom", function zoomed(event) {
109
+ // debugger
110
+ // console.log('event', event)
111
+ const t = event.transform;
112
+ // console.log('t', t)
113
+ const mapGroupindex = (d: number) => {
114
+ const n = Math.round(d)
115
+ return Math.min(groupMax, Math.max(groupMin, n));
116
+ }
117
+ const zoomedDomain = data.fullDataFormatter.grid.groupAxis.position === 'bottom' || data.fullDataFormatter.grid.groupAxis.position === 'top'
118
+ ? t.rescaleX(shadowScale)
119
+ .domain()
120
+ .map(mapGroupindex)
121
+ : t.rescaleY(shadowScale)
122
+ .domain()
123
+ .map(mapGroupindex)
124
+
125
+ // domain超過極限值
126
+ if (zoomedDomain[0] <= groupMin && zoomedDomain[1] >= groupMax) {
127
+ // 繼續縮小
128
+ if (t.k < lastTransform.k) {
129
+ // 維持前一次的transform
130
+ t.k = lastTransform.k
131
+ t.x = lastTransform.x
132
+ t.y = lastTransform.y
133
+ }
134
+ // domain間距小於1
135
+ } else if ((zoomedDomain[1] - zoomedDomain[0]) <= 1) {
136
+ // 繼續放大
137
+ if (t.k > lastTransform.k) {
138
+ // 維持前一次的transform
139
+ t.k = lastTransform.k
140
+ t.x = lastTransform.x
141
+ t.y = lastTransform.y
142
+ }
143
+ }
144
+ // 紀錄transform
145
+ lastTransform.k = t.k
146
+ lastTransform.x = t.x
147
+ lastTransform.y = t.y
148
+ // console.log(String(data.fullDataFormatter.visibleFilter))
149
+ // console.log('zoomedDomain', zoomedDomain)
150
+
151
+ const newDataFormatter: DataFormatterGrid = {
152
+ ...data.fullDataFormatter,
153
+ grid: {
154
+ ...data.fullDataFormatter.grid,
155
+ groupAxis: {
156
+ ...data.fullDataFormatter.grid.groupAxis,
157
+ scaleDomain: zoomedDomain
158
+ }
159
+ },
160
+ }
161
+ subject.dataFormatter$.next(newDataFormatter)
162
+ })
163
+
164
+ // 傳入外層selection
165
+ // subject.selection.call(zoom as any)
166
+ rootSelection.call(zoom as any)
167
+
168
+ })
169
+
170
+ return () => {
171
+ destroy$.next(undefined)
172
+ rootRectSelection.remove()
173
+ }
175
174
  })
@@ -1,32 +1,44 @@
1
- import {
2
- Subject } from 'rxjs'
3
- import {
4
- defineGridPlugin } from '@orbcharts/core'
5
- import { DEFAULT_VALUE_AXIS_PARAMS } from '../defaults'
6
-
7
- import { createBaseValueAxis } from '../../base/BaseValueAxis'
8
-
9
- const pluginName = 'ValueAxis'
10
-
11
- export const ValueAxis = defineGridPlugin(pluginName, DEFAULT_VALUE_AXIS_PARAMS)(({ selection, name, observer, subject }) => {
12
-
13
- const destroy$ = new Subject()
14
-
15
- const unsubscribeBaseValueAxis = createBaseValueAxis(pluginName, {
16
- selection,
17
- computedData$: observer.computedData$,
18
- fullParams$: observer.fullParams$,
19
- fullDataFormatter$: observer.fullDataFormatter$,
20
- fullChartParams$: observer.fullChartParams$,
21
- gridAxesTransform$: observer.gridAxesTransform$,
22
- gridAxesReverseTransform$: observer.gridAxesReverseTransform$,
23
- gridAxesSize$: observer.gridAxesSize$,
24
- gridContainer$: observer.gridContainer$,
25
- isSeriesPositionSeprate$: observer.isSeriesPositionSeprate$,
26
- })
27
-
28
- return () => {
29
- destroy$.next(undefined)
30
- unsubscribeBaseValueAxis()
31
- }
1
+ import {
2
+ Subject,
3
+ takeUntil,
4
+ map,
5
+ distinctUntilChanged,
6
+ shareReplay
7
+ } from 'rxjs'
8
+ import {
9
+ defineGridPlugin } from '@orbcharts/core'
10
+ import { DEFAULT_VALUE_AXIS_PARAMS } from '../defaults'
11
+
12
+ import { createBaseValueAxis } from '../../base/BaseValueAxis'
13
+
14
+ const pluginName = 'ValueAxis'
15
+
16
+ export const ValueAxis = defineGridPlugin(pluginName, DEFAULT_VALUE_AXIS_PARAMS)(({ selection, name, observer, subject }) => {
17
+
18
+ const destroy$ = new Subject()
19
+
20
+ const isSeriesSeprate$ = observer.fullDataFormatter$.pipe(
21
+ takeUntil(destroy$),
22
+ map(d => d.grid.separateSeries),
23
+ distinctUntilChanged(),
24
+ shareReplay(1)
25
+ )
26
+
27
+ const unsubscribeBaseValueAxis = createBaseValueAxis(pluginName, {
28
+ selection,
29
+ computedData$: observer.computedData$,
30
+ fullParams$: observer.fullParams$,
31
+ fullDataFormatter$: observer.fullDataFormatter$,
32
+ fullChartParams$: observer.fullChartParams$,
33
+ gridAxesTransform$: observer.gridAxesTransform$,
34
+ gridAxesReverseTransform$: observer.gridAxesReverseTransform$,
35
+ gridAxesSize$: observer.gridAxesSize$,
36
+ gridContainerPosition$: observer.gridContainerPosition$,
37
+ isSeriesSeprate$,
38
+ })
39
+
40
+ return () => {
41
+ destroy$.next(undefined)
42
+ unsubscribeBaseValueAxis()
43
+ }
32
44
  })