@easyv/config 1.1.3 → 1.1.6

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/src/pie.js CHANGED
@@ -1,1009 +1,1035 @@
1
- import {
2
- font,
3
- show as showConfig,
4
- showRule,
5
- translate as translateConfig,
6
- axisLine,
7
- sc,
8
- } from './';
9
-
10
- const defaultBasePie = {
11
- chart: {
12
- innerRadius: 0,
13
- outerRadius: 1,
14
- cornerRadius: 0,
15
- padAngle: 2,
16
- },
17
- };
18
- const basePie = ({
19
- chart: {
20
- innerRadius = defaultBasePie.chart.innerRadius,
21
- outerRadius = defaultBasePie.chart.outerRadius,
22
- cornerRadius = defaultBasePie.chart.cornerRadius,
23
- padAngle = defaultBasePie.chart.padAngle,
24
- } = defaultBasePie.chart,
25
- } = defaultBasePie) => ({
26
- name: 'chart',
27
- displayName: '图形',
28
- value: [
29
- {
30
- name: 'innerRadius',
31
- displayName: '半径',
32
- value: innerRadius,
33
- type: 'range',
34
- config: {
35
- min: 0,
36
- max: 1,
37
- step: 0.01,
38
- },
39
- },
40
- {
41
- name: 'outerRadius',
42
- displayName: '外半径',
43
- value: outerRadius,
44
- type: 'range',
45
- config: {
46
- min: 0,
47
- max: 1,
48
- step: 0.01,
49
- },
50
- },
51
- {
52
- name: 'cornerRadius',
53
- displayName: '圆角',
54
- value: cornerRadius,
55
- type: 'number',
56
- config: {
57
- suffix: 'px',
58
- },
59
- },
60
- {
61
- name: 'padAngle',
62
- displayName: '间距',
63
- value: padAngle,
64
- type: 'range',
65
- config: {
66
- min: 0,
67
- max: 20,
68
- step: 1,
69
- suffix: '°',
70
- },
71
- },
72
- ],
73
- config: {
74
- defaultOpen: true,
75
- },
76
- });
77
-
78
- const defaultBaseRose = {
79
- chart: {
80
- innerRadius: 0,
81
- outerRadius: 1,
82
- padAngle: 2,
83
- },
84
- };
85
- const baseRose = ({
86
- chart: {
87
- innerRadius = defaultBaseRose.chart.innerRadius,
88
- outerRadius = defaultBaseRose.chart.outerRadius,
89
- padAngle = defaultBaseRose.chart.padAngle,
90
- } = defaultBaseRose.chart,
91
- } = defaultBaseRose) => ({
92
- name: 'chart',
93
- displayName: '饼图',
94
- value: [
95
- {
96
- name: 'innerRadius',
97
- displayName: '半径',
98
- value: innerRadius,
99
- type: 'range',
100
- config: {
101
- min: 0,
102
- max: 1,
103
- step: 0.01,
104
- },
105
- },
106
- {
107
- name: 'outerRadius',
108
- displayName: '外半径',
109
- value: outerRadius,
110
- type: 'range',
111
- config: {
112
- min: 0,
113
- max: 1,
114
- step: 0.01,
115
- },
116
- },
117
- {
118
- name: 'padAngle',
119
- displayName: '间距',
120
- value: padAngle,
121
- type: 'range',
122
- config: {
123
- min: 0,
124
- max: 30,
125
- step: 1,
126
- suffix: '°',
127
- },
128
- },
129
- ],
130
- config: {
131
- defaultOpen: true,
132
- },
133
- });
134
-
135
- const defaultGridLine = {
136
- show: true,
137
- color: '#BAE7FF',
138
- lineWidth: 1,
139
- };
140
- const gridLine = ({
141
- show = defaultGridLine.show,
142
- color = defaultGridLine.color,
143
- lineWidth = defaultGridLine.lineWidth,
144
- } = defaultGridLine) => ({
145
- name: 'gridLine',
146
- displayName: '网格线',
147
- value: [
148
- {
149
- name: 'show',
150
- displayName: '显示',
151
- value: show,
152
- type: 'boolean',
153
- },
154
- {
155
- rule: [['show', '$eq', true]],
156
- name: 'color',
157
- displayName: '颜色',
158
- value: color,
159
- type: 'color',
160
- },
161
- {
162
- rule: [['show', '$eq', true]],
163
- name: 'lineWidth',
164
- displayName: '粗细',
165
- value: lineWidth,
166
- type: 'number',
167
- config: {
168
- suffix: 'px',
169
- },
170
- },
171
- ],
172
- });
173
-
174
- const defaultRoseAxis = {
175
- axis: {
176
- count: 6,
177
- textStyle: font(),
178
- gap: 10,
179
- axisline: {
180
- show: true,
181
- color: '#BAE7FF',
182
- lineWidth: 1,
183
- },
184
- gridLine: {
185
- show: true,
186
- color: '#BAE7FF',
187
- lineWidth: 1,
188
- },
189
- },
190
- };
191
-
192
- const roseCategoryAxis = ({
193
- axis: {
194
- textStyle = defaultRoseAxis.axis.textStyle,
195
- gap = defaultRoseAxis.axis.gap,
196
- axisLine: axisLine_ = defaultRoseAxis.axis.axisline,
197
- gridLine: gridLine_ = defaultRoseAxis.axis.gridLine,
198
- } = defaultRoseAxis.axis,
199
- } = defaultRoseAxis) => ({
200
- name: 'categoryAxis',
201
- displayName: '类目轴',
202
- value: [
203
- {
204
- name: 'textStyle',
205
- displayName: '标签文本',
206
- value: font(textStyle),
207
- type: 'textStyle',
208
- markColorType: 'textColor'
209
- },
210
- {
211
- name: 'gap',
212
- displayName: '边距',
213
- value: gap,
214
- type: 'number',
215
- config: {
216
- suffix: 'px',
217
- },
218
- },
219
- axisLine(axisLine_),
220
- gridLine(gridLine_),
221
- ],
222
- config: {
223
- defaultOpen: true,
224
- },
225
- });
226
-
227
- const roseValueAxis = ({
228
- axis: {
229
- count = defaultRoseAxis.axis.count,
230
- textStyle = defaultRoseAxis.axis.textStyle,
231
- gap = defaultRoseAxis.axis.gap,
232
- axisLine: axisLine_ = defaultRoseAxis.axis.axisline,
233
- gridLine: gridLine_ = defaultRoseAxis.axis.gridLine,
234
- } = defaultRoseAxis.axis,
235
- } = defaultRoseAxis) => ({
236
- name: 'valueAxis',
237
- displayName: '数值轴',
238
- value: [
239
- {
240
- name: 'count',
241
- displayName: '数量',
242
- value: count,
243
- type: 'number',
244
- },
245
- {
246
- name: 'textStyle',
247
- displayName: '标签文本',
248
- value: font(textStyle),
249
- type: 'textStyle',
250
- markColorType: 'textColor'
251
- },
252
- {
253
- name: 'gap',
254
- displayName: '边距',
255
- value: gap,
256
- type: 'number',
257
- config: {
258
- suffix: 'px',
259
- },
260
- },
261
- axisLine(axisLine_),
262
- gridLine(gridLine_),
263
- ],
264
- config: {
265
- defaultOpen: true,
266
- },
267
- });
268
-
269
- const defaultCategoryText = {
270
- categoryText: {
271
- show: true,
272
- font: font(),
273
- gap: 10,
274
- },
275
- };
276
- const categoryText = ({
277
- categoryText: {
278
- show = defaultCategoryText.categoryText.show,
279
- font = defaultCategoryText.categoryText.font,
280
- gap = defaultCategoryText.categoryText.gap,
281
- } = defaultCategoryText,
282
- }) => ({
283
- name: 'categoryText',
284
- displayName: '类目文本',
285
- value: [
286
- {
287
- name: 'show',
288
- displayName: '显示',
289
- value: show,
290
- type: 'boolean',
291
- },
292
- {
293
- ...showRule(),
294
- name: 'textStyle',
295
- displayName: '文本样式',
296
- value: font,
297
- type: 'textStyle',
298
- markColorType: 'textColor'
299
- },
300
- {
301
- ...showRule(),
302
- name: 'gap',
303
- displayName: '间距',
304
- value: gap,
305
- type: 'number',
306
- config: {
307
- suffix: 'px',
308
- },
309
- },
310
- ],
311
- });
312
-
313
- const defaultDecorate = {
314
- decorate: {
315
- show: true,
316
- innerRadius: 0.3,
317
- outerRadius: 0.6,
318
- opacity: 80,
319
- speed: 5,
320
- direction: 'clockwise',
321
- },
322
- };
323
- const decorate = ({
324
- decorate: {
325
- show = defaultDecorate.decorate.show,
326
- innerRadius = defaultDecorate.decorate.innerRadius,
327
- outerRadius = defaultDecorate.decorate.outerRadius,
328
- opacity = defaultDecorate.decorate.opacity,
329
- speed = defaultDecorate.decorate.speed,
330
- direction = defaultDecorate.decorate.direction,
331
- } = defaultDecorate,
332
- }) => ({
333
- name: 'decorate',
334
- displayName: '装饰物',
335
- value: [
336
- {
337
- name: 'show',
338
- displayName: '显示',
339
- value: show,
340
- type: 'boolean',
341
- },
342
- {
343
- rule: [['show', '$eq', true]],
344
- name: 'innerRadius',
345
- displayName: '内半径',
346
- value: innerRadius,
347
- type: 'range',
348
- config: {
349
- min: 0,
350
- max: 1,
351
- step: 0.01,
352
- },
353
- },
354
- {
355
- rule: [['show', '$eq', true]],
356
- name: 'outerRadius',
357
- displayName: '外半径',
358
- value: outerRadius,
359
- type: 'range',
360
- config: {
361
- min: 0,
362
- max: 1,
363
- step: 0.01,
364
- },
365
- },
366
- {
367
- rule: [['show', '$eq', true]],
368
- name: 'opacity',
369
- displayName: '透明度',
370
- value: opacity,
371
- type: 'range',
372
- config: {
373
- min: 0,
374
- max: 100,
375
- step: 1,
376
- },
377
- },
378
- {
379
- rule: [['show', '$eq', true]],
380
- name: 'speed',
381
- displayName: '旋转速度',
382
- value: speed,
383
- type: 'number',
384
- config: {
385
- min: 0,
386
- max: 10,
387
- },
388
- },
389
- {
390
- rule: [['show', '$eq', true]],
391
- name: 'direction',
392
- displayName: '旋转方向',
393
- value: direction,
394
- type: 'radio',
395
- config: {
396
- options: [
397
- {
398
- name: '顺时针',
399
- value: 'clockwise',
400
- },
401
- {
402
- name: '逆时针',
403
- value: 'counterClockwise',
404
- },
405
- ],
406
- },
407
- },
408
- ],
409
- config: {
410
- defaultOpen: true,
411
- },
412
- });
413
-
414
- const defaultDecorate2 = {
415
- show: true,
416
- radiusWidth: 0.3,
417
- opacity: 80,
418
- };
419
- const decorate2 = ({
420
- show = defaultDecorate2.show,
421
- radiusWidth = defaultDecorate2.radiusWidth,
422
- opacity = defaultDecorate2.opacity,
423
- }) => ({
424
- name: 'decorate2',
425
- displayName: '装饰物',
426
- value: [
427
- {
428
- name: 'show',
429
- displayName: '显示',
430
- value: show,
431
- type: 'boolean',
432
- },
433
- {
434
- rule: [['show', '$eq', true]],
435
- name: 'radiusWidth',
436
- displayName: '弧宽',
437
- value: radiusWidth,
438
- type: 'range',
439
- config: {
440
- min: 0,
441
- max: 100,
442
- },
443
- },
444
- {
445
- rule: [['show', '$eq', true]],
446
- name: 'opacity',
447
- displayName: '透明度',
448
- value: opacity,
449
- type: 'range',
450
- config: {
451
- min: 0,
452
- max: 100,
453
- suffix: '%',
454
- },
455
- },
456
- ],
457
- });
458
-
459
- const defaultCurrent = {
460
- current: {
461
- show: true,
462
- gap: 45,
463
- name: { show: true, font: font() },
464
- percent: {
465
- show: true,
466
- precision: 0,
467
- font: font(),
468
- translate: { x: 0, y: 0 },
469
- },
470
- value: {
471
- show: true,
472
- font: font(),
473
- translate: { x: 0, y: 0 },
474
- suffix: {
475
- show: false,
476
- text: '',
477
- fontSize: 12,
478
- translate: { x: 0, y: 0 },
479
- },
480
- },
481
- },
482
- };
483
- export const current = ({
484
- current: {
485
- show = defaultCurrent.current.show,
486
- gap = defaultCurrent.current.gap,
487
- name: {
488
- show: showName = defaultCurrent.current.name.show,
489
- font: nameFont = defaultCurrent.current.name.font,
490
- translate: nameTranslate,
491
- textBreak,
492
- } = defaultCurrent.current.name,
493
- percent: {
494
- show: showPercent = defaultCurrent.current.percent.show,
495
- precision = defaultCurrent.current.percent.precision,
496
- font: percentFont = defaultCurrent.current.percent.font,
497
- translate: { x: percentTranslateX, y: percentTranslateY } = defaultCurrent
498
- .current.percent.translate,
499
- } = defaultCurrent.current.percent,
500
- value: {
501
- show: showValue = defaultCurrent.current.value.show,
502
- font: valueFont = defaultCurrent.current.value.font,
503
- translate: { x: valueTranslateX, y: valueTranslateY } = defaultCurrent
504
- .current.value.translate,
505
- suffix: {
506
- show: showSuffix = defaultCurrent.current.value.suffix.show,
507
- text = defaultCurrent.current.value.suffix.text,
508
- fontSize = defaultCurrent.current.value.suffix.fontSize,
509
- translate: { x: suffixTranslateX, y: suffixTranslateY } = defaultCurrent
510
- .current.value.suffix.translate,
511
- } = defaultCurrent.current.value.suffix,
512
- } = defaultCurrent.current.value,
513
- } = defaultCurrent.current,
514
- } = defaultCurrent) => ({
515
- name: 'current',
516
- displayName: '当前值',
517
- value: [
518
- showConfig(show),
519
- {
520
- rule: [['show', '$eq', true]],
521
- name: 'gap',
522
- displayName: '间距',
523
- value: gap,
524
- type: 'number',
525
- config: {
526
- suffix: 'px',
527
- },
528
- },
529
- {
530
- rule: [['show', '$eq', true]],
531
- name: 'name',
532
- displayName: '类目',
533
- value: [
534
- showConfig(showName),
535
- {
536
- rule: [['show', '$eq', true]],
537
- name: 'font',
538
- displayName: '文本样式',
539
- value: nameFont,
540
- type: 'textStyle',
541
- markColorType: 'textColor',
542
- },
543
- nameTranslate != undefined && {
544
- ...showRule(),
545
- ...translateConfig(nameTranslate.x, nameTranslate.y),
546
- },
547
- textBreak != undefined && {
548
- ...showRule(),
549
- ...sc('textBreak', '首行字数', 'number', textBreak, {
550
- min: 0,
551
- suffix: '个',
552
- }),
553
- },
554
- ].filter((item) => !!item),
555
- },
556
- {
557
- rule: [['show', '$eq', true]],
558
- name: 'percent',
559
- displayName: '占比值',
560
- value: [
561
- showConfig(showPercent),
562
- {
563
- rule: [['show', '$eq', true]],
564
- name: 'precision',
565
- displayName: '小数位数',
566
- value: precision,
567
- type: 'number',
568
- config: {
569
- min: 0,
570
- },
571
- },
572
- {
573
- rule: [['show', '$eq', true]],
574
- name: 'font',
575
- displayName: '文本样式',
576
- value: percentFont,
577
- type: 'textStyle',
578
- markColorType: 'textColor',
579
- },
580
- {
581
- rule: [['show', '$eq', true]],
582
- ...translateConfig(percentTranslateX, percentTranslateY),
583
- },
584
- ],
585
- },
586
- {
587
- rule: [['show', '$eq', true]],
588
- name: 'value',
589
- displayName: '真实值',
590
- value: [
591
- showConfig(showValue),
592
- {
593
- rule: [['show', '$eq', true]],
594
- name: 'font',
595
- displayName: '文本样式',
596
- value: valueFont,
597
- type: 'textStyle',
598
- markColorType: 'textColor',
599
- },
600
- {
601
- rule: [['show', '$eq', true]],
602
- ...translateConfig(valueTranslateX, valueTranslateY),
603
- },
604
- {
605
- rule: [['show', '$eq', true]],
606
- name: 'suffix',
607
- displayName: '后缀',
608
- value: [
609
- {
610
- name: 'show',
611
- displayName: '显示',
612
- value: showSuffix,
613
- type: 'boolean',
614
- },
615
- {
616
- rule: [['show', '$eq', true]],
617
- name: 'text',
618
- displayName: '内容',
619
- value: text,
620
- type: 'input',
621
- },
622
- {
623
- rule: [['show', '$eq', true]],
624
- name: 'fontSize',
625
- displayName: '字号',
626
- value: fontSize,
627
- type: 'number',
628
- },
629
- {
630
- rule: [['show', '$eq', true]],
631
- ...translateConfig(suffixTranslateX, suffixTranslateY),
632
- },
633
- ],
634
- config: {
635
- defaultOpen: true,
636
- },
637
- },
638
- ],
639
- },
640
- ],
641
- config: {
642
- defaultOpen: true,
643
- },
644
- });
645
-
646
- const defaultBaseOuter = {
647
- chart: {
648
- innerRadius: 0,
649
- outerRadius: 1,
650
- padAngle: 2,
651
- },
652
- };
653
- const baseOuter = ({
654
- chart: {
655
- innerRadius = defaultBasePie.chart.innerRadius,
656
- outerRadius = defaultBasePie.chart.outerRadius,
657
- padAngle = defaultBasePie.chart.padAngle,
658
- } = defaultBasePie.chart,
659
- } = defaultBaseOuter) => ({
660
- name: 'chart',
661
- displayName: '图形',
662
- value: [
663
- {
664
- name: 'innerRadius',
665
- displayName: '半径',
666
- value: innerRadius,
667
- type: 'range',
668
- config: {
669
- min: 0,
670
- max: 1,
671
- step: 0.01,
672
- },
673
- },
674
- {
675
- name: 'outerRadius',
676
- displayName: '外半径',
677
- value: outerRadius,
678
- type: 'range',
679
- config: {
680
- min: 0,
681
- max: 1,
682
- step: 0.01,
683
- },
684
- },
685
- {
686
- name: 'padAngle',
687
- displayName: '间距',
688
- value: padAngle,
689
- type: 'range',
690
- config: {
691
- min: 0,
692
- max: 20,
693
- step: 1,
694
- suffix: '°',
695
- },
696
- },
697
- ],
698
- config: {
699
- defaultOpen: true,
700
- },
701
- });
702
-
703
- const defaultOuterDecorate = {
704
- outerDecorate: {
705
- color: '#CF00FF',
706
- width: 10,
707
- tick: {
708
- show: true,
709
- count: 12,
710
- color: '#CF00FF',
711
- width: 3,
712
- length: 8,
713
- },
714
- },
715
- };
716
- const outerDecorate = ({
717
- outerDecorate: {
718
- color = defaultOuterDecorate.outerDecorate.color,
719
- width = defaultOuterDecorate.outerDecorate.width,
720
- tick: {
721
- show = defaultOuterDecorate.outerDecorate.tick.show,
722
- count = defaultOuterDecorate.outerDecorate.tick.count,
723
- color: tickColor = defaultOuterDecorate.outerDecorate.tick.color,
724
- width: tickWidth = defaultOuterDecorate.outerDecorate.tick.width,
725
- length = defaultOuterDecorate.outerDecorate.tick.length,
726
- } = defaultOuterDecorate.outerDecorate.tick,
727
- } = defaultOuterDecorate.outerDecorate,
728
- } = defaultOuterDecorate) => ({
729
- name: 'outerDecorate',
730
- displayName: '外环装饰',
731
- value: [
732
- {
733
- name: 'color',
734
- displayName: '颜色',
735
- value: color,
736
- type: 'color',
737
- },
738
- {
739
- name: 'width',
740
- displayName: '粗细',
741
- value: width,
742
- type: 'number',
743
- config: {
744
- min: 0,
745
- max: 100,
746
- suffix: 'px',
747
- },
748
- },
749
- {
750
- name: 'tick',
751
- displayName: '刻度',
752
- value: [
753
- showConfig(show),
754
- {
755
- ...showRule(),
756
- name: 'count',
757
- displayName: '个数',
758
- value: count,
759
- type: 'number',
760
- config: {
761
- min: 0,
762
- },
763
- },
764
- {
765
- ...showRule(),
766
- name: 'color',
767
- displayName: '颜色',
768
- value: tickColor,
769
- type: 'color',
770
- },
771
- {
772
- ...showRule(),
773
- name: 'width',
774
- displayName: '粗细',
775
- value: tickWidth,
776
- type: 'number',
777
- config: {
778
- suffix: 'px',
779
- },
780
- },
781
- {
782
- ...showRule(),
783
- name: 'length',
784
- displayName: '长度',
785
- value: length,
786
- type: 'number',
787
- config: {
788
- suffix: 'px',
789
- },
790
- },
791
- ],
792
- },
793
- ],
794
- });
795
-
796
- export const rosePie = (_basePie = defaultBasePie) => ({
797
- name: 'fan',
798
- displayName: '环图属性',
799
- value: [basePie(_basePie)],
800
- });
801
-
802
- export const rosePieDecorate = (
803
- _baseOuter = defaultBaseOuter,
804
- _outerDecorate = defaultOuterDecorate
805
- ) => ({
806
- name: 'fan',
807
- displayName: '环图属性',
808
- value: [baseOuter(_baseOuter), outerDecorate(_outerDecorate)],
809
- });
810
-
811
- export const donut = (
812
- {
813
- basePie: _basePie = defaultBasePie,
814
- decorate: _decorate = defaultDecorate,
815
- } = {
816
- basePie: defaultBasePie,
817
- decorate: defaultDecorate,
818
- }
819
- ) => ({
820
- name: 'fan',
821
- displayName: '环图属性',
822
- value: [basePie(_basePie), decorate(_decorate)],
823
- });
824
-
825
- export const carouselDonut = (
826
- { basePie: _basePie = defaultBasePie, current: _current = defaultCurrent } = {
827
- basePie: defaultBasePie,
828
- current: defaultCurrent,
829
- }
830
- ) => ({
831
- name: 'fan',
832
- displayName: '环图属性',
833
- value: [basePie(_basePie), current(_current)],
834
- });
835
-
836
- export const nestRosePie = (
837
- _baseRose = defaultBaseRose,
838
- _categoryAxis = defaultRoseAxis,
839
- _valueAxis = defaultRoseAxis
840
- ) => ({
841
- name: 'fan',
842
- displayName: '环图属性',
843
- value: [
844
- baseRose(_baseRose),
845
- roseCategoryAxis(_categoryAxis),
846
- roseValueAxis(_valueAxis),
847
- ],
848
- });
849
-
850
- export const carouselDonut2 = (
851
- {
852
- basePie: _basePie = defaultBasePie,
853
- categoryText: _categoryText = defaultCategoryText,
854
- decorate2: _decorate2 = defaultDecorate2,
855
- current: _current = defaultCurrent,
856
- } = {
857
- basePie: defaultBasePie,
858
- categoryText: defaultCategoryText,
859
- decorate2: defaultDecorate2,
860
- current: defaultCurrent,
861
- }
862
- ) => ({
863
- name: 'fan',
864
- displayName: '环图属性',
865
- value: [
866
- basePie(_basePie),
867
- categoryText(_categoryText),
868
- decorate2(_decorate2),
869
- current(_current),
870
- ],
871
- });
872
-
873
- const defaultPie = {
874
- fan: {
875
- chart: { rose: false, baseRadius: 0.5, outerRadius: 1, innerRadius: 0 },
876
- angle: { startAngle: 0, endAngle: 360, antiClockwise: false },
877
- stroke: { show: false, strokeWidth: 1, color: '#FFFFFF' },
878
- },
879
- };
880
-
881
- export default ({
882
- fan: {
883
- chart: {
884
- outerRadius = defaultPie.fan.chart.outerRadius,
885
- rose = defaultPie.fan.chart.rose,
886
- baseRadius = defaultPie.fan.chart.baseRadius,
887
- } = defaultPie.fan.chart,
888
- angle: {
889
- startAngle = defaultPie.fan.angle.startAngle,
890
- endAngle = defaultPie.fan.angle.endAngle,
891
- antiClockwise = defaultPie.fan.angle.antiClockwise,
892
- } = defaultPie.fan.angle,
893
- stroke: {
894
- show = defaultPie.fan.stroke.show,
895
- strokeWidth = defaultPie.fan.stroke.strokeWidth,
896
- color = defaultPie.fan.stroke.color,
897
- } = defaultPie.fan.stroke,
898
- } = defaultPie.fan,
899
- } = defaultPie) => ({
900
- name: 'fan',
901
- displayName: '饼图属性',
902
- value: [
903
- {
904
- name: 'chart',
905
- displayName: '图形',
906
- value: [
907
- {
908
- name: 'outerRadius',
909
- displayName: '半径',
910
- value: outerRadius,
911
- type: 'range',
912
- config: {
913
- min: 0,
914
- max: 1,
915
- step: 0.01,
916
- },
917
- },
918
- {
919
- name: 'rose',
920
- displayName: '类玫瑰图',
921
- value: rose,
922
- type: 'boolean',
923
- },
924
- {
925
- rule: [['rose', '$eq', true]],
926
- name: 'baseRadius',
927
- displayName: '最小半径',
928
- value: baseRadius,
929
- type: 'range',
930
- config: {
931
- min: 0,
932
- max: 1,
933
- step: 0.01,
934
- },
935
- },
936
- ],
937
- config: {
938
- defaultOpen: true,
939
- },
940
- },
941
- {
942
- name: 'angle',
943
- displayName: '角度',
944
- value: [
945
- {
946
- name: 'startAngle',
947
- displayName: '起始',
948
- value: startAngle,
949
- type: 'range',
950
- config: {
951
- step: 1,
952
- min: 0,
953
- max: 360,
954
- },
955
- },
956
- {
957
- name: 'endAngle',
958
- displayName: '结束',
959
- value: endAngle,
960
- type: 'range',
961
- config: {
962
- step: 1,
963
- min: 0,
964
- max: 360,
965
- },
966
- },
967
- {
968
- name: 'antiClockwise',
969
- displayName: '反向',
970
- value: antiClockwise,
971
- type: 'boolean',
972
- tip: '启用使用另一时针顺序绘制饼图',
973
- },
974
- ],
975
- config: {
976
- defaultOpen: true,
977
- },
978
- },
979
- {
980
- name: 'stroke',
981
- displayName: '描边',
982
- value: [
983
- {
984
- name: 'show',
985
- displayName: '开启',
986
- value: show,
987
- type: 'boolean',
988
- },
989
- {
990
- rule: [['show', '$eq', true]],
991
- name: 'strokeWidth',
992
- displayName: '宽度',
993
- value: strokeWidth,
994
- type: 'number',
995
- },
996
- {
997
- rule: [['show', '$eq', true]],
998
- name: 'color',
999
- displayName: '颜色',
1000
- value: color,
1001
- type: 'color',
1002
- },
1003
- ],
1004
- config: {
1005
- defaultOpen: true,
1006
- },
1007
- },
1008
- ],
1009
- });
1
+ import {
2
+ font,
3
+ show as showConfig,
4
+ showRule,
5
+ translate as translateConfig,
6
+ axisLine,
7
+ sc,
8
+ } from './';
9
+
10
+ const defaultBasePie = {
11
+ chart: {
12
+ innerRadius: 0,
13
+ outerRadius: 1,
14
+ cornerRadius: 0,
15
+ padAngle: 2,
16
+ },
17
+ };
18
+ const basePie = ({
19
+ chart: {
20
+ innerRadius = defaultBasePie.chart.innerRadius,
21
+ outerRadius = defaultBasePie.chart.outerRadius,
22
+ cornerRadius = defaultBasePie.chart.cornerRadius,
23
+ padAngle = defaultBasePie.chart.padAngle,
24
+ } = defaultBasePie.chart,
25
+ } = defaultBasePie) => ({
26
+ name: 'chart',
27
+ displayName: '图形',
28
+ value: [
29
+ {
30
+ name: 'innerRadius',
31
+ displayName: '半径',
32
+ value: innerRadius,
33
+ type: 'range',
34
+ config: {
35
+ min: 0,
36
+ max: 1,
37
+ step: 0.01,
38
+ },
39
+ },
40
+ {
41
+ name: 'outerRadius',
42
+ displayName: '外半径',
43
+ value: outerRadius,
44
+ type: 'range',
45
+ config: {
46
+ min: 0,
47
+ max: 1,
48
+ step: 0.01,
49
+ },
50
+ },
51
+ {
52
+ name: 'cornerRadius',
53
+ displayName: '圆角',
54
+ value: cornerRadius,
55
+ type: 'number',
56
+ config: {
57
+ suffix: 'px',
58
+ },
59
+ },
60
+ {
61
+ name: 'padAngle',
62
+ displayName: '间距',
63
+ value: padAngle,
64
+ type: 'range',
65
+ config: {
66
+ min: 0,
67
+ max: 20,
68
+ step: 1,
69
+ suffix: '°',
70
+ },
71
+ },
72
+ ],
73
+ config: {
74
+ defaultOpen: true,
75
+ },
76
+ });
77
+
78
+ const defaultBaseRose = {
79
+ chart: {
80
+ innerRadius: 0,
81
+ outerRadius: 1,
82
+ padAngle: 2,
83
+ },
84
+ };
85
+ const baseRose = ({
86
+ chart: {
87
+ innerRadius = defaultBaseRose.chart.innerRadius,
88
+ outerRadius = defaultBaseRose.chart.outerRadius,
89
+ padAngle = defaultBaseRose.chart.padAngle,
90
+ } = defaultBaseRose.chart,
91
+ } = defaultBaseRose) => ({
92
+ name: 'chart',
93
+ displayName: '饼图',
94
+ value: [
95
+ {
96
+ name: 'innerRadius',
97
+ displayName: '半径',
98
+ value: innerRadius,
99
+ type: 'range',
100
+ config: {
101
+ min: 0,
102
+ max: 1,
103
+ step: 0.01,
104
+ },
105
+ },
106
+ {
107
+ name: 'outerRadius',
108
+ displayName: '外半径',
109
+ value: outerRadius,
110
+ type: 'range',
111
+ config: {
112
+ min: 0,
113
+ max: 1,
114
+ step: 0.01,
115
+ },
116
+ },
117
+ {
118
+ name: 'padAngle',
119
+ displayName: '间距',
120
+ value: padAngle,
121
+ type: 'range',
122
+ config: {
123
+ min: 0,
124
+ max: 30,
125
+ step: 1,
126
+ suffix: '°',
127
+ },
128
+ },
129
+ ],
130
+ config: {
131
+ defaultOpen: true,
132
+ },
133
+ });
134
+
135
+ const defaultGridLine = {
136
+ show: true,
137
+ color: '#BAE7FF',
138
+ lineWidth: 1,
139
+ };
140
+ const gridLine = ({
141
+ show = defaultGridLine.show,
142
+ color = defaultGridLine.color,
143
+ lineWidth = defaultGridLine.lineWidth,
144
+ } = defaultGridLine) => ({
145
+ name: 'gridLine',
146
+ displayName: '网格线',
147
+ value: [
148
+ {
149
+ name: 'show',
150
+ displayName: '显示',
151
+ value: show,
152
+ type: 'boolean',
153
+ },
154
+ {
155
+ rule: [['show', '$eq', true]],
156
+ name: 'color',
157
+ displayName: '颜色',
158
+ value: color,
159
+ type: 'color',
160
+ },
161
+ {
162
+ rule: [['show', '$eq', true]],
163
+ name: 'lineWidth',
164
+ displayName: '粗细',
165
+ value: lineWidth,
166
+ type: 'number',
167
+ config: {
168
+ suffix: 'px',
169
+ },
170
+ },
171
+ ],
172
+ });
173
+
174
+ const defaultRoseAxis = {
175
+ axis: {
176
+ count: 6,
177
+ textStyle: font(),
178
+ gap: 10,
179
+ axisline: {
180
+ show: true,
181
+ color: '#BAE7FF',
182
+ lineWidth: 1,
183
+ },
184
+ gridLine: {
185
+ show: true,
186
+ color: '#BAE7FF',
187
+ lineWidth: 1,
188
+ },
189
+ },
190
+ };
191
+
192
+ const roseCategoryAxis = ({
193
+ axis: {
194
+ textStyle = defaultRoseAxis.axis.textStyle,
195
+ gap = defaultRoseAxis.axis.gap,
196
+ axisLine: axisLine_ = defaultRoseAxis.axis.axisline,
197
+ gridLine: gridLine_ = defaultRoseAxis.axis.gridLine,
198
+ } = defaultRoseAxis.axis,
199
+ } = defaultRoseAxis) => ({
200
+ name: 'categoryAxis',
201
+ displayName: '类目轴',
202
+ value: [
203
+ {
204
+ name: 'textStyle',
205
+ displayName: '标签文本',
206
+ value: font(textStyle),
207
+ type: 'textStyle',
208
+ markColorType: 'textColor'
209
+ },
210
+ {
211
+ name: 'gap',
212
+ displayName: '边距',
213
+ value: gap,
214
+ type: 'number',
215
+ config: {
216
+ suffix: 'px',
217
+ },
218
+ },
219
+ axisLine(axisLine_),
220
+ gridLine(gridLine_),
221
+ ],
222
+ config: {
223
+ defaultOpen: true,
224
+ },
225
+ });
226
+
227
+ const roseValueAxis = ({
228
+ axis: {
229
+ count = defaultRoseAxis.axis.count,
230
+ textStyle = defaultRoseAxis.axis.textStyle,
231
+ gap = defaultRoseAxis.axis.gap,
232
+ axisLine: axisLine_ = defaultRoseAxis.axis.axisline,
233
+ gridLine: gridLine_ = defaultRoseAxis.axis.gridLine,
234
+ } = defaultRoseAxis.axis,
235
+ } = defaultRoseAxis) => ({
236
+ name: 'valueAxis',
237
+ displayName: '数值轴',
238
+ value: [
239
+ {
240
+ name: 'count',
241
+ displayName: '数量',
242
+ value: count,
243
+ type: 'number',
244
+ },
245
+ {
246
+ name: 'textStyle',
247
+ displayName: '标签文本',
248
+ value: font(textStyle),
249
+ type: 'textStyle',
250
+ markColorType: 'textColor'
251
+ },
252
+ {
253
+ name: 'gap',
254
+ displayName: '边距',
255
+ value: gap,
256
+ type: 'number',
257
+ config: {
258
+ suffix: 'px',
259
+ },
260
+ },
261
+ axisLine(axisLine_),
262
+ gridLine(gridLine_),
263
+ ],
264
+ config: {
265
+ defaultOpen: true,
266
+ },
267
+ });
268
+
269
+ const defaultCategoryText = {
270
+ categoryText: {
271
+ show: true,
272
+ font: font(),
273
+ gap: 10,
274
+ },
275
+ };
276
+ const categoryText = ({
277
+ categoryText: {
278
+ show = defaultCategoryText.categoryText.show,
279
+ font = defaultCategoryText.categoryText.font,
280
+ gap = defaultCategoryText.categoryText.gap,
281
+ } = defaultCategoryText,
282
+ }) => ({
283
+ name: 'categoryText',
284
+ displayName: '类目文本',
285
+ value: [
286
+ {
287
+ name: 'show',
288
+ displayName: '显示',
289
+ value: show,
290
+ type: 'boolean',
291
+ },
292
+ {
293
+ ...showRule(),
294
+ name: 'textStyle',
295
+ displayName: '文本样式',
296
+ value: font,
297
+ type: 'textStyle',
298
+ markColorType: 'textColor'
299
+ },
300
+ {
301
+ ...showRule(),
302
+ name: 'gap',
303
+ displayName: '间距',
304
+ value: gap,
305
+ type: 'number',
306
+ config: {
307
+ suffix: 'px',
308
+ },
309
+ },
310
+ ],
311
+ });
312
+
313
+ const defaultDecorate = {
314
+ decorate: {
315
+ show: true,
316
+ innerRadius: 0.3,
317
+ outerRadius: 0.6,
318
+ opacity: 80,
319
+ speed: 5,
320
+ direction: 'clockwise',
321
+ },
322
+ };
323
+ const decorate = ({
324
+ decorate: {
325
+ show = defaultDecorate.decorate.show,
326
+ innerRadius = defaultDecorate.decorate.innerRadius,
327
+ outerRadius = defaultDecorate.decorate.outerRadius,
328
+ opacity = defaultDecorate.decorate.opacity,
329
+ speed = defaultDecorate.decorate.speed,
330
+ direction = defaultDecorate.decorate.direction,
331
+ } = defaultDecorate,
332
+ }) => ({
333
+ name: 'decorate',
334
+ displayName: '装饰物',
335
+ value: [
336
+ {
337
+ name: 'show',
338
+ displayName: '显示',
339
+ value: show,
340
+ type: 'boolean',
341
+ },
342
+ {
343
+ rule: [['show', '$eq', true]],
344
+ name: 'innerRadius',
345
+ displayName: '内半径',
346
+ value: innerRadius,
347
+ type: 'range',
348
+ config: {
349
+ min: 0,
350
+ max: 1,
351
+ step: 0.01,
352
+ },
353
+ },
354
+ {
355
+ rule: [['show', '$eq', true]],
356
+ name: 'outerRadius',
357
+ displayName: '外半径',
358
+ value: outerRadius,
359
+ type: 'range',
360
+ config: {
361
+ min: 0,
362
+ max: 1,
363
+ step: 0.01,
364
+ },
365
+ },
366
+ {
367
+ rule: [['show', '$eq', true]],
368
+ name: 'opacity',
369
+ displayName: '透明度',
370
+ value: opacity,
371
+ type: 'range',
372
+ config: {
373
+ min: 0,
374
+ max: 100,
375
+ step: 1,
376
+ },
377
+ },
378
+ {
379
+ rule: [['show', '$eq', true]],
380
+ name: 'speed',
381
+ displayName: '旋转速度',
382
+ value: speed,
383
+ type: 'number',
384
+ config: {
385
+ min: 0,
386
+ max: 10,
387
+ },
388
+ },
389
+ {
390
+ rule: [['show', '$eq', true]],
391
+ name: 'direction',
392
+ displayName: '旋转方向',
393
+ value: direction,
394
+ type: 'radio',
395
+ config: {
396
+ options: [
397
+ {
398
+ name: '顺时针',
399
+ value: 'clockwise',
400
+ },
401
+ {
402
+ name: '逆时针',
403
+ value: 'counterClockwise',
404
+ },
405
+ ],
406
+ },
407
+ },
408
+ ],
409
+ config: {
410
+ defaultOpen: true,
411
+ },
412
+ });
413
+
414
+ const defaultDecorate2 = {
415
+ show: true,
416
+ radiusWidth: 0.3,
417
+ opacity: 80,
418
+ };
419
+ const decorate2 = ({
420
+ show = defaultDecorate2.show,
421
+ radiusWidth = defaultDecorate2.radiusWidth,
422
+ opacity = defaultDecorate2.opacity,
423
+ }) => ({
424
+ name: 'decorate2',
425
+ displayName: '装饰物',
426
+ value: [
427
+ {
428
+ name: 'show',
429
+ displayName: '显示',
430
+ value: show,
431
+ type: 'boolean',
432
+ },
433
+ {
434
+ rule: [['show', '$eq', true]],
435
+ name: 'radiusWidth',
436
+ displayName: '弧宽',
437
+ value: radiusWidth,
438
+ type: 'range',
439
+ config: {
440
+ min: 0,
441
+ max: 100,
442
+ },
443
+ },
444
+ {
445
+ rule: [['show', '$eq', true]],
446
+ name: 'opacity',
447
+ displayName: '透明度',
448
+ value: opacity,
449
+ type: 'range',
450
+ config: {
451
+ min: 0,
452
+ max: 100,
453
+ suffix: '%',
454
+ },
455
+ },
456
+ ],
457
+ });
458
+
459
+ const defaultCurrent = {
460
+ current: {
461
+ show: true,
462
+ gap: 45,
463
+ name: { show: true, sameColor: false, font: font() },
464
+ percent: {
465
+ show: true,
466
+ sameColor: false,
467
+ precision: 0,
468
+ font: font(),
469
+ translate: { x: 0, y: 0 },
470
+ },
471
+ value: {
472
+ show: true,
473
+ sameColor: false,
474
+ font: font(),
475
+ translate: { x: 0, y: 0 },
476
+ suffix: {
477
+ show: false,
478
+ text: '',
479
+ fontSize: 12,
480
+ translate: { x: 0, y: 0 },
481
+ },
482
+ },
483
+ },
484
+ };
485
+ export const current = ({
486
+ current: {
487
+ show = defaultCurrent.current.show,
488
+ gap = defaultCurrent.current.gap,
489
+ name: {
490
+ show: showName = defaultCurrent.current.name.show,
491
+ sameColor: nameColor = defaultCurrent.current.name.sameColor,
492
+ font: nameFont = defaultCurrent.current.name.font,
493
+ translate: nameTranslate,
494
+ textBreak,
495
+ } = defaultCurrent.current.name,
496
+ percent: {
497
+ show: showPercent = defaultCurrent.current.percent.show,
498
+ sameColor: percentColor = defaultCurrent.current.percent.sameColor,
499
+ precision = defaultCurrent.current.percent.precision,
500
+ font: percentFont = defaultCurrent.current.percent.font,
501
+ translate: { x: percentTranslateX, y: percentTranslateY } = defaultCurrent
502
+ .current.percent.translate,
503
+ } = defaultCurrent.current.percent,
504
+ value: {
505
+ show: showValue = defaultCurrent.current.value.show,
506
+ sameColor: valueColor = defaultCurrent.current.value.sameColor,
507
+ font: valueFont = defaultCurrent.current.value.font,
508
+ translate: { x: valueTranslateX, y: valueTranslateY } = defaultCurrent
509
+ .current.value.translate,
510
+ suffix: {
511
+ show: showSuffix = defaultCurrent.current.value.suffix.show,
512
+ text = defaultCurrent.current.value.suffix.text,
513
+ fontSize = defaultCurrent.current.value.suffix.fontSize,
514
+ translate: { x: suffixTranslateX, y: suffixTranslateY } = defaultCurrent
515
+ .current.value.suffix.translate,
516
+ } = defaultCurrent.current.value.suffix,
517
+ } = defaultCurrent.current.value,
518
+ } = defaultCurrent.current,
519
+ } = defaultCurrent) => ({
520
+ name: 'current',
521
+ displayName: '当前值',
522
+ value: [
523
+ showConfig(show),
524
+ {
525
+ rule: [['show', '$eq', true]],
526
+ name: 'gap',
527
+ displayName: '间距',
528
+ value: gap,
529
+ type: 'number',
530
+ config: {
531
+ suffix: 'px',
532
+ },
533
+ },
534
+ {
535
+ rule: [['show', '$eq', true]],
536
+ name: 'name',
537
+ displayName: '类目',
538
+ value: [
539
+ showConfig(showName),
540
+ {
541
+ rule: [['show', '$eq', true]],
542
+ name: 'sameColor',
543
+ displayName: '颜色跟随',
544
+ value: nameColor,
545
+ type: 'boolean'
546
+ },
547
+ {
548
+ rule: [['show', '$eq', true]],
549
+ name: 'font',
550
+ displayName: '文本样式',
551
+ value: nameFont,
552
+ type: 'textStyle',
553
+ markColorType: 'textColor',
554
+ },
555
+ nameTranslate != undefined && {
556
+ ...showRule(),
557
+ ...translateConfig(nameTranslate.x, nameTranslate.y),
558
+ },
559
+ textBreak != undefined && {
560
+ ...showRule(),
561
+ ...sc('textBreak', '首行字数', 'number', textBreak, {
562
+ min: 0,
563
+ suffix: '',
564
+ }),
565
+ },
566
+ ].filter((item) => !!item),
567
+ },
568
+ {
569
+ rule: [['show', '$eq', true]],
570
+ name: 'percent',
571
+ displayName: '占比值',
572
+ value: [
573
+ showConfig(showPercent),
574
+ {
575
+ rule: [['show', '$eq', true]],
576
+ name: 'precision',
577
+ displayName: '小数位数',
578
+ value: precision,
579
+ type: 'number',
580
+ config: {
581
+ min: 0,
582
+ },
583
+ },
584
+ {
585
+ rule: [['show', '$eq', true]],
586
+ name: 'sameColor',
587
+ displayName: '颜色跟随',
588
+ value: percentColor,
589
+ type: 'boolean'
590
+ },
591
+ {
592
+ rule: [['show', '$eq', true]],
593
+ name: 'font',
594
+ displayName: '文本样式',
595
+ value: percentFont,
596
+ type: 'textStyle',
597
+ markColorType: 'textColor',
598
+ },
599
+ {
600
+ rule: [['show', '$eq', true]],
601
+ ...translateConfig(percentTranslateX, percentTranslateY),
602
+ },
603
+ ],
604
+ },
605
+ {
606
+ rule: [['show', '$eq', true]],
607
+ name: 'value',
608
+ displayName: '真实值',
609
+ value: [
610
+ showConfig(showValue),
611
+ {
612
+ rule: [['show', '$eq', true]],
613
+ name: 'sameColor',
614
+ displayName: '颜色跟随',
615
+ value: valueColor,
616
+ type: 'boolean'
617
+ },
618
+ {
619
+ rule: [['show', '$eq', true]],
620
+ name: 'font',
621
+ displayName: '文本样式',
622
+ value: valueFont,
623
+ type: 'textStyle',
624
+ markColorType: 'textColor',
625
+ },
626
+ {
627
+ rule: [['show', '$eq', true]],
628
+ ...translateConfig(valueTranslateX, valueTranslateY),
629
+ },
630
+ {
631
+ rule: [['show', '$eq', true]],
632
+ name: 'suffix',
633
+ displayName: '后缀',
634
+ value: [
635
+ {
636
+ name: 'show',
637
+ displayName: '显示',
638
+ value: showSuffix,
639
+ type: 'boolean',
640
+ },
641
+ {
642
+ rule: [['show', '$eq', true]],
643
+ name: 'text',
644
+ displayName: '内容',
645
+ value: text,
646
+ type: 'input',
647
+ },
648
+ {
649
+ rule: [['show', '$eq', true]],
650
+ name: 'fontSize',
651
+ displayName: '字号',
652
+ value: fontSize,
653
+ type: 'number',
654
+ },
655
+ {
656
+ rule: [['show', '$eq', true]],
657
+ ...translateConfig(suffixTranslateX, suffixTranslateY),
658
+ },
659
+ ],
660
+ config: {
661
+ defaultOpen: true,
662
+ },
663
+ },
664
+ ],
665
+ },
666
+ ],
667
+ config: {
668
+ defaultOpen: true,
669
+ },
670
+ });
671
+
672
+ const defaultBaseOuter = {
673
+ chart: {
674
+ innerRadius: 0,
675
+ outerRadius: 1,
676
+ padAngle: 2,
677
+ },
678
+ };
679
+ const baseOuter = ({
680
+ chart: {
681
+ innerRadius = defaultBasePie.chart.innerRadius,
682
+ outerRadius = defaultBasePie.chart.outerRadius,
683
+ padAngle = defaultBasePie.chart.padAngle,
684
+ } = defaultBasePie.chart,
685
+ } = defaultBaseOuter) => ({
686
+ name: 'chart',
687
+ displayName: '图形',
688
+ value: [
689
+ {
690
+ name: 'innerRadius',
691
+ displayName: '半径',
692
+ value: innerRadius,
693
+ type: 'range',
694
+ config: {
695
+ min: 0,
696
+ max: 1,
697
+ step: 0.01,
698
+ },
699
+ },
700
+ {
701
+ name: 'outerRadius',
702
+ displayName: '外半径',
703
+ value: outerRadius,
704
+ type: 'range',
705
+ config: {
706
+ min: 0,
707
+ max: 1,
708
+ step: 0.01,
709
+ },
710
+ },
711
+ {
712
+ name: 'padAngle',
713
+ displayName: '间距',
714
+ value: padAngle,
715
+ type: 'range',
716
+ config: {
717
+ min: 0,
718
+ max: 20,
719
+ step: 1,
720
+ suffix: '°',
721
+ },
722
+ },
723
+ ],
724
+ config: {
725
+ defaultOpen: true,
726
+ },
727
+ });
728
+
729
+ const defaultOuterDecorate = {
730
+ outerDecorate: {
731
+ color: '#CF00FF',
732
+ width: 10,
733
+ tick: {
734
+ show: true,
735
+ count: 12,
736
+ color: '#CF00FF',
737
+ width: 3,
738
+ length: 8,
739
+ },
740
+ },
741
+ };
742
+ const outerDecorate = ({
743
+ outerDecorate: {
744
+ color = defaultOuterDecorate.outerDecorate.color,
745
+ width = defaultOuterDecorate.outerDecorate.width,
746
+ tick: {
747
+ show = defaultOuterDecorate.outerDecorate.tick.show,
748
+ count = defaultOuterDecorate.outerDecorate.tick.count,
749
+ color: tickColor = defaultOuterDecorate.outerDecorate.tick.color,
750
+ width: tickWidth = defaultOuterDecorate.outerDecorate.tick.width,
751
+ length = defaultOuterDecorate.outerDecorate.tick.length,
752
+ } = defaultOuterDecorate.outerDecorate.tick,
753
+ } = defaultOuterDecorate.outerDecorate,
754
+ } = defaultOuterDecorate) => ({
755
+ name: 'outerDecorate',
756
+ displayName: '外环装饰',
757
+ value: [
758
+ {
759
+ name: 'color',
760
+ displayName: '颜色',
761
+ value: color,
762
+ type: 'color',
763
+ },
764
+ {
765
+ name: 'width',
766
+ displayName: '粗细',
767
+ value: width,
768
+ type: 'number',
769
+ config: {
770
+ min: 0,
771
+ max: 100,
772
+ suffix: 'px',
773
+ },
774
+ },
775
+ {
776
+ name: 'tick',
777
+ displayName: '刻度',
778
+ value: [
779
+ showConfig(show),
780
+ {
781
+ ...showRule(),
782
+ name: 'count',
783
+ displayName: '个数',
784
+ value: count,
785
+ type: 'number',
786
+ config: {
787
+ min: 0,
788
+ },
789
+ },
790
+ {
791
+ ...showRule(),
792
+ name: 'color',
793
+ displayName: '颜色',
794
+ value: tickColor,
795
+ type: 'color',
796
+ },
797
+ {
798
+ ...showRule(),
799
+ name: 'width',
800
+ displayName: '粗细',
801
+ value: tickWidth,
802
+ type: 'number',
803
+ config: {
804
+ suffix: 'px',
805
+ },
806
+ },
807
+ {
808
+ ...showRule(),
809
+ name: 'length',
810
+ displayName: '长度',
811
+ value: length,
812
+ type: 'number',
813
+ config: {
814
+ suffix: 'px',
815
+ },
816
+ },
817
+ ],
818
+ },
819
+ ],
820
+ });
821
+
822
+ export const rosePie = (_basePie = defaultBasePie) => ({
823
+ name: 'fan',
824
+ displayName: '环图属性',
825
+ value: [basePie(_basePie)],
826
+ });
827
+
828
+ export const rosePieDecorate = (
829
+ _baseOuter = defaultBaseOuter,
830
+ _outerDecorate = defaultOuterDecorate
831
+ ) => ({
832
+ name: 'fan',
833
+ displayName: '环图属性',
834
+ value: [baseOuter(_baseOuter), outerDecorate(_outerDecorate)],
835
+ });
836
+
837
+ export const donut = (
838
+ {
839
+ basePie: _basePie = defaultBasePie,
840
+ decorate: _decorate = defaultDecorate,
841
+ } = {
842
+ basePie: defaultBasePie,
843
+ decorate: defaultDecorate,
844
+ }
845
+ ) => ({
846
+ name: 'fan',
847
+ displayName: '环图属性',
848
+ value: [basePie(_basePie), decorate(_decorate)],
849
+ });
850
+
851
+ export const carouselDonut = (
852
+ { basePie: _basePie = defaultBasePie, current: _current = defaultCurrent } = {
853
+ basePie: defaultBasePie,
854
+ current: defaultCurrent,
855
+ }
856
+ ) => ({
857
+ name: 'fan',
858
+ displayName: '环图属性',
859
+ value: [basePie(_basePie), current(_current)],
860
+ });
861
+
862
+ export const nestRosePie = (
863
+ _baseRose = defaultBaseRose,
864
+ _categoryAxis = defaultRoseAxis,
865
+ _valueAxis = defaultRoseAxis
866
+ ) => ({
867
+ name: 'fan',
868
+ displayName: '环图属性',
869
+ value: [
870
+ baseRose(_baseRose),
871
+ roseCategoryAxis(_categoryAxis),
872
+ roseValueAxis(_valueAxis),
873
+ ],
874
+ });
875
+
876
+ export const carouselDonut2 = (
877
+ {
878
+ basePie: _basePie = defaultBasePie,
879
+ categoryText: _categoryText = defaultCategoryText,
880
+ decorate2: _decorate2 = defaultDecorate2,
881
+ current: _current = defaultCurrent,
882
+ } = {
883
+ basePie: defaultBasePie,
884
+ categoryText: defaultCategoryText,
885
+ decorate2: defaultDecorate2,
886
+ current: defaultCurrent,
887
+ }
888
+ ) => ({
889
+ name: 'fan',
890
+ displayName: '环图属性',
891
+ value: [
892
+ basePie(_basePie),
893
+ categoryText(_categoryText),
894
+ decorate2(_decorate2),
895
+ current(_current),
896
+ ],
897
+ });
898
+
899
+ const defaultPie = {
900
+ fan: {
901
+ chart: { rose: false, baseRadius: 0.5, outerRadius: 1, innerRadius: 0 },
902
+ angle: { startAngle: 0, endAngle: 360, antiClockwise: false },
903
+ stroke: { show: false, strokeWidth: 1, color: '#FFFFFF' },
904
+ },
905
+ };
906
+
907
+ export default ({
908
+ fan: {
909
+ chart: {
910
+ outerRadius = defaultPie.fan.chart.outerRadius,
911
+ rose = defaultPie.fan.chart.rose,
912
+ baseRadius = defaultPie.fan.chart.baseRadius,
913
+ } = defaultPie.fan.chart,
914
+ angle: {
915
+ startAngle = defaultPie.fan.angle.startAngle,
916
+ endAngle = defaultPie.fan.angle.endAngle,
917
+ antiClockwise = defaultPie.fan.angle.antiClockwise,
918
+ } = defaultPie.fan.angle,
919
+ stroke: {
920
+ show = defaultPie.fan.stroke.show,
921
+ strokeWidth = defaultPie.fan.stroke.strokeWidth,
922
+ color = defaultPie.fan.stroke.color,
923
+ } = defaultPie.fan.stroke,
924
+ } = defaultPie.fan,
925
+ } = defaultPie) => ({
926
+ name: 'fan',
927
+ displayName: '饼图属性',
928
+ value: [
929
+ {
930
+ name: 'chart',
931
+ displayName: '图形',
932
+ value: [
933
+ {
934
+ name: 'outerRadius',
935
+ displayName: '半径',
936
+ value: outerRadius,
937
+ type: 'range',
938
+ config: {
939
+ min: 0,
940
+ max: 1,
941
+ step: 0.01,
942
+ },
943
+ },
944
+ {
945
+ name: 'rose',
946
+ displayName: '类玫瑰图',
947
+ value: rose,
948
+ type: 'boolean',
949
+ },
950
+ {
951
+ rule: [['rose', '$eq', true]],
952
+ name: 'baseRadius',
953
+ displayName: '最小半径',
954
+ value: baseRadius,
955
+ type: 'range',
956
+ config: {
957
+ min: 0,
958
+ max: 1,
959
+ step: 0.01,
960
+ },
961
+ },
962
+ ],
963
+ config: {
964
+ defaultOpen: true,
965
+ },
966
+ },
967
+ {
968
+ name: 'angle',
969
+ displayName: '角度',
970
+ value: [
971
+ {
972
+ name: 'startAngle',
973
+ displayName: '起始',
974
+ value: startAngle,
975
+ type: 'range',
976
+ config: {
977
+ step: 1,
978
+ min: 0,
979
+ max: 360,
980
+ },
981
+ },
982
+ {
983
+ name: 'endAngle',
984
+ displayName: '结束',
985
+ value: endAngle,
986
+ type: 'range',
987
+ config: {
988
+ step: 1,
989
+ min: 0,
990
+ max: 360,
991
+ },
992
+ },
993
+ {
994
+ name: 'antiClockwise',
995
+ displayName: '反向',
996
+ value: antiClockwise,
997
+ type: 'boolean',
998
+ tip: '启用使用另一时针顺序绘制饼图',
999
+ },
1000
+ ],
1001
+ config: {
1002
+ defaultOpen: true,
1003
+ },
1004
+ },
1005
+ {
1006
+ name: 'stroke',
1007
+ displayName: '描边',
1008
+ value: [
1009
+ {
1010
+ name: 'show',
1011
+ displayName: '开启',
1012
+ value: show,
1013
+ type: 'boolean',
1014
+ },
1015
+ {
1016
+ rule: [['show', '$eq', true]],
1017
+ name: 'strokeWidth',
1018
+ displayName: '宽度',
1019
+ value: strokeWidth,
1020
+ type: 'number',
1021
+ },
1022
+ {
1023
+ rule: [['show', '$eq', true]],
1024
+ name: 'color',
1025
+ displayName: '颜色',
1026
+ value: color,
1027
+ type: 'color',
1028
+ },
1029
+ ],
1030
+ config: {
1031
+ defaultOpen: true,
1032
+ },
1033
+ },
1034
+ ],
1035
+ });