@orbcharts/core 3.0.0-alpha.36 → 3.0.0-alpha.38

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 (53) hide show
  1. package/dist/orbcharts-core.es.js +1753 -1664
  2. package/dist/orbcharts-core.umd.js +2 -2
  3. package/dist/src/grid/gridObservables.d.ts +1 -1
  4. package/dist/src/series/seriesObservables.d.ts +1 -8
  5. package/dist/src/tree/treeObservables.d.ts +13 -0
  6. package/dist/src/types/ChartParams.d.ts +1 -1
  7. package/dist/src/types/ComputedData.d.ts +13 -0
  8. package/dist/src/types/ComputedDataGrid.d.ts +2 -5
  9. package/dist/src/types/ComputedDataMultiValue.d.ts +2 -2
  10. package/dist/src/types/ComputedDataRelationship.d.ts +2 -2
  11. package/dist/src/types/ComputedDataTree.d.ts +2 -2
  12. package/dist/src/types/ContextObserverGrid.d.ts +1 -1
  13. package/dist/src/types/ContextObserverTree.d.ts +6 -0
  14. package/dist/src/types/DataFormatterMultiGrid.d.ts +1 -3
  15. package/dist/src/types/DataFormatterMultiValue.d.ts +0 -1
  16. package/dist/src/types/DataFormatterSeries.d.ts +0 -2
  17. package/dist/src/types/DataFormatterTree.d.ts +1 -0
  18. package/dist/src/types/DataMultiValue.d.ts +1 -0
  19. package/dist/src/types/DataRelationship.d.ts +1 -0
  20. package/dist/src/types/DataTree.d.ts +2 -0
  21. package/dist/src/types/Event.d.ts +30 -38
  22. package/dist/src/utils/observables.d.ts +7 -4
  23. package/package.json +1 -1
  24. package/src/defaults.ts +5 -3
  25. package/src/grid/createGridContextObserver.ts +3 -3
  26. package/src/grid/gridObservables.ts +1 -1
  27. package/src/multiGrid/multiGridObservables.ts +3 -3
  28. package/src/multiValue/computeMultiValueData.ts +7 -2
  29. package/src/relationship/computeRelationshipData.ts +3 -0
  30. package/src/series/createSeriesContextObserver.ts +1 -1
  31. package/src/series/seriesObservables.ts +8 -7
  32. package/src/tree/computeTreeData.ts +31 -9
  33. package/src/tree/createTreeContextObserver.ts +44 -0
  34. package/src/tree/treeObservables.ts +95 -0
  35. package/src/types/ChartParams.ts +1 -1
  36. package/src/types/ComputedData.ts +18 -1
  37. package/src/types/ComputedDataGrid.ts +5 -5
  38. package/src/types/ComputedDataMultiValue.ts +2 -3
  39. package/src/types/ComputedDataRelationship.ts +2 -2
  40. package/src/types/ComputedDataTree.ts +2 -2
  41. package/src/types/ContextObserverGrid.ts +1 -1
  42. package/src/types/ContextObserverMultiGrid.ts +1 -1
  43. package/src/types/ContextObserverTree.ts +6 -1
  44. package/src/types/DataFormatterMultiGrid.ts +2 -2
  45. package/src/types/DataFormatterMultiValue.ts +1 -1
  46. package/src/types/DataFormatterSeries.ts +2 -2
  47. package/src/types/DataFormatterTree.ts +1 -0
  48. package/src/types/DataMultiValue.ts +1 -0
  49. package/src/types/DataRelationship.ts +1 -0
  50. package/src/types/DataTree.ts +2 -0
  51. package/src/types/Event.ts +85 -46
  52. package/src/utils/d3Utils.ts +0 -1
  53. package/src/utils/observables.ts +60 -77
