@easyv/config 1.0.44 → 1.0.48

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