@orbcharts/plugins-basic 3.0.0-alpha.39 → 3.0.0-alpha.41
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.
- package/dist/orbcharts-plugins-basic.es.js +7449 -7078
- package/dist/orbcharts-plugins-basic.umd.js +12 -9
- package/dist/src/base/BaseBarStack.d.ts +1 -1
- package/dist/src/base/BaseBars.d.ts +1 -1
- package/dist/src/base/BaseBarsTriangle.d.ts +1 -1
- package/dist/src/base/BaseDots.d.ts +1 -1
- package/dist/src/base/BaseLegend.d.ts +1 -0
- package/dist/src/base/BaseLineAreas.d.ts +30 -0
- package/dist/src/base/BaseLines.d.ts +1 -1
- package/dist/src/grid/defaults.d.ts +2 -1
- package/dist/src/grid/gridObservables.d.ts +2 -2
- package/dist/src/grid/index.d.ts +1 -0
- package/dist/src/grid/plugins/LineAreas.d.ts +1 -0
- package/dist/src/grid/types.d.ts +5 -0
- package/dist/src/multiGrid/types.d.ts +1 -0
- package/dist/src/series/types.d.ts +1 -0
- package/dist/src/tree/types.d.ts +1 -0
- package/dist/src/utils/orbchartsUtils.d.ts +7 -2
- package/package.json +2 -2
- package/src/base/BaseBarStack.ts +7 -3
- package/src/base/BaseBars.ts +7 -3
- package/src/base/BaseBarsTriangle.ts +52 -135
- package/src/base/BaseDots.ts +7 -3
- package/src/base/BaseLegend.ts +16 -1
- package/src/base/BaseLineAreas.ts +625 -0
- package/src/base/BaseLines.ts +12 -12
- package/src/base/BaseValueAxis.ts +0 -1
- package/src/grid/defaults.ts +7 -0
- package/src/grid/gridObservables.ts +5 -5
- package/src/grid/index.ts +1 -0
- package/src/grid/plugins/BarStack.ts +1 -1
- package/src/grid/plugins/Bars.ts +1 -1
- package/src/grid/plugins/BarsDiverging.ts +1 -1
- package/src/grid/plugins/BarsTriangle.ts +1 -1
- package/src/grid/plugins/Dots.ts +1 -1
- package/src/grid/plugins/GroupAux.ts +8 -0
- package/src/grid/plugins/LineAreas.ts +37 -0
- package/src/grid/plugins/Lines.ts +1 -1
- package/src/grid/plugins/ScalingArea.ts +11 -7
- package/src/grid/types.ts +6 -1
- package/src/multiGrid/defaults.ts +2 -1
- package/src/multiGrid/multiGridObservables.ts +6 -6
- package/src/multiGrid/plugins/MultiBarStack.ts +1 -1
- package/src/multiGrid/plugins/MultiBars.ts +1 -1
- package/src/multiGrid/plugins/MultiBarsTriangle.ts +1 -1
- package/src/multiGrid/plugins/MultiDots.ts +1 -1
- package/src/multiGrid/plugins/MultiLines.ts +1 -1
- package/src/multiGrid/types.ts +1 -0
- package/src/noneData/defaults.ts +21 -7
- package/src/series/defaults.ts +1 -0
- package/src/series/types.ts +1 -0
- package/src/tree/defaults.ts +1 -0
- package/src/tree/plugins/TreeMap.ts +6 -4
- package/src/tree/types.ts +1 -0
- package/src/utils/orbchartsUtils.ts +22 -8
- package/tsconfig.json +1 -1
package/src/base/BaseLines.ts
CHANGED
@@ -38,7 +38,7 @@ export interface BaseLinesParams {
|
|
38
38
|
interface BaseLinesContext {
|
39
39
|
selection: d3.Selection<any, unknown, any, unknown>
|
40
40
|
computedData$: Observable<ComputedDataGrid>
|
41
|
-
|
41
|
+
existSeriesLabels$: Observable<string[]>
|
42
42
|
SeriesDataMap$: Observable<Map<string, ComputedDatumGrid[]>>
|
43
43
|
GroupDataMap$: Observable<Map<string, ComputedDatumGrid[]>>
|
44
44
|
fullDataFormatter$: Observable<DataFormatterGrid>
|
@@ -75,10 +75,6 @@ function createLinePath (lineCurve: string = 'curveLinear'): d3.Line<ComputedDat
|
|
75
75
|
.curve((d3 as any)[lineCurve])
|
76
76
|
}
|
77
77
|
|
78
|
-
// function renderGraphicG ({ selection }) {
|
79
|
-
|
80
|
-
// }
|
81
|
-
|
82
78
|
// 依無值的資料分段
|
83
79
|
function makeSegmentData (data: ComputedDatumGrid[]): ComputedDatumGrid[][] {
|
84
80
|
let segmentData: ComputedDatumGrid[][] = [[]]
|
@@ -100,7 +96,7 @@ function makeSegmentData (data: ComputedDatumGrid[]): ComputedDatumGrid[][] {
|
|
100
96
|
}
|
101
97
|
|
102
98
|
|
103
|
-
function
|
99
|
+
function renderLines ({ selection, pathClassName, segmentData, linePath, params }: {
|
104
100
|
selection: d3.Selection<SVGGElement, unknown, any, unknown>
|
105
101
|
pathClassName: string
|
106
102
|
segmentData: ComputedDatumGrid[][]
|
@@ -136,7 +132,7 @@ function renderLine ({ selection, pathClassName, segmentData, linePath, params }
|
|
136
132
|
return lines
|
137
133
|
}
|
138
134
|
|
139
|
-
function
|
135
|
+
function highlightLines ({ selection, seriesLabel, fullChartParams }: {
|
140
136
|
selection: d3.Selection<any, string, any, any>
|
141
137
|
seriesLabel: string | null
|
142
138
|
fullChartParams: ChartParams
|
@@ -225,7 +221,7 @@ function renderClipPath ({ defsSelection, clipPathData, transitionDuration, tran
|
|
225
221
|
export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: string, {
|
226
222
|
selection,
|
227
223
|
computedData$,
|
228
|
-
|
224
|
+
existSeriesLabels$,
|
229
225
|
SeriesDataMap$,
|
230
226
|
GroupDataMap$,
|
231
227
|
fullParams$,
|
@@ -386,7 +382,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
386
382
|
selection,
|
387
383
|
pluginName,
|
388
384
|
clipPathID,
|
389
|
-
|
385
|
+
existSeriesLabels$,
|
390
386
|
gridContainer$,
|
391
387
|
gridAxesTransform$,
|
392
388
|
gridGraphicTransform$
|
@@ -534,7 +530,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
534
530
|
// 將資料分段
|
535
531
|
const segmentData = makeSegmentData(data.computedData[i] ?? [])
|
536
532
|
|
537
|
-
const pathSelection =
|
533
|
+
const pathSelection = renderLines({
|
538
534
|
selection: d3.select(all[i]),
|
539
535
|
pathClassName,
|
540
536
|
linePath: data.linePath,
|
@@ -558,6 +554,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
558
554
|
pluginName,
|
559
555
|
highlightTarget: data.highlightTarget,
|
560
556
|
datum: _datum,
|
557
|
+
gridIndex: _datum.gridIndex,
|
561
558
|
series: data.SeriesDataMap.get(_datum.seriesLabel)!,
|
562
559
|
seriesIndex: _datum.seriesIndex,
|
563
560
|
seriesLabel: _datum.seriesLabel,
|
@@ -583,6 +580,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
583
580
|
pluginName,
|
584
581
|
highlightTarget: data.highlightTarget,
|
585
582
|
datum: _datum,
|
583
|
+
gridIndex: _datum.gridIndex,
|
586
584
|
series: data.SeriesDataMap.get(_datum.seriesLabel)!,
|
587
585
|
seriesIndex: _datum.seriesIndex,
|
588
586
|
seriesLabel: _datum.seriesLabel,
|
@@ -608,6 +606,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
608
606
|
pluginName,
|
609
607
|
highlightTarget: data.highlightTarget,
|
610
608
|
datum: _datum,
|
609
|
+
gridIndex: _datum.gridIndex,
|
611
610
|
series: data.SeriesDataMap.get(_datum.seriesLabel)!,
|
612
611
|
seriesIndex: _datum.seriesIndex,
|
613
612
|
seriesLabel: _datum.seriesLabel,
|
@@ -633,6 +632,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
633
632
|
pluginName,
|
634
633
|
highlightTarget: data.highlightTarget,
|
635
634
|
datum: _datum,
|
635
|
+
gridIndex: _datum.gridIndex,
|
636
636
|
series: data.SeriesDataMap.get(_datum.seriesLabel)!,
|
637
637
|
seriesIndex: _datum.seriesIndex,
|
638
638
|
seriesLabel: _datum.seriesLabel,
|
@@ -651,7 +651,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
651
651
|
// graphicSelection$.next(graphicSelection)
|
652
652
|
|
653
653
|
|
654
|
-
// pathSelection =
|
654
|
+
// pathSelection = renderLines({
|
655
655
|
// selection: graphicSelection,
|
656
656
|
// linePath: d.linePath,
|
657
657
|
// data: d.computedData
|
@@ -682,7 +682,7 @@ export const createBaseLines: BasePluginFn<BaseLinesContext> = (pluginName: stri
|
|
682
682
|
// if (!datum) {
|
683
683
|
// return
|
684
684
|
// }
|
685
|
-
|
685
|
+
highlightLines({
|
686
686
|
selection: data.graphicGSelection,
|
687
687
|
seriesLabel: (datum && datum.seriesLabel) ? datum.seriesLabel : null,
|
688
688
|
fullChartParams: data.fullChartParams
|
@@ -369,7 +369,6 @@ export const createBaseValueAxis: BasePluginFn<BaseLinesContext> = (pluginName:
|
|
369
369
|
// 轉換後會退訂前一個未完成的訂閱事件,因此可以取到「同時間」最後一次的訂閱事件
|
370
370
|
switchMap(async (d) => d),
|
371
371
|
).subscribe(data => {
|
372
|
-
console.log(data)
|
373
372
|
|
374
373
|
const valueScale: d3.ScaleLinear<number, number> = createAxisLinearScale({
|
375
374
|
maxValue: data.minAndMax[1],
|
package/src/grid/defaults.ts
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import type {
|
2
2
|
LinesParams,
|
3
|
+
LineAreasParams,
|
3
4
|
GroupAuxParams,
|
4
5
|
DotsParams,
|
5
6
|
BarsParams,
|
@@ -16,6 +17,11 @@ export const DEFAULT_LINES_PARAMS: LinesParams = {
|
|
16
17
|
lineWidth: 2
|
17
18
|
}
|
18
19
|
|
20
|
+
export const DEFAULT_LINE_AREAS_PARAMS: LineAreasParams = {
|
21
|
+
lineCurve: 'curveLinear',
|
22
|
+
linearGradientOpacity: [1, 0]
|
23
|
+
}
|
24
|
+
|
19
25
|
export const DEFAULT_DOTS_PARAMS: DotsParams = {
|
20
26
|
radius: 4,
|
21
27
|
fillColorType: 'white',
|
@@ -111,4 +117,5 @@ export const DEFAULT_GRID_LEGEND_PARAMS: GridLegendParams = {
|
|
111
117
|
listRectHeight: 14,
|
112
118
|
listRectRadius: 0,
|
113
119
|
// highlightEvent: false
|
120
|
+
textColorType: 'primary'
|
114
121
|
}
|
@@ -24,12 +24,12 @@ import type {
|
|
24
24
|
import { createAxisQuantizeScale } from '@orbcharts/core'
|
25
25
|
import { getClassName, getUniID } from '../utils/orbchartsUtils'
|
26
26
|
|
27
|
-
export const gridSelectionsObservable = ({ selection, pluginName, clipPathID,
|
27
|
+
export const gridSelectionsObservable = ({ selection, pluginName, clipPathID, existSeriesLabels$, gridContainer$, gridAxesTransform$, gridGraphicTransform$ }: {
|
28
28
|
selection: d3.Selection<any, unknown, any, unknown>
|
29
29
|
pluginName: string
|
30
30
|
clipPathID: string
|
31
31
|
// computedData$: Observable<ComputedDataGrid>
|
32
|
-
|
32
|
+
existSeriesLabels$: Observable<string[]>
|
33
33
|
gridContainer$: Observable<ContainerPosition[]>
|
34
34
|
gridAxesTransform$: Observable<TransformData>
|
35
35
|
gridGraphicTransform$: Observable<TransformData>
|
@@ -38,11 +38,11 @@ export const gridSelectionsObservable = ({ selection, pluginName, clipPathID, ex
|
|
38
38
|
const axesClassName = getClassName(pluginName, 'axes')
|
39
39
|
const graphicClassName = getClassName(pluginName, 'graphic')
|
40
40
|
|
41
|
-
const seriesSelection$ =
|
42
|
-
map((
|
41
|
+
const seriesSelection$ = existSeriesLabels$.pipe(
|
42
|
+
map((existSeriesLabels, i) => {
|
43
43
|
return selection
|
44
44
|
.selectAll<SVGGElement, string>(`g.${seriesClassName}`)
|
45
|
-
.data(
|
45
|
+
.data(existSeriesLabels, d => d)
|
46
46
|
.join(
|
47
47
|
enter => {
|
48
48
|
return enter
|
package/src/grid/index.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
export * from './defaults'
|
2
2
|
export * from './types'
|
3
3
|
export { Lines } from './plugins/Lines'
|
4
|
+
export { LineAreas } from './plugins/LineAreas'
|
4
5
|
export { Bars } from './plugins/Bars'
|
5
6
|
export { BarsDiverging } from './plugins/BarsDiverging'
|
6
7
|
export { BarStack } from './plugins/BarStack'
|
@@ -15,7 +15,7 @@ export const BarStack = defineGridPlugin(pluginName, DEFAULT_BAR_STACK_PARAMS)((
|
|
15
15
|
selection,
|
16
16
|
computedData$: observer.computedData$,
|
17
17
|
visibleComputedData$: observer.visibleComputedData$,
|
18
|
-
|
18
|
+
existSeriesLabels$: observer.existSeriesLabels$,
|
19
19
|
SeriesDataMap$: observer.SeriesDataMap$,
|
20
20
|
GroupDataMap$: observer.GroupDataMap$,
|
21
21
|
fullParams$: observer.fullParams$,
|
package/src/grid/plugins/Bars.ts
CHANGED
@@ -15,7 +15,7 @@ export const Bars = defineGridPlugin(pluginName, DEFAULT_BARS_PARAMS)(({ selecti
|
|
15
15
|
selection,
|
16
16
|
computedData$: observer.computedData$,
|
17
17
|
visibleComputedData$: observer.visibleComputedData$,
|
18
|
-
|
18
|
+
existSeriesLabels$: observer.existSeriesLabels$,
|
19
19
|
SeriesDataMap$: observer.SeriesDataMap$,
|
20
20
|
GroupDataMap$: observer.GroupDataMap$,
|
21
21
|
fullParams$: observer.fullParams$,
|
@@ -16,7 +16,7 @@ export const BarsDiverging = defineGridPlugin(pluginName, DEFAULT_BARS_PARAMS)((
|
|
16
16
|
selection,
|
17
17
|
computedData$: observer.computedData$,
|
18
18
|
visibleComputedData$: observer.visibleComputedData$,
|
19
|
-
|
19
|
+
existSeriesLabels$: observer.existSeriesLabels$,
|
20
20
|
SeriesDataMap$: observer.SeriesDataMap$,
|
21
21
|
GroupDataMap$: observer.GroupDataMap$,
|
22
22
|
fullParams$: observer.fullParams$,
|
@@ -14,7 +14,7 @@ export const BarsTriangle = defineGridPlugin(pluginName, DEFAULT_BARS_TRIANGLE_P
|
|
14
14
|
selection,
|
15
15
|
computedData$: observer.computedData$,
|
16
16
|
visibleComputedData$: observer.visibleComputedData$,
|
17
|
-
|
17
|
+
existSeriesLabels$: observer.existSeriesLabels$,
|
18
18
|
SeriesDataMap$: observer.SeriesDataMap$,
|
19
19
|
GroupDataMap$: observer.GroupDataMap$,
|
20
20
|
fullParams$: observer.fullParams$,
|
package/src/grid/plugins/Dots.ts
CHANGED
@@ -15,7 +15,7 @@ export const Dots = defineGridPlugin(pluginName, DEFAULT_DOTS_PARAMS)(({ selecti
|
|
15
15
|
selection,
|
16
16
|
computedData$: observer.computedData$,
|
17
17
|
visibleComputedData$: observer.visibleComputedData$,
|
18
|
-
|
18
|
+
existSeriesLabels$: observer.existSeriesLabels$,
|
19
19
|
SeriesDataMap$: observer.SeriesDataMap$,
|
20
20
|
GroupDataMap$: observer.GroupDataMap$,
|
21
21
|
fullParams$: observer.fullParams$,
|
@@ -407,6 +407,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
407
407
|
eventName: 'mouseover',
|
408
408
|
highlightTarget: data.highlightTarget,
|
409
409
|
datum: null,
|
410
|
+
gridIndex: 0, // @Q@ 暫不處理
|
410
411
|
series: [],
|
411
412
|
seriesIndex: -1,
|
412
413
|
seriesLabel: '',
|
@@ -428,6 +429,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
428
429
|
eventName: 'mousemove',
|
429
430
|
highlightTarget: data.highlightTarget,
|
430
431
|
datum: null,
|
432
|
+
gridIndex: 0, // @Q@ 暫不處理
|
431
433
|
series: [],
|
432
434
|
seriesIndex: -1,
|
433
435
|
seriesLabel: '',
|
@@ -449,6 +451,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
449
451
|
eventName: 'mouseout',
|
450
452
|
highlightTarget: data.highlightTarget,
|
451
453
|
datum: null,
|
454
|
+
gridIndex: 0, // @Q@ 暫不處理
|
452
455
|
series: [],
|
453
456
|
seriesIndex: -1,
|
454
457
|
seriesLabel: '',
|
@@ -470,6 +473,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
470
473
|
eventName: 'click',
|
471
474
|
highlightTarget: data.highlightTarget,
|
472
475
|
datum: null,
|
476
|
+
gridIndex: 0, // @Q@ 暫不處理
|
473
477
|
series: [],
|
474
478
|
seriesIndex: -1,
|
475
479
|
seriesLabel: '',
|
@@ -550,6 +554,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
550
554
|
eventName: 'mouseover',
|
551
555
|
highlightTarget: data.highlightTarget,
|
552
556
|
datum: null,
|
557
|
+
gridIndex: 0, // @Q@ 暫不處理
|
553
558
|
series: [],
|
554
559
|
seriesIndex: -1,
|
555
560
|
seriesLabel: '',
|
@@ -569,6 +574,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
569
574
|
eventName: 'mousemove',
|
570
575
|
highlightTarget: data.highlightTarget,
|
571
576
|
datum: null,
|
577
|
+
gridIndex: 0, // @Q@ 暫不處理
|
572
578
|
series: [],
|
573
579
|
seriesIndex: -1,
|
574
580
|
seriesLabel: '',
|
@@ -588,6 +594,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
588
594
|
eventName: 'mouseout',
|
589
595
|
highlightTarget: data.highlightTarget,
|
590
596
|
datum: null,
|
597
|
+
gridIndex: 0, // @Q@ 暫不處理
|
591
598
|
series: [],
|
592
599
|
seriesIndex: -1,
|
593
600
|
seriesLabel: '',
|
@@ -607,6 +614,7 @@ export const GroupAux = defineGridPlugin(pluginName, DEFAULT_GROUP_AREA_PARAMS)(
|
|
607
614
|
eventName: 'click',
|
608
615
|
highlightTarget: data.highlightTarget,
|
609
616
|
datum: null,
|
617
|
+
gridIndex: 0, // @Q@ 暫不處理
|
610
618
|
series: [],
|
611
619
|
seriesIndex: -1,
|
612
620
|
seriesLabel: '',
|
@@ -0,0 +1,37 @@
|
|
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
|
+
}
|
37
|
+
})
|
@@ -14,7 +14,7 @@ export const Lines = defineGridPlugin(pluginName, DEFAULT_LINES_PARAMS)(({ selec
|
|
14
14
|
const unsubscribeBaseBars = createBaseLines(pluginName, {
|
15
15
|
selection,
|
16
16
|
computedData$: observer.computedData$,
|
17
|
-
|
17
|
+
existSeriesLabels$: observer.existSeriesLabels$,
|
18
18
|
SeriesDataMap$: observer.SeriesDataMap$,
|
19
19
|
GroupDataMap$: observer.GroupDataMap$,
|
20
20
|
fullParams$: observer.fullParams$,
|
@@ -9,6 +9,7 @@ import {
|
|
9
9
|
takeUntil,
|
10
10
|
debounceTime,
|
11
11
|
Subject } from 'rxjs'
|
12
|
+
import type { DataFormatterGrid } from '@orbcharts/core'
|
12
13
|
import {
|
13
14
|
defineGridPlugin } from '@orbcharts/core'
|
14
15
|
import { DEFAULT_SCALING_AREA_PARAMS } from '../defaults'
|
@@ -87,9 +88,9 @@ export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PAR
|
|
87
88
|
? groupMax + data.initGroupAxis.scalePadding
|
88
89
|
: data.initGroupAxis.scaleDomain[1] as number + data.initGroupAxis.scalePadding
|
89
90
|
|
90
|
-
const scaleRange: [number, number] = data.fullDataFormatter.grid.valueAxis.position === 'left' || data.fullDataFormatter.grid.valueAxis.position === 'top'
|
91
|
-
|
92
|
-
|
91
|
+
// const scaleRange: [number, number] = data.fullDataFormatter.grid.valueAxis.position === 'left' || data.fullDataFormatter.grid.valueAxis.position === 'top'
|
92
|
+
// ? [0, 1]
|
93
|
+
// : [1, 0]
|
93
94
|
|
94
95
|
const groupScale: d3.ScaleLinear<number, number> = createAxisLinearScale({
|
95
96
|
maxValue: data.groupMaxIndex,
|
@@ -97,7 +98,7 @@ export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PAR
|
|
97
98
|
axisWidth: data.axisSize.width,
|
98
99
|
scaleDomain: [groupScaleDomainMin, groupScaleDomainMax],
|
99
100
|
// scaleDomain: [groupMin, groupMax],
|
100
|
-
scaleRange
|
101
|
+
scaleRange: [0, 1]
|
101
102
|
})
|
102
103
|
|
103
104
|
const shadowScale = groupScale.copy()
|
@@ -106,6 +107,7 @@ export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PAR
|
|
106
107
|
// .scaleExtent([1, data.groupMaxIndex])
|
107
108
|
// .translateExtent([[0, 0], [data.layout.rootWidth, data.layout.rootWidth]])
|
108
109
|
.on("zoom", function zoomed(event) {
|
110
|
+
// debugger
|
109
111
|
// console.log('event', event)
|
110
112
|
const t = event.transform;
|
111
113
|
// console.log('t', t)
|
@@ -146,7 +148,8 @@ export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PAR
|
|
146
148
|
lastTransform.y = t.y
|
147
149
|
// console.log(String(data.fullDataFormatter.visibleFilter))
|
148
150
|
// console.log('zoomedDomain', zoomedDomain)
|
149
|
-
|
151
|
+
|
152
|
+
const newDataFormatter: DataFormatterGrid = {
|
150
153
|
...data.fullDataFormatter,
|
151
154
|
grid: {
|
152
155
|
...data.fullDataFormatter.grid,
|
@@ -154,8 +157,9 @@ export const ScalingArea = defineGridPlugin(pluginName, DEFAULT_SCALING_AREA_PAR
|
|
154
157
|
...data.fullDataFormatter.grid.groupAxis,
|
155
158
|
scaleDomain: zoomedDomain
|
156
159
|
}
|
157
|
-
}
|
158
|
-
}
|
160
|
+
},
|
161
|
+
}
|
162
|
+
subject.dataFormatter$.next(newDataFormatter)
|
159
163
|
})
|
160
164
|
|
161
165
|
// 傳入外層selection
|
package/src/grid/types.ts
CHANGED
@@ -5,7 +5,6 @@ import type { ColorType } from '@orbcharts/core'
|
|
5
5
|
// export type BarType = 'rect' | 'triangle'
|
6
6
|
|
7
7
|
export interface LinesParams {
|
8
|
-
// lineType: LineType
|
9
8
|
lineCurve: string
|
10
9
|
lineWidth: number
|
11
10
|
// labelFn: (d: ComputedDatumSeries) => string
|
@@ -16,6 +15,11 @@ export interface LinesParams {
|
|
16
15
|
// labelPadding: number
|
17
16
|
}
|
18
17
|
|
18
|
+
export interface LineAreasParams {
|
19
|
+
lineCurve: string
|
20
|
+
linearGradientOpacity: [number, number]
|
21
|
+
}
|
22
|
+
|
19
23
|
export interface DotsParams {
|
20
24
|
radius: number
|
21
25
|
fillColorType: ColorType
|
@@ -113,4 +117,5 @@ export interface GridLegendParams {
|
|
113
117
|
listRectWidth: number
|
114
118
|
listRectHeight: number
|
115
119
|
listRectRadius: number
|
120
|
+
textColorType: ColorType
|
116
121
|
}
|
@@ -100,8 +100,8 @@ import type { ContextObserverMultiGrid, ComputedDataGrid, DataFormatterGrid, Con
|
|
100
100
|
// switchMap(d => d.gridHighlight$)
|
101
101
|
// )
|
102
102
|
|
103
|
-
// const
|
104
|
-
// switchMap(d => d.
|
103
|
+
// const existSeriesLabels$ = gridDetail$.pipe(
|
104
|
+
// switchMap(d => d.existSeriesLabels$)
|
105
105
|
// )
|
106
106
|
|
107
107
|
// const SeriesDataMap$ = gridDetail$.pipe(
|
@@ -127,7 +127,7 @@ import type { ContextObserverMultiGrid, ComputedDataGrid, DataFormatterGrid, Con
|
|
127
127
|
// gridAxesReverseTransform$,
|
128
128
|
// gridAxesSize$,
|
129
129
|
// gridHighlight$,
|
130
|
-
//
|
130
|
+
// existSeriesLabels$,
|
131
131
|
// SeriesDataMap$,
|
132
132
|
// GroupDataMap$,
|
133
133
|
// visibleComputedData$,
|
@@ -241,8 +241,8 @@ export const multiGridDetailObservables = (observer: ContextObserverMultiGrid<Mu
|
|
241
241
|
switchMap(d => d.gridHighlight$)
|
242
242
|
)
|
243
243
|
|
244
|
-
const
|
245
|
-
switchMap(d => d.
|
244
|
+
const existSeriesLabels$ = gridDetail$.pipe(
|
245
|
+
switchMap(d => d.existSeriesLabels$)
|
246
246
|
)
|
247
247
|
|
248
248
|
const SeriesDataMap$ = gridDetail$.pipe(
|
@@ -266,7 +266,7 @@ export const multiGridDetailObservables = (observer: ContextObserverMultiGrid<Mu
|
|
266
266
|
gridAxesReverseTransform$,
|
267
267
|
gridAxesSize$,
|
268
268
|
gridHighlight$,
|
269
|
-
|
269
|
+
existSeriesLabels$,
|
270
270
|
SeriesDataMap$,
|
271
271
|
GroupDataMap$,
|
272
272
|
visibleComputedData$,
|
@@ -35,7 +35,7 @@ export const MultiBarStack = defineMultiGridPlugin(pluginName, DEFAULT_MULTI_BAR
|
|
35
35
|
selection: gridSelection,
|
36
36
|
computedData$: d.gridComputedData$,
|
37
37
|
visibleComputedData$: d.visibleComputedData$,
|
38
|
-
|
38
|
+
existSeriesLabels$: d.existSeriesLabels$,
|
39
39
|
SeriesDataMap$: d.SeriesDataMap$,
|
40
40
|
GroupDataMap$: d.GroupDataMap$,
|
41
41
|
fullParams$: observer.fullParams$,
|
@@ -35,7 +35,7 @@ export const MultiBars = defineMultiGridPlugin(pluginName, DEFAULT_MULTI_BARS_PA
|
|
35
35
|
selection: gridSelection,
|
36
36
|
computedData$: d.gridComputedData$,
|
37
37
|
visibleComputedData$: d.visibleComputedData$,
|
38
|
-
|
38
|
+
existSeriesLabels$: d.existSeriesLabels$,
|
39
39
|
SeriesDataMap$: d.SeriesDataMap$,
|
40
40
|
GroupDataMap$: d.GroupDataMap$,
|
41
41
|
fullParams$: observer.fullParams$,
|
@@ -35,7 +35,7 @@ export const MultiBarsTriangle = defineMultiGridPlugin(pluginName, DEFAULT_MULTI
|
|
35
35
|
selection: gridSelection,
|
36
36
|
computedData$: d.gridComputedData$,
|
37
37
|
visibleComputedData$: d.visibleComputedData$,
|
38
|
-
|
38
|
+
existSeriesLabels$: d.existSeriesLabels$,
|
39
39
|
SeriesDataMap$: d.SeriesDataMap$,
|
40
40
|
GroupDataMap$: d.GroupDataMap$,
|
41
41
|
fullParams$: observer.fullParams$,
|
@@ -35,7 +35,7 @@ export const MultiDots = defineMultiGridPlugin(pluginName, DEFAULT_MULTI_DOTS_PA
|
|
35
35
|
selection: gridSelection,
|
36
36
|
computedData$: d.gridComputedData$,
|
37
37
|
visibleComputedData$: d.visibleComputedData$,
|
38
|
-
|
38
|
+
existSeriesLabels$: d.existSeriesLabels$,
|
39
39
|
SeriesDataMap$: d.SeriesDataMap$,
|
40
40
|
GroupDataMap$: d.GroupDataMap$,
|
41
41
|
fullParams$: observer.fullParams$,
|
@@ -35,7 +35,7 @@ export const MultiLines = defineMultiGridPlugin(pluginName, DEFAULT_MULTI_LINES_
|
|
35
35
|
unsubscribeFnArr[i] = createBaseLines(pluginName, {
|
36
36
|
selection: gridSelection,
|
37
37
|
computedData$: d.gridComputedData$,
|
38
|
-
|
38
|
+
existSeriesLabels$: d.existSeriesLabels$,
|
39
39
|
SeriesDataMap$: d.SeriesDataMap$,
|
40
40
|
GroupDataMap$: d.GroupDataMap$,
|
41
41
|
fullDataFormatter$: d.gridDataFormatter$,
|
package/src/multiGrid/types.ts
CHANGED
package/src/noneData/defaults.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { ContainerPluginParams, TooltipParams } from './types'
|
2
|
-
import type {
|
2
|
+
import type { EventBaseSeriesValue, EventBaseGridValue, EventBaseCategoryValue } from '@orbcharts/core'
|
3
3
|
|
4
4
|
export const CONTAINER_PLUGIN_PARAMS: ContainerPluginParams = {
|
5
5
|
header: {
|
@@ -25,20 +25,34 @@ export const TOOLTIP_PARAMS: TooltipParams = {
|
|
25
25
|
if (eventData.highlightTarget === 'datum' && eventData.datum) {
|
26
26
|
return [`${eventData.datum.label}: ${eventData.datum.value}`]
|
27
27
|
} else if (eventData.highlightTarget === 'series') {
|
28
|
-
const label = (eventData as
|
29
|
-
const
|
28
|
+
const label = (eventData as EventBaseSeriesValue<any, any>).seriesLabel
|
29
|
+
const valueArr = (eventData as EventBaseSeriesValue<any, any>).series
|
30
30
|
.map(d => {
|
31
31
|
return d.value
|
32
32
|
})
|
33
|
-
|
33
|
+
const value = valueArr.length > 5
|
34
|
+
? valueArr.slice(0, 5).join(',') + '...'
|
35
|
+
: valueArr.join(',')
|
34
36
|
return [label, value]
|
35
37
|
} else if (eventData.highlightTarget === 'group') {
|
36
|
-
const label = (eventData as
|
37
|
-
const
|
38
|
+
const label = (eventData as EventBaseGridValue<any, any>).groupLabel
|
39
|
+
const valueArr = (eventData as EventBaseGridValue<any, any>).series
|
38
40
|
.map(d => {
|
39
41
|
return d.value
|
40
42
|
})
|
41
|
-
|
43
|
+
const value = valueArr.length > 5
|
44
|
+
? valueArr.slice(0, 5).join(',') + '...'
|
45
|
+
: valueArr.join(',')
|
46
|
+
return [label, value]
|
47
|
+
} else if (eventData.highlightTarget === 'category') {
|
48
|
+
const label = (eventData as EventBaseCategoryValue<any, any>).categoryLabel
|
49
|
+
const valueArr = (eventData as EventBaseCategoryValue<any, any>).category
|
50
|
+
.map(d => {
|
51
|
+
return d.value
|
52
|
+
})
|
53
|
+
const value = valueArr.length > 5
|
54
|
+
? valueArr.slice(0, 5).join(',') + '...'
|
55
|
+
: valueArr.join(',')
|
42
56
|
return [label, value]
|
43
57
|
}
|
44
58
|
return []
|
package/src/series/defaults.ts
CHANGED
package/src/series/types.ts
CHANGED
package/src/tree/defaults.ts
CHANGED
@@ -18,6 +18,7 @@ import { getClassName, getColor } from '../../utils/orbchartsUtils'
|
|
18
18
|
|
19
19
|
const pluginName = 'TreeMap'
|
20
20
|
const treeClassName = getClassName(pluginName, 'tree')
|
21
|
+
const tileClassName = getClassName(pluginName, 'tile')
|
21
22
|
|
22
23
|
function renderTree ({ selection, treeData, fullParams, fullChartParams }: {
|
23
24
|
selection: d3.Selection<any, any, any, any>
|
@@ -40,11 +41,12 @@ function renderTree ({ selection, treeData, fullParams, fullChartParams }: {
|
|
40
41
|
const eachCell = d3.select(nodes[i])
|
41
42
|
|
42
43
|
const tile = eachCell
|
43
|
-
.selectAll<SVGRectElement, d3.HierarchyRectangularNode<ComputedDataTree>>(
|
44
|
+
.selectAll<SVGRectElement, d3.HierarchyRectangularNode<ComputedDataTree>>(`rect.${tileClassName}`)
|
44
45
|
.data([d], d => d.data.id)
|
45
46
|
.join('rect')
|
46
47
|
.attr("id", d => d.data.id)
|
47
|
-
.attr("class",
|
48
|
+
.attr("class", tileClassName)
|
49
|
+
.attr('cursor', 'pointer')
|
48
50
|
.attr("width", (d) => d.x1 - d.x0)
|
49
51
|
.attr("height", (d) => d.y1 - d.y0)
|
50
52
|
.attr('fill', d => d.data.color)
|
@@ -80,7 +82,7 @@ function renderTree ({ selection, treeData, fullParams, fullChartParams }: {
|
|
80
82
|
let tspan = textElement
|
81
83
|
.text(null)
|
82
84
|
.append("tspan")
|
83
|
-
.attr('cursor', '
|
85
|
+
.attr('cursor', 'pointer')
|
84
86
|
.attr('fill', getColor(fullParams.labelColorType, fullChartParams))
|
85
87
|
.attr('font-size', fullChartParams.styles.textSize)
|
86
88
|
.attr("x", x)
|
@@ -96,7 +98,7 @@ function renderTree ({ selection, treeData, fullParams, fullChartParams }: {
|
|
96
98
|
dy += lineHeight
|
97
99
|
tspan = textElement
|
98
100
|
.append("tspan")
|
99
|
-
.attr('cursor', '
|
101
|
+
.attr('cursor', 'pointer')
|
100
102
|
.attr('fill', getColor(fullParams.labelColorType, fullChartParams))
|
101
103
|
.attr('font-size', fullChartParams.styles.textSize)
|
102
104
|
.attr("x", x)
|