@@ -0,0 +1,95 @@
1
+ import {
2
+ combineLatest,
3
+ distinctUntilChanged,
4
+ filter,
5
+ map,
6
+ merge,
7
+ takeUntil,
8
+ shareReplay,
9
+ switchMap,
10
+ Subject,
11
+ Observable } from 'rxjs'
12
+ import type {
13
+ ChartParams,
14
+ ComputedDataTree,
15
+ ComputedDataTypeMap,
16
+ DataFormatterTree } from '../types'
17
+
18
+
19
+ // 所有節點list結構
20
+ export const nodeListObservable = ({ computedData$ }: { computedData$: Observable<ComputedDataTree> }) => {
21
+ return computedData$.pipe(
22
+ map(data => {
23
+ function setNodeList (accNodeList: ComputedDataTree[], branch: ComputedDataTree) {
24
+ accNodeList.push(branch)
25
+ if (branch.children) {
26
+ branch.children.forEach(childBranch => {
27
+ accNodeList = setNodeList(accNodeList, childBranch) // 遞迴子節點
28
+ })
29
+ }
30
+ return accNodeList
31
+ }
32
+ return setNodeList([], data)
33
+ })
34
+ )
35
+ }
36
+
37
+ export const existCategoryLabelsObservable = ({ nodeList$, fullDataFormatter$ }: {
38
+ nodeList$: Observable<ComputedDataTree[]>
39
+ fullDataFormatter$: Observable<DataFormatterTree>
40
+ }) => {
41
+
42
+ const categoryLabels$ = fullDataFormatter$.pipe(
43
+ map(d => d.categoryLabels),
44
+ distinctUntilChanged((a, b) => {
45
+ return JSON.stringify(a).length === JSON.stringify(b).length
46
+ }),
47
+ )
48
+
49
+ return combineLatest({
50
+ nodeList: nodeList$,
51
+ categoryLabels: categoryLabels$
52
+ }).pipe(
53
+ switchMap(async d => d),
54
+ map(data => {
55
+ const CurrentLabelSet = new Set(data.categoryLabels)
56
+ const ExistLabelSet = new Set(
57
+ data.nodeList.filter(node => node.visible).map(node => node.categoryLabel)
58
+ )
59
+ // 加入已存在的label(data.nodeList有,但是dataFormatter.categoryLabels沒有)
60
+ Array.from(ExistLabelSet).forEach(label => {
61
+ if (!CurrentLabelSet.has(label)) {
62
+ CurrentLabelSet.add(label)
63
+ }
64
+ })
65
+ // 移除不存在的label(dataFormatter.categoryLabels有,但是data.nodeList沒有)
66
+ Array.from(CurrentLabelSet).forEach(label => {
67
+ if (!ExistLabelSet.has(label)) {
68
+ ExistLabelSet.delete(label)
69
+ }
70
+ })
71
+
72
+ return Array.from(CurrentLabelSet)
73
+ }),
74
+ distinctUntilChanged((a, b) => {
75
+ return JSON.stringify(a).length === JSON.stringify(b).length
76
+ }),
77
+ )
78
+ }
79
+
80
+ // 所有可見的節點
81
+ export const treeVisibleComputedDataObservable = ({ computedData$ }: { computedData$: Observable<ComputedDataTree> }) => {
82
+ return computedData$.pipe(
83
+ map(data => {
84
+ function filterChildren (accTree: ComputedDataTree) {
85
+ if (accTree.children) {
86
+ accTree.children = accTree.children
87
+ .filter(child => child.visible) // 篩選visible
88
+ .map(child => filterChildren(child)) // 遞迴子節點
89
+ }
90
+ return accTree
91
+ }
92
+ return filterChildren(data)
93
+ })
94
+ )
95
+ }
@@ -33,7 +33,7 @@ function test (): ChartParamsPartial {
33
33
  }
34
34
  }
35
35
 
36
- export type HighlightTarget = 'series' | 'group' | 'datum' | 'none'
36
+ export type HighlightTarget = 'series' | 'group' | 'category' | 'datum' | 'none'
37
37
 
