@easyv/config 1.0.42 → 1.0.46

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,969 +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
- 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
- } = defaultCurrent.current.name,
481
- percent: {
482
- show: showPercent = defaultCurrent.current.percent.show,
483
- precision = defaultCurrent.current.percent.precision,
484
- font: percentFont = defaultCurrent.current.percent.font,
485
- translate: { x: percentTranslateX, y: percentTranslateY } = defaultCurrent
486
- .current.percent.translate,
487
- } = defaultCurrent.current.percent,
488
- value: {
489
- show: showValue = defaultCurrent.current.value.show,
490
- font: valueFont = defaultCurrent.current.value.font,
491
- translate: { x: valueTranslateX, y: valueTranslateY } = defaultCurrent
492
- .current.value.translate,
493
- suffix: {
494
- show: showSuffix = defaultCurrent.current.value.suffix.show,
495
- text = defaultCurrent.current.value.suffix.text,
496
- fontSize = defaultCurrent.current.value.suffix.fontSize,
497
- translate: { x: suffixTranslateX, y: suffixTranslateY } = defaultCurrent
498
- .current.value.suffix.translate,
499
- } = defaultCurrent.current.value.suffix,
500
- } = defaultCurrent.current.value,
501
- } = defaultCurrent.current,
502
- } = defaultCurrent) => ({
503
- name: 'current',
504
- displayName: '当前值',
505
- value: [
506
- showConfig(show),
507
- {
508
- rule: [['show', '$eq', true]],
509
- name: 'gap',
510
- displayName: '间距',
511
- value: gap,
512
- type: 'number',
513
- config: {
514
- suffix: 'px',
515
- },
516
- },
517
- {
518
- rule: [['show', '$eq', true]],
519
- name: 'name',
520
- displayName: '类目',
521
- value: [
522
- showConfig(showName),
523
- {
524
- rule: [['show', '$eq', true]],
525
- name: 'font',
526
- displayName: '文本样式',
527
- value: nameFont,
528
- type: 'textStyle',
529
- },
530
- ],
531
- },
532
- {
533
- rule: [['show', '$eq', true]],
534
- name: 'percent',
535
- displayName: '占比值',
536
- value: [
537
- showConfig(showPercent),
538
- {
539
- rule: [['show', '$eq', true]],
540
- name: 'precision',
541
- displayName: '小数位数',
542
- value: precision,
543
- type: 'number',
544
- config: {
545
- min: 0,
546
- },
547
- },
548
- {
549
- rule: [['show', '$eq', true]],
550
- name: 'font',
551
- displayName: '文本样式',
552
- value: percentFont,
553
- type: 'textStyle',
554
- },
555
- {
556
- rule: [['show', '$eq', true]],
557
- ...translateConfig(percentTranslateX, percentTranslateY),
558
- },
559
- ],
560
- },
561
- {
562
- rule: [['show', '$eq', true]],
563
- name: 'value',
564
- displayName: '真实值',
565
- value: [
566
- showConfig(showValue),
567
- {
568
- rule: [['show', '$eq', true]],
569
- name: 'font',
570
- displayName: '文本样式',
571
- value: valueFont,
572
- type: 'textStyle',
573
- },
574
- {
575
- rule: [['show', '$eq', true]],
576
- ...translateConfig(valueTranslateX, valueTranslateY),
577
- },
578
- {
579
- rule: [['show', '$eq', true]],
580
- name: 'suffix',
581
- displayName: '后缀',
582
- value: [
583
- {
584
- name: 'show',
585
- displayName: '显示',
586
- value: showSuffix,
587
- type: 'boolean',
588
- },
589
- {
590
- rule: [['show', '$eq', true]],
591
- name: 'text',
592
- displayName: '内容',
593
- value: text,
594
- type: 'input',
595
- },
596
- {
597
- rule: [['show', '$eq', true]],
598
- name: 'fontSize',
599
- displayName: '字号',
600
- value: fontSize,
601
- type: 'number',
602
- },
603
- {
604
- rule: [['show', '$eq', true]],
605
- ...translateConfig(suffixTranslateX, suffixTranslateY),
606
- },
607
- ],
608
- config: {
609
- defaultOpen: true,
610
- },
611
- },
612
- ],
613
- },
614
- ],
615
- config: {
616
- defaultOpen: true,
617
- },
618
- });
619
-
620
- const defaultBaseOuter = {
621
- chart: {
622
- innerRadius: 0,
623
- outerRadius: 1,
624
- padAngle: 2,
625
- }
626
- }
627
- const baseOuter = ({
628
- chart: {
629
- innerRadius = defaultBasePie.chart.innerRadius,
630
- outerRadius = defaultBasePie.chart.outerRadius,
631
- padAngle = defaultBasePie.chart.padAngle
632
- } = defaultBasePie.chart
633
- } = defaultBaseOuter) => ({
634
- name: 'chart',
635
- displayName: '图形',
636
- value: [
637
- {
638
- name: 'innerRadius',
639
- displayName: '半径',
640
- value: innerRadius,
641
- type: 'range',
642
- config: {
643
- min: 0,
644
- max: 1,
645
- step: 0.01,
646
- },
647
- },
648
- {
649
- name: 'outerRadius',
650
- displayName: '外半径',
651
- value: outerRadius,
652
- type: 'range',
653
- config: {
654
- min: 0,
655
- max: 1,
656
- step: 0.01,
657
- },
658
- },
659
- {
660
- name: 'padAngle',
661
- displayName: '间距',
662
- value: padAngle,
663
- type: 'range',
664
- config: {
665
- min: 0,
666
- max: 20,
667
- step: 1,
668
- suffix: '°',
669
- },
670
- },
671
- ],
672
- config: {
673
- defaultOpen: true,
674
- }
675
- })
676
-
677
- const defaultOuterDecorate = {
678
- outerDecorate:{
679
- color:"#CF00FF",
680
- width:10,
681
- tick:{
682
- show:true,
683
- count:12,
684
- color:"#CF00FF",
685
- width:3,
686
- length:8
687
- }
688
- }
689
- }
690
- const outerDecorate=({
691
- outerDecorate:{
692
- color = defaultOuterDecorate.outerDecorate.color,
693
- width = defaultOuterDecorate.outerDecorate.width,
694
- tick:{
695
- show = defaultOuterDecorate.outerDecorate.tick.show,
696
- count = defaultOuterDecorate.outerDecorate.tick.count,
697
- color: tickColor = defaultOuterDecorate.outerDecorate.tick.color,
698
- width: tickWidth = defaultOuterDecorate.outerDecorate.tick.width,
699
- length = defaultOuterDecorate.outerDecorate.tick.length
700
- } = defaultOuterDecorate.outerDecorate.tick
701
- }=defaultOuterDecorate.outerDecorate
702
- } = defaultOuterDecorate)=>({
703
- name: 'outerDecorate',
704
- displayName: '外环装饰',
705
- value: [
706
- {
707
- name: 'color',
708
- displayName: '颜色',
709
- value: color,
710
- type: 'color'
711
- },
712
- {
713
- name:"width",
714
- displayName:"粗细",
715
- value: width,
716
- type: "number",
717
- config:{
718
- min:0,
719
- max:100,
720
- suffix:"px"
721
- }
722
- },
723
- {
724
- name: 'tick',
725
- displayName: '刻度',
726
- value: [
727
- showConfig(show),
728
- {
729
- ...showRule(),
730
- name:"count",
731
- displayName:"个数",
732
- value:count,
733
- type:"number",
734
- config:{
735
- min:0
736
- }
737
- },
738
- {
739
- ...showRule(),
740
- name:"color",
741
- displayName:"颜色",
742
- value:tickColor,
743
- type:"color"
744
- },
745
- {
746
- ...showRule(),
747
- name:"width",
748
- displayName:"粗细",
749
- value:tickWidth,
750
- type:"number",
751
- config:{
752
- suffix:"px"
753
- }
754
- },
755
- {
756
- ...showRule(),
757
- name:"length",
758
- displayName:"长度",
759
- value:length,
760
- type:"number",
761
- config:{
762
- suffix:"px"
763
- }
764
- }
765
- ],
766
- }
767
- ]
768
- })
769
-
770
- export const rosePie = (_basePie = defaultBasePie) => ({
771
- name: 'fan',
772
- displayName: '环图属性',
773
- value: [basePie(_basePie)],
774
- });
775
-
776
- export const rosePieDecorate = (_baseOuter = defaultBaseOuter, _outerDecorate = defaultOuterDecorate)=>({
777
- name: 'fan',
778
- displayName: '环图属性',
779
- value:[baseOuter(_baseOuter),outerDecorate(_outerDecorate)]
780
- })
781
-
782
- export const donut = (
783
- {
784
- basePie: _basePie = defaultBasePie,
785
- decorate: _decorate = defaultDecorate,
786
- } = {
787
- basePie: defaultBasePie,
788
- decorate: defaultDecorate,
789
- }
790
- ) => ({
791
- name: 'fan',
792
- displayName: '环图属性',
793
- value: [basePie(_basePie), decorate(_decorate)],
794
- });
795
-
796
- export const carouselDonut = (
797
- { basePie: _basePie = defaultBasePie, current: _current = defaultCurrent } = {
798
- basePie: defaultBasePie,
799
- current: defaultCurrent,
800
- }
801
- ) => ({
802
- name: 'fan',
803
- displayName: '环图属性',
804
- value: [basePie(_basePie), current(_current)],
805
- });
806
-
807
- export const nestRosePie = (_baseRose = defaultBaseRose, _categoryAxis = defaultRoseAxis, _valueAxis = defaultRoseAxis) =>({
808
- name: 'fan',
809
- displayName: '环图属性',
810
- value:[baseRose(_baseRose), roseCategoryAxis(_categoryAxis), roseValueAxis(_valueAxis)]
811
- });
812
-
813
- export const carouselDonut2 = (
814
- {
815
- basePie: _basePie = defaultBasePie,
816
- categoryText: _categoryText = defaultCategoryText,
817
- decorate2: _decorate2 = defaultDecorate2,
818
- current: _current = defaultCurrent
819
- }={
820
- basePie: defaultBasePie,
821
- categoryText: defaultCategoryText,
822
- decorate2: defaultDecorate2,
823
- current: defaultCurrent,
824
- }
825
- )=>({
826
- name:'fan',
827
- displayName:'环图属性',
828
- value:[basePie(_basePie),categoryText(_categoryText), decorate2(_decorate2),current(_current)]
829
- })
830
-
831
-
832
-
833
- const defaultPie = {
834
- fan: {
835
- chart: { rose: false, baseRadius: 0.5, outerRadius: 1, innerRadius: 0 },
836
- angle: { startAngle: 0, endAngle: 360, antiClockwise: false },
837
- stroke: { show: false, strokeWidth: 1, color: '#FFFFFF' },
838
- },
839
- };
840
-
841
- export default ({
842
- fan: {
843
- chart: {
844
- outerRadius = defaultPie.fan.chart.outerRadius,
845
- rose = defaultPie.fan.chart.rose,
846
- baseRadius = defaultPie.fan.chart.baseRadius,
847
- } = defaultPie.fan.chart,
848
- angle: {
849
- startAngle = defaultPie.fan.angle.startAngle,
850
- endAngle = defaultPie.fan.angle.endAngle,
851
- antiClockwise = defaultPie.fan.angle.antiClockwise,
852
- } = defaultPie.fan.angle,
853
- stroke: {
854
- show = defaultPie.fan.stroke.show,
855
- strokeWidth = defaultPie.fan.stroke.strokeWidth,
856
- color = defaultPie.fan.stroke.color,
857
- } = defaultPie.fan.stroke,
858
- } = defaultPie.fan,
859
- } = defaultPie) => ({
860
- name: 'fan',
861
- displayName: '饼图属性',
862
- value: [
863
- {
864
- name: 'chart',
865
- displayName: '图形',
866
- value: [
867
- {
868
- name: 'outerRadius',
869
- displayName: '半径',
870
- value: outerRadius,
871
- type: 'range',
872
- config: {
873
- min: 0,
874
- max: 1,
875
- step: 0.01,
876
- },
877
- },
878
- {
879
- name: 'rose',
880
- displayName: '类玫瑰图',
881
- value: rose,
882
- type: 'boolean',
883
- },
884
- {
885
- rule: [['rose', '$eq', true]],
886
- name: 'baseRadius',
887
- displayName: '最小半径',
888
- value: baseRadius,
889
- type: 'range',
890
- config: {
891
- min: 0,
892
- max: 1,
893
- step: 0.01,
894
- },
895
- },
896
- ],
897
- config: {
898
- defaultOpen: true,
899
- },
900
- },
901
- {
902
- name: 'angle',
903
- displayName: '角度',
904
- value: [
905
- {
906
- name: 'startAngle',
907
- displayName: '起始',
908
- value: startAngle,
909
- type: 'range',
910
- config: {
911
- step: 1,
912
- min: 0,
913
- max: 360,
914
- },
915
- },
916
- {
917
- name: 'endAngle',
918
- displayName: '结束',
919
- value: endAngle,
920
- type: 'range',
921
- config: {
922
- step: 1,
923
- min: 0,
924
- max: 360,
925
- },
926
- },
927
- {
928
- name: 'antiClockwise',
929
- displayName: '反向',
930
- value: antiClockwise,
931
- type: 'boolean',
932
- tip: '启用使用另一时针顺序绘制饼图',
933
- },
934
- ],
935
- config: {
936
- defaultOpen: true,
937
- },
938
- },
939
- {
940
- name: 'stroke',
941
- displayName: '描边',
942
- value: [
943
- {
944
- name: 'show',
945
- displayName: '开启',
946
- value: show,
947
- type: 'boolean',
948
- },
949
- {
950
- rule: [['show', '$eq', true]],
951
- name: 'strokeWidth',
952
- displayName: '宽度',
953
- value: strokeWidth,
954
- type: 'number',
955
- },
956
- {
957
- rule: [['show', '$eq', true]],
958
- name: 'color',
959
- displayName: '颜色',
960
- value: color,
961
- type: 'color',
962
- },
963
- ],
964
- config: {
965
- defaultOpen: true,
966
- },
967
- },
968
- ],
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
+ ],
969
979
  });