38
38
  export interface Styles {
39
39
  textSize: number
@@ -40,13 +40,30 @@ export interface ComputedDatumBase {
40
40
  // axisY: number
41
41
  // }
42
42
 
43
- // datum - 序列顏色
43
+ // datum - 序列資料
44
44
  export interface ComputedDatumSeriesValue {
45
45
  color: string
46
46
  seriesIndex: number
47
47
  seriesLabel: string
48
48
  }
49
49
 
50
+ // datum - 矩陣資料
51
+ export interface ComputedDatumGridValue {
52
+ gridIndex: number
53
+ color: string
54
+ seriesIndex: number
55
+ seriesLabel: string
56
+ groupIndex: number
57
+ groupLabel: string
58
+ }
59
+
60
+ // datum - 類別資料
61
+ export interface ComputedDatumCategoryValue {
62
+ color: string
63
+ categoryIndex: number
64
+ categoryLabel: string | null
65
+ }
66
+
50
67
  // 透過類型選擇ComputedData
51
68
  export type ComputedDataTypeMap<T extends ChartType> = T extends 'series' ? ComputedDataSeries
52
69
  : T extends 'grid' ? ComputedDataGrid
@@ -1,11 +1,11 @@
1
- import { ComputedDatumBase, ComputedDatumSeriesValue } from './ComputedData'
1
+ import { ComputedDatumBase, ComputedDatumGridValue } from './ComputedData'
2
2
 
3
3
  export interface ComputedDatumGrid
4
- extends ComputedDatumBase, ComputedDatumSeriesValue {
4
+ extends ComputedDatumBase, ComputedDatumGridValue {
5
5
  // accSeriesIndex: number // 每一個grid累加的seriesIndex
6
- gridIndex: number
7
- groupIndex: number
8
- groupLabel: string
6
+ // gridIndex: number
7
+ // groupIndex: number
8
+ // groupLabel: string
9
9
  axisX: number
10
10
  axisY: number
11
11
  axisYFromZero: number
@@ -1,9 +1,8 @@
1
- import type { ComputedDatumBase } from './ComputedData'
1
+ import type { ComputedDatumBase, ComputedDatumCategoryValue } from './ComputedData'
2
2
 
3
3
  export type ComputedDataMultiValue = ComputedDatumMultiValue[][]
4
4
 
5
- export interface ComputedDatumMultiValue
6
- extends ComputedDatumBase {
5
+ export interface ComputedDatumMultiValue extends ComputedDatumBase, ComputedDatumCategoryValue {
7
6
  axis: number
8
7
  }
9
8
 
@@ -1,11 +1,11 @@
1
- import type { ComputedDatumBase } from './ComputedData'
1
+ import type { ComputedDatumBase, ComputedDatumCategoryValue } from './ComputedData'
2
2
 
3
3
  export type ComputedDataRelationship = {
4
4
  nodes: ComputedNode[]
5
5
  edges: ComputedEdge[]
6
6
  }
7
7
 
8
- export interface ComputedNode extends ComputedDatumBase {
8
+ export interface ComputedNode extends ComputedDatumBase, ComputedDatumCategoryValue {
9
9
  startNodes: ComputedNode[]
10
10
  startNodeIds: string[]
11
11
  endNodes: ComputedNode[]
@@ -1,4 +1,4 @@
1
- import type { ComputedDatumBase } from './ComputedData'
1
+ import type { ComputedDatumBase, ComputedDatumCategoryValue } from './ComputedData'
2
2
 
3
3
  // export type ComputedDataTree = ComputedDataTreeDatum[]
4
4
 
@@ -13,7 +13,7 @@ import type { ComputedDatumBase } from './ComputedData'
13
13
  // }
14
14
 
15
15
  // 樹狀結構
16
- export interface ComputedDataTree extends ComputedDatumBase {
16
+ export interface ComputedDataTree extends ComputedDatumBase, ComputedDatumCategoryValue {
17
17
  level: number
18
18
  seq: number
19
19
  children?: ComputedDataTree[]
@@ -18,7 +18,7 @@ export interface ContextObserverGridDetail {
18
18
  gridGraphicReverseScale$: Observable<[number, number][]>
19
19
  gridAxesSize$: Observable<{ width: number; height: number; }>
20
20
  gridHighlight$: Observable<string[]>
21
- existedSeriesLabels$: Observable<string[]>
21
+ existSeriesLabels$: Observable<string[]>
22
22
  SeriesDataMap$: Observable<Map<string, ComputedDatumGrid[]>>
23
23
  GroupDataMap$: Observable<Map<string, ComputedDatumGrid[]>>
24
24
  visibleComputedData$: Observable<ComputedDataGrid>
@@ -19,7 +19,7 @@ export interface ContextObserverMultiGrid<PluginParams> extends ContextObserverB
19
19
  // gridGraphicReverseScale$: Observable<[number, number][]>
20
20
  // gridAxesSize$: Observable<{ width: number; height: number; }>
21
21
  // gridHighlight$: Observable<string[]>
22
- // existedSeriesLabels$: Observable<string[]>
22
+ // existSeriesLabels$: Observable<string[]>
23
23
  // SeriesDataMap$: Observable<Map<string, ComputedDatumGrid[]>>
24
24
  // GroupDataMap$: Observable<Map<string, ComputedDatumGrid[]>>
25
25
  // visibleComputedData$: Observable<ComputedDataGrid>
@@ -1,5 +1,10 @@
1
+ import { Observable } from 'rxjs'
1
2
  import type { ContextObserverBase } from './ContextObserver'
3
+ import type { ComputedDataTree } from './ComputedDataTree'
2
4
 
3
5
  export interface ContextObserverTree<PluginParams> extends ContextObserverBase<'tree', PluginParams> {
4
-
6
+ treeHighlight$: Observable<string[]>
7
+ existCategoryLabels$: Observable<string[]>
8
+ CategoryDataMap$: Observable<Map<string, ComputedDataTree[]>>
9
+ visibleComputedData$: Observable<ComputedDataTree>
5
10
  }
@@ -9,13 +9,13 @@ import type {
9
9
  import type { AxisPosition } from './Axis'
10
10
 
11
11
  export interface DataFormatterMultiGrid extends DataFormatterBase<'multiGrid'> {
12
- visibleFilter: VisibleFilter<'multiGrid'>
12
+ // visibleFilter: VisibleFilter<'multiGrid'>
13
13
  gridList: Array<DataFormatterGridGrid>
14
14
  container: DataFormatterMultiGridContainer
15
15
  }
16
16
 
17
17
  export interface DataFormatterMultiGridPartial extends DataFormatterBasePartial<'multiGrid'> {
18
- visibleFilter?: VisibleFilter<'multiGrid'>
18
+ // visibleFilter?: VisibleFilter<'multiGrid'>
19
19
  gridList?: Array<DataFormatterGridGridPartial>
20
20
  container?: Partial<DataFormatterMultiGridContainer>
21
21
  }
@@ -17,5 +17,5 @@ export interface DataFormatterMultiValuePartial extends DataFormatterBasePartial
17
17
 
18
18
  // multiValue欄位
19
19
  export interface DataFormatterMultiValueMultiValue {
20
- unitLabel: string
20
+ // unitLabel: string
21
21
  }
@@ -5,7 +5,7 @@ import { DataFormatterBase, DataFormatterBasePartial, VisibleFilter } from './Da
5
5
  export interface DataFormatterSeries extends DataFormatterBase<'series'> {
6
6
  visibleFilter: VisibleFilter<'series'>
7
7
  // series: DataFormatterSeriesSeries
8
- unitLabel: string
8
+ // unitLabel: string
9
9
  seriesLabels: string[]
10
10
  // labelFormat: (datum: DataSeriesDatum) => string
11
11
  // mapSeries: (datum: DataSeriesDatum | DataSeriesValue, rowIndex: number, columnIndex: number, context: DataFormatterContext<'series'>) => string
@@ -16,7 +16,7 @@ export interface DataFormatterSeries extends DataFormatterBase<'series'> {
16
16
 
17
17
  export interface DataFormatterSeriesPartial extends DataFormatterBasePartial<'series'> {
18
18
  // series: Partial<DataFormatterSeriesSeries>
19
- unitLabel?: string
19
+ // unitLabel?: string
20
20
  seriesLabels?: string[]
21
21
  // colorsPredicate?: (datum: DataSeriesDatum | DataSeriesValue, rowIndex: number, columnIndex: number, context: DataFormatterContext<'series'>) => string
22
22
  sort?: ((a: DataSeriesDatum | DataSeriesValue, b: DataSeriesDatum | number) => number) | null
@@ -6,6 +6,7 @@ export interface DataFormatterTree
6
6
  visibleFilter: VisibleFilter<'tree'>
7
7
  // labelFormat: (datum: unknown) => string
8
8
  // descriptionFormat: (datum: unknown) => string
9
+ categoryLabels: string[]
9
10
  }
10
11
 
11
12
  export type DataFormatterTreePartial = Partial<DataFormatterTree>
@@ -6,6 +6,7 @@ export type DataMultiValue = (DataMultiValueDatum | DataMultiValueValue)[][]
6
6
  export type DataMultiValueValue = number
7
7
 
8
8
  export interface DataMultiValueDatum extends DatumBase, DatumValue {
9
+ categoryLabel?: string
9
10
  }
10
11
 
11
12
 
@@ -18,6 +18,7 @@ export type DataRelationshipList = [
18
18
  export interface Node extends DatumBase {
19
19
  id: string
20
20
  value?: number
21
+ categoryLabel?: string
21
22
  }
22
23
 
23
24
  export interface Edge extends DatumBase {
@@ -7,6 +7,7 @@ export interface DataTreeObj extends DatumBase {
7
7
  id: string
8
8
  value?: number
9
9
  children?: DataTreeObj[]
10
+ categoryLabel?: string
10
11
  }
11
12
 
12
13
  // 陣列資料
@@ -14,5 +15,6 @@ export interface DataTreeDatum extends DatumBase {
14
15
  id: string
15
16
  value?: number
16
17
  parent?: string
18
+ categoryLabel?: string
17
19
  }
18
20
 
@@ -5,7 +5,7 @@ import type { ComputedDataSeries, ComputedDatumSeries } from './ComputedDataSeri
5
5
  import type { ComputedDataGrid, ComputedDatumGrid } from './ComputedDataGrid'
6
6
  import type { ComputedDataMultiGrid } from './ComputedDataMultiGrid'
7
7
  import type { ComputedDataMultiValue, ComputedDatumMultiValue } from './ComputedDataMultiValue'
8
- import type { ComputedNode } from './ComputedDataRelationship'
8
+ import type { ComputedDataRelationship, ComputedNode } from './ComputedDataRelationship'
9
9
  import type { ComputedDataTree } from './ComputedDataTree'
10
10
  import type { HighlightTarget } from './ChartParams'
11
11
 
@@ -41,74 +41,113 @@ export type EventTypeMap<T extends ChartType> = T extends 'series' ? EventSeries
41
41
  : T extends 'multiValue' ? EventMultiValue
42
42
  : T extends 'relationship' ? EventRelationship
43
43
  : T extends 'tree' ? EventTree
44
- : EventBase
44
+ : EventBase<any>
45
45
 
46
- export interface EventBase {
46
+ export interface EventBase<T extends ChartType> {
47
+ type: T
47
48
  eventName: EventName
48
49
  pluginName: string
49
- // data: EventData
50
- type: ChartType
51
50
  event: MouseEvent | undefined
52
51
  highlightTarget: HighlightTarget
53
- datum: ComputedDatumBase | null
52
+ // datum: ComputedDatumBase | null
54
53
  tween?: number
55
54
  }
56
55
 
57
- export interface EventSeries extends EventBase {
58
- type: 'series'
59
- data: ComputedDataSeries
60
- series: ComputedDatumSeries[]
56
+ export interface EventBaseSeriesValue<DatumType, DataType> {
57
+ data: DataType
58
+ series: DatumType[]
61
59
  seriesIndex: number
62
60
  seriesLabel: string
63
- datum: ComputedDatumSeries | null
64
- // highlightTarget: 'series' | 'datum' | 'none'
65
- // highlightLabel: string | null
66
- // highlightId: string | null
61
+ datum: DatumType | null
67
62
  }
68
63
 
69
- export interface EventGrid extends EventBase {
70
- type: 'grid'
71
- data: ComputedDataGrid
72
- series: ComputedDatumGrid[]
64
+ export interface EventBaseGridValue<DatumType, DataType> {
65
+ data: DataType
66
+ gridIndex: number
67
+ series: DatumType[]
73
68
  seriesIndex: number
74
69
  seriesLabel: string
75
- groups: ComputedDatumGrid[]
70
+ groups: DatumType[]
76
71
  groupIndex: number
77
72
  groupLabel: string
78
- datum: ComputedDatumGrid | null
79
- // highlightTarget: 'series' | 'group' | 'datum' | 'none'
80
- // highlightLabel: string | null
81
- // highlightId: string | null
73
+ datum: DatumType | null
82
74
  }
83
75
 
84
- export interface EventMultiGrid extends EventBase {
85
- type: 'multiGrid'
86
- data: ComputedDataMultiGrid
87
- gridIndex: number
88
- series: ComputedDatumGrid[]
89
- seriesIndex: number
90
- seriesLabel: string
91
- group: ComputedDatumGrid[]
92
- groupIndex: number
93
- groupLabel: string
94
- datum: ComputedDatumGrid | null
95
- // highlightTarget: 'series' | 'group' | 'datum' | 'none'
96
- // highlightLabel: string | null
97
- // highlightId: string | null
76
+ export interface EventBaseCategoryValue<DatumType, DataType> {
77
+ data: DataType
78
+ category: DatumType[]
79
+ categoryIndex: number
80
+ categoryLabel: string
81
+ datum: DatumType | null
82
+ }
83
+
84
+ export interface EventSeries extends EventBase<'series'>, EventBaseSeriesValue<ComputedDatumSeries, ComputedDataSeries> {
85
+ // type: 'series'
86
+ // data: ComputedDataSeries
87
+ // series: ComputedDatumSeries[]
88
+ // seriesIndex: number
89
+ // seriesLabel: string
90
+ // datum: ComputedDatumSeries | null
91
+ // // highlightTarget: 'series' | 'datum' | 'none'
92
+ // // highlightLabel: string | null
93
+ // // highlightId: string | null
94
+ }
95
+
96
+ export interface EventGrid extends EventBase<'grid'>, EventBaseGridValue<ComputedDatumGrid, ComputedDataGrid> {
97
+ // type: 'grid'
98
+ // data: ComputedDataGrid
99
+ // series: ComputedDatumGrid[]
100
+ // seriesIndex: number
101
+ // seriesLabel: string
102
+ // groups: ComputedDatumGrid[]
103
+ // groupIndex: number
104
+ // groupLabel: string
105
+ // datum: ComputedDatumGrid | null
106
+ // // highlightTarget: 'series' | 'group' | 'datum' | 'none'
107
+ // // highlightLabel: string | null
108
+ // // highlightId: string | null
109
+ }
110
+
111
+ export interface EventMultiGrid extends EventBase<'multiGrid'>, EventBaseGridValue<ComputedDatumGrid, ComputedDataMultiGrid> {
112
+ // type: 'multiGrid'
113
+ // data: ComputedDataMultiGrid
114
+ // gridIndex: number
115
+ // series: ComputedDatumGrid[]
116
+ // seriesIndex: number
117
+ // seriesLabel: string
118
+ // group: ComputedDatumGrid[]
119
+ // groupIndex: number
120
+ // groupLabel: string
121
+ // datum: ComputedDatumGrid | null
122
+ // // highlightTarget: 'series' | 'group' | 'datum' | 'none'
123
+ // // highlightLabel: string | null
124
+ // // highlightId: string | null
98
125
  }
99
126
 
100
- export interface EventMultiValue extends EventBase {
101
- type: 'multiValue'
102
- datum: ComputedDatumMultiValue | null
127
+ export interface EventMultiValue extends EventBase<'multiValue'>, EventBaseCategoryValue<ComputedDatumMultiValue, ComputedDataMultiValue> {
128
+ // type: 'multiValue'
129
+ // data: ComputedDataMultiValue
130
+ // category: ComputedDatumMultiValue[]
131
+ // categoryIndex: number
132
+ // categoryLabel: string
133
+ // datum: ComputedDatumMultiValue | null
103
134
  }
104
135
 
105
- export interface EventRelationship extends EventBase {
106
- type: 'relationship'
107
- datum: ComputedNode | null
136
+ export interface EventRelationship extends EventBase<'relationship'>, EventBaseCategoryValue<ComputedNode, ComputedDataRelationship> {
137
+ // type: 'relationship'
138
+ // data: ComputedDataRelationship
139
+ // category: ComputedNode[]
140
+ // categoryIndex: number
141
+ // categoryLabel: string
142
+ // datum: ComputedNode | null
108
143
  }
109
144
 
110
- export interface EventTree extends EventBase {
111
- type: 'tree'
112
- datum: ComputedDataTree | null
145
+ export interface EventTree extends EventBase<'tree'>, EventBaseCategoryValue<ComputedDataTree, ComputedDataTree> {
146
+ // type: 'tree'
147
+ // data: ComputedDataTree
148
+ // category: ComputedDataTree[]
149
+ // categoryIndex: number
150
+ // categoryLabel: string
151
+ // datum: ComputedDataTree | null
113
152
  }
114
153
 
@@ -15,7 +15,6 @@ export const createAxisLinearScale = ({
15
15
  scaleDomain: [number | 'auto', number | 'auto']
16
16
  scaleRange: [number, number] // 0-1
17
17
  }) => {
18
-
19
18
  // -- 無值補上預設值 --
20
19
  const domainMin: number | 'auto' = scaleDomain[0] ?? DATA_FORMATTER_VALUE_AXIS.scaleDomain[0]
21
20
  const domainMax: number | 'auto' = scaleDomain[1] ?? DATA_FORMATTER_VALUE_AXIS.scaleDomain[1]