@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/series.js CHANGED
@@ -1,822 +1,822 @@
1
- import { mapping, label, multiColor } from '.';
2
-
3
- const _mapping = { fieldName: '', displayName: '' };
4
-
5
- const defaultBandSeries = {
6
- mapping: _mapping,
7
- yOrZ: 'y',
8
- fillImage: 'components/static-image/superChart/pattern.png',
9
- fill: {
10
- type: 'linear',
11
- pure: '#fff',
12
- linear: {
13
- stops: [
14
- { offset: 0, color: '#fff' },
15
- { offset: 50, color: '#ff0' },
16
- { offset: 100, color: '#f0f' },
17
- ],
18
- angle: 30,
19
- opacity: 1,
20
- },
21
- },
22
- highlight: {
23
- show: false,
24
- extent: 'max',
25
- fill: {
26
- type: 'linear',
27
- pure: '#fff',
28
- linear: {
29
- stops: [
30
- { offset: 0, color: '#fff' },
31
- { offset: 50, color: '#ff0' },
32
- { offset: 100, color: '#f0f' },
33
- ],
34
- angle: 30,
35
- opacity: 1,
36
- },
37
- },
38
- },
39
- size: {
40
- width: 10,
41
- height: 10,
42
- },
43
- opacity: 0.65,
44
- };
45
-
46
- export const bandSeries = (
47
- name = Math.random() + '',
48
- {
49
- mapping: {
50
- fieldName = defaultBandSeries.mapping.fieldName,
51
- displayName = defaultBandSeries.mapping.displayName,
52
- } = defaultBandSeries.mapping,
53
- yOrZ = defaultBandSeries.yOrZ,
54
- stack,
55
- patternType,
56
- fillType,
57
- fillImage = defaultBandSeries.fillImage,
58
- patternWidth,
59
- patternHeight,
60
- patternImage,
61
- fill = defaultBandSeries.fill,
62
- size: {
63
- width: urlWidth = defaultBandSeries.size.width,
64
- height: urlHeight = defaultBandSeries.size.height,
65
- } = defaultBandSeries.size,
66
- opacity = defaultBandSeries.opacity,
67
- highlight: {
68
- show: showHighlight = defaultBandSeries.highlight.show,
69
- extent: highlightExtent = defaultBandSeries.highlight.extent,
70
- fill: highlightFill = defaultBandSeries.highlight.fill,
71
- } = defaultBandSeries.highlight,
72
- } = defaultBandSeries
73
- ) => {
74
- return {
75
- name,
76
- displayName: '系列',
77
- value: [
78
- mapping({ fieldName, displayName }),
79
- {
80
- name: 'yOrZ',
81
- displayName: '纵轴选择',
82
- value: yOrZ,
83
- type: 'select',
84
- config: {
85
- options: [
86
- { name: 'Y轴', value: 'y' },
87
- { name: 'Z轴', value: 'z' },
88
- ],
89
- },
90
- },
91
- stack !== undefined && {
92
- name: 'stack',
93
- displayName: '堆叠',
94
- value: stack,
95
- type: 'input',
96
- },
97
- fillType !== undefined && {
98
- name: 'fillType',
99
- displayName: '填充样式',
100
- value: fillType,
101
- type: 'radio',
102
- config: {
103
- options: [
104
- { name: '颜色', value: 'color' },
105
- { name: '纹理', value: 'pattern' },
106
- ],
107
- },
108
- },
109
- fillType !== undefined && {
110
- rule: [['fillType', '$eq', 'color']],
111
- name: 'fill',
112
- displayName: '颜色',
113
- type: 'multicolor',
114
- value: fill,
115
- markColorType: 'seriesGradient',
116
-
117
- },
118
- fillType !== undefined && {
119
- rule: [['fillType', '$eq', 'pattern']],
120
- name: 'url',
121
- displayName: '纹理图片',
122
- type: 'uploadImage',
123
- value: fillImage,
124
- },
125
- fillType !== undefined && {
126
- rule: [['fillType', '$eq', 'pattern']],
127
- name: 'size',
128
- displayName: '尺寸',
129
- value: [
130
- {
131
- name: 'width',
132
- displayName: '宽度',
133
- value: urlWidth,
134
- config: { span: 12, suffix: 'W' },
135
- },
136
- {
137
- name: 'height',
138
- displayName: '高度',
139
- value: urlHeight,
140
- config: { span: 12, suffix: 'H' },
141
- },
142
- ],
143
- type: 'group',
144
- },
145
- fillType !== undefined && {
146
- rule: [['fillType', '$eq', 'pattern']],
147
- type: 'range',
148
- name: 'opacity',
149
- displayName: '透明度',
150
- value: opacity,
151
- config: { max: 1, min: 0, step: 0.01 },
152
- },
153
- (patternType !== undefined || fillType === undefined) && {
154
- name: 'fill',
155
- displayName: '颜色',
156
- type: 'multicolor',
157
- value: fill,
158
- markColorType: 'seriesGradient',
159
- },
160
- patternType !== undefined && {
161
- name: 'patternType',
162
- displayName: '纹理类型',
163
- value: patternType,
164
- type: 'radio',
165
- config: {
166
- options: [
167
- { name: '默认', value: 'default' },
168
- { name: '自定义', value: 'custom' },
169
- ],
170
- },
171
- },
172
- patternImage !== undefined && {
173
- rule: [['patternType', '$eq', 'custom']],
174
- name: 'patternImage',
175
- displayName: '纹理',
176
- value: patternImage,
177
- type: 'uploadImage',
178
- },
179
- patternWidth !== undefined && {
180
- name: 'patternWidth',
181
- displayName: '纹理宽度',
182
- value: patternWidth,
183
- type: 'number',
184
- config: {
185
- suffix: 'px',
186
- },
187
- },
188
- patternHeight !== undefined && {
189
- name: 'patternHeight',
190
- displayName: '纹理高度',
191
- value: patternHeight,
192
- type: 'number',
193
- config: {
194
- suffix: 'px',
195
- },
196
- },
197
- {
198
- name: 'highlight',
199
- displayName: '极值高亮',
200
- value: [
201
- {
202
- name: 'show',
203
- displayName: '显示',
204
- type: 'boolean',
205
- value: showHighlight,
206
- },
207
- {
208
- rule: [['show', '$eq', true]],
209
- name: 'extent',
210
- displayName: '极值',
211
- value: highlightExtent,
212
- type: 'select',
213
- config: {
214
- options: [
215
- { name: '最大值', value: 'max' },
216
- { name: '最小值', value: 'min' },
217
- ],
218
- },
219
- },
220
- {
221
- rule: [['show', '$eq', true]],
222
- name: 'fill',
223
- displayName: '颜色',
224
- type: 'multicolor',
225
- value: highlightFill,
226
- },
227
- ],
228
- },
229
- ].filter((item) => !!item),
230
- type: 'object',
231
- };
232
- };
233
-
234
- const defaultLineSeries = {
235
- mapping: _mapping,
236
- yOrZ: 'y',
237
- line: {
238
- type: 'solid',
239
- color: '#FFFFFF',
240
- lineWidth: '1',
241
- curve: true,
242
- tension: 0,
243
- connectNulls: false,
244
- lighter: {
245
- show: false,
246
- fill: {
247
- type: 'linear',
248
- pure: '#fff',
249
- linear: {
250
- stops: [
251
- { offset: 0, color: '#fff' },
252
- { offset: 50, color: '#ff0' },
253
- { offset: 100, color: '#f0f' },
254
- ],
255
- angle: 30,
256
- opacity: 1,
257
- },
258
- },
259
- length: 200,
260
- width: 2,
261
- unitStep: 1,
262
- },
263
- },
264
- areaType: 'color',
265
- size: {
266
- width: 10,
267
- height: 10,
268
- },
269
- url: 'components/static-image/superChart/pattern.png',
270
- opacity: 0.65,
271
- areaColor: {
272
- type: 'linear',
273
- pure: '#fff',
274
- linear: {
275
- stops: [
276
- { offset: 0, color: '#fff' },
277
- { offset: 50, color: '#ff0' },
278
- { offset: 100, color: '#f0f' },
279
- ],
280
- angle: 30,
281
- opacity: 1,
282
- },
283
- },
284
- };
285
- const defaultIcon = {
286
- show: true,
287
- mode: 'single',
288
- inner: { color: '#83C4FF', radius: 3 },
289
- outer: { color: 'rgba(24,144,255,0.4)', radius: 6 },
290
- color: '#1283E3',
291
- radius: 4,
292
- image: 'components/static-image/superChart/fang.png',
293
- size: {
294
- width: 10,
295
- height: 10,
296
- },
297
- };
298
-
299
- const commonLine = (
300
- {
301
- type = defaultLineSeries.line.type,
302
- color = defaultLineSeries.line.color,
303
- lineWidth = defaultLineSeries.line.lineWidth,
304
- curve = defaultLineSeries.line.curve,
305
- tension = defaultLineSeries.line.tension,
306
- connectNulls = defaultLineSeries.line.connectNulls,
307
- } = defaultLineSeries.line
308
- ) => [
309
- {
310
- name: 'type',
311
- displayName: '类型',
312
- value: type,
313
- type: 'select',
314
- config: {
315
- options: [
316
- {
317
- name: '实线',
318
- value: 'solid',
319
- },
320
- {
321
- name: '虚线',
322
- value: 'dash',
323
- },
324
- ],
325
- },
326
- },
327
- {
328
- name: 'color',
329
- displayName: '颜色',
330
- value: color,
331
- type: 'color',
332
- markColorType: 'palette',
333
- },
334
- {
335
- name: 'lineWidth',
336
- displayName: '粗细',
337
- value: lineWidth,
338
- type: 'input',
339
- config: {
340
- suffix: 'px',
341
- },
342
- },
343
- {
344
- name: 'curve',
345
- displayName: '曲线',
346
- value: curve,
347
- type: 'boolean',
348
- },
349
- {
350
- rule: [['curve', '$eq', true]],
351
- name: 'tension',
352
- displayName: '曲线张力',
353
- value: tension,
354
- type: 'range',
355
- config: {
356
- min: 0,
357
- max: 1,
358
- step: 0.1,
359
- },
360
- },
361
- {
362
- name: 'connectNulls',
363
- displayName: 'null值连接',
364
- value: connectNulls,
365
- type: 'boolean',
366
- },
367
- ];
368
-
369
- const lighter = (
370
- {
371
- show = defaultLineSeries.line.lighter.show,
372
- fill = defaultLineSeries.line.lighter.fill,
373
- length = defaultLineSeries.line.lighter.length,
374
- width = defaultLineSeries.line.lighter.width,
375
- unitStep = defaultLineSeries.line.lighter.unitStep,
376
- } = defaultLineSeries.line.lighter
377
- ) => ({
378
- name: 'lighter',
379
- displayName: '光效',
380
- value: [
381
- {
382
- name: 'show',
383
- displayName: '显示',
384
- value: show,
385
- type: 'boolean',
386
- },
387
- {
388
- rule: [['show', '$eq', true]],
389
- name: 'fill',
390
- displayName: '颜色',
391
- type: 'multicolor',
392
- value: fill,
393
- markColorType: 'seriesGradient',
394
- },
395
- {
396
- rule: [['show', '$eq', true]],
397
- name: 'length',
398
- displayName: '长度',
399
- value: length,
400
- type: 'number',
401
- },
402
- {
403
- rule: [['show', '$eq', true]],
404
- name: 'width',
405
- displayName: '宽度',
406
- value: width,
407
- type: 'number',
408
- },
409
- {
410
- rule: [['show', '$eq', true]],
411
- name: 'unitStep',
412
- displayName: '速度',
413
- value: unitStep,
414
- type: 'number',
415
- },
416
- ],
417
- });
418
-
419
- const icon = ({
420
- show = defaultIcon.show,
421
- mode = defaultIcon.mode,
422
- inner: {
423
- color: innerColor = defaultIcon.inner.color,
424
- radius: innerRadius = defaultIcon.inner.innerRadius,
425
- } = defaultIcon.inner,
426
- outer: {
427
- color: outerColor = defaultIcon.outer.color,
428
- radius: outerRadius = defaultIcon.outer.radius,
429
- } = defaultIcon.outer,
430
- color = defaultIcon.color,
431
- radius = defaultIcon.radius,
432
- image = defaultIcon.image,
433
- size: {
434
- width: imageWidth = defaultIcon.size.width,
435
- height: imageHeight = defaultIcon.size.height,
436
- } = defaultIcon.size,
437
- } = defaultIcon) => ({
438
- name: 'icon',
439
- displayName: '数据标记',
440
- value: [
441
- {
442
- name: 'show',
443
- displayName: '显示',
444
- value: show,
445
- type: 'boolean',
446
- },
447
- {
448
- rule: [['show', '$eq', true]],
449
- name: 'mode',
450
- displayName: '模式',
451
- value: mode,
452
- type: 'select',
453
- config: {
454
- options: [
455
- {
456
- name: '单圆',
457
- value: 'single',
458
- },
459
- {
460
- name: '双圆',
461
- value: 'double',
462
- },
463
- {
464
- name: '自定义',
465
- value: 'custom',
466
- },
467
- ],
468
- },
469
- },
470
- {
471
- rule: [
472
- ['show', '$eq', true],
473
- ['mode', '$eq', 'custom'],
474
- ],
475
- name: 'image',
476
- displayName: '图片',
477
- value: image,
478
- type: 'uploadImage',
479
- },
480
- {
481
- rule: [
482
- ['show', '$eq', true],
483
- ['mode', '$eq', 'custom'],
484
- ],
485
- name: 'size',
486
- displayName: '尺寸',
487
- value: [
488
- {
489
- name: 'width',
490
- displayName: '宽度',
491
- value: imageWidth,
492
- config: {
493
- span: 12,
494
- suffix: 'W',
495
- },
496
- },
497
- {
498
- name: 'height',
499
- displayName: '高度',
500
- value: imageHeight,
501
- config: {
502
- span: 12,
503
- suffix: 'H',
504
- },
505
- },
506
- ],
507
- type: 'group',
508
- },
509
- {
510
- rule: [
511
- ['show', '$eq', true],
512
- ['mode', '$eq', 'double'],
513
- ],
514
- name: 'inner',
515
- displayName: '内圆',
516
- value: [
517
- {
518
- name: 'color',
519
- displayName: '颜色',
520
- value: innerColor,
521
- type: 'color',
522
- },
523
- {
524
- name: 'radius',
525
- displayName: '半径',
526
- value: innerRadius,
527
- type: 'number',
528
- config: {
529
- min: 0,
530
- suffix: 'px',
531
- },
532
- },
533
- ],
534
- },
535
- {
536
- rule: [
537
- ['show', '$eq', true],
538
- ['mode', '$eq', 'double'],
539
- ],
540
- name: 'outer',
541
- displayName: '外圆',
542
- value: [
543
- {
544
- name: 'color',
545
- displayName: '颜色',
546
- value: outerColor,
547
- type: 'color',
548
- },
549
- {
550
- name: 'radius',
551
- displayName: '半径',
552
- value: outerRadius,
553
- type: 'number',
554
- config: {
555
- min: 0,
556
- suffix: 'px',
557
- },
558
- },
559
- ],
560
- },
561
- {
562
- rule: [
563
- ['show', '$eq', true],
564
- ['mode', '$eq', 'single'],
565
- ],
566
- name: 'color',
567
- displayName: '颜色',
568
- value: color,
569
- type: 'color',
570
- markColorType: 'palette',
571
- },
572
- {
573
- rule: [
574
- ['show', '$eq', true],
575
- ['mode', '$eq', 'single'],
576
- ],
577
- name: 'radius',
578
- displayName: '半径',
579
- value: radius,
580
- type: 'number',
581
- config: {
582
- min: 0,
583
- suffix: 'px',
584
- },
585
- },
586
- ],
587
- });
588
- export const lineSeries = (
589
- name = Math.random() + '',
590
- {
591
- mapping: {
592
- fieldName = defaultLineSeries.mapping.fieldName,
593
- displayName = defaultLineSeries.mapping.displayName,
594
- } = defaultLineSeries.mapping,
595
- yOrZ = defaultLineSeries.yOrZ,
596
- line = defaultLineSeries.line,
597
- icon: lineIcon,
598
- label: lineLabel,
599
- } = defaultLineSeries
600
- ) => ({
601
- name,
602
- displayName: '系列',
603
- value: [
604
- mapping({ fieldName, displayName }),
605
- {
606
- name: 'yOrZ',
607
- displayName: '纵轴选择',
608
- value: yOrZ,
609
- type: 'select',
610
- config: {
611
- options: [
612
- { name: 'Y轴', value: 'y' },
613
- { name: 'Z轴', value: 'z' },
614
- ],
615
- },
616
- },
617
- {
618
- name: 'line',
619
- displayName: '折线',
620
- value: commonLine(line),
621
- },
622
- icon(lineIcon),
623
- label(lineLabel),
624
- ],
625
- type: 'object',
626
- });
627
-
628
- export const areaSeries = (
629
- name = Math.random() + '',
630
- {
631
- mapping: {
632
- fieldName = defaultLineSeries.mapping.fieldName,
633
- displayName = defaultLineSeries.mapping.displayName,
634
- } = defaultLineSeries.mapping,
635
- yOrZ = defaultLineSeries.yOrZ,
636
- line: {
637
- type = defaultLineSeries.line.type,
638
- color = defaultLineSeries.line.color,
639
- lineWidth = defaultLineSeries.line.lineWidth,
640
- curve = defaultLineSeries.line.curve,
641
- tension = defaultLineSeries.line.tension,
642
- connectNulls = defaultLineSeries.line.connectNulls,
643
- lighter: lineLighter,
644
- } = defaultLineSeries.line,
645
- label: areaLabel = defaultLineSeries.label,
646
- areaType = defaultLineSeries.areaType,
647
- areaColor = defaultLineSeries.areaColor,
648
- url = defaultLineSeries.url,
649
- size: {
650
- width: urlWidth = defaultLineSeries.size.width,
651
- height: urlHeight = defaultLineSeries.size.height,
652
- } = defaultLineSeries.size,
653
- opacity = defaultLineSeries.opacity,
654
- } = defaultLineSeries
655
- ) => ({
656
- name,
657
- displayName: '系列',
658
- value: [
659
- mapping({ fieldName, displayName }),
660
- {
661
- name: 'yOrZ',
662
- displayName: '纵轴选择',
663
- value: yOrZ,
664
- type: 'select',
665
- config: {
666
- options: [
667
- { name: 'Y轴', value: 'y' },
668
- { name: 'Z轴', value: 'z' },
669
- ],
670
- },
671
- },
672
- {
673
- name: 'areaType',
674
- displayName: '区域样式',
675
- value: areaType,
676
- type: 'radio',
677
- config: {
678
- options: [
679
- { name: '颜色', value: 'color' },
680
- { name: '纹理', value: 'pattern' },
681
- ],
682
- },
683
- },
684
- {
685
- rule: [['areaType', '$eq', 'color']],
686
- name: 'areaColor',
687
- displayName: '区域颜色',
688
- type: 'multicolor',
689
- value: areaColor,
690
- markColorType: 'seriesGradient',
691
- },
692
- {
693
- rule: [['areaType', '$eq', 'pattern']],
694
- name: 'url',
695
- displayName: '纹理图片',
696
- value: url,
697
- type: 'uploadImage',
698
- },
699
- {
700
- rule: [['areaType', '$eq', 'pattern']],
701
- name: 'size',
702
- displayName: '尺寸',
703
- value: [
704
- {
705
- name: 'width',
706
- displayName: '宽度',
707
- value: urlWidth,
708
- config: { span: 12, suffix: 'W' },
709
- },
710
- {
711
- name: 'height',
712
- displayName: '高度',
713
- value: urlHeight,
714
- config: { span: 12, suffix: 'H' },
715
- },
716
- ],
717
- type: 'group',
718
- },
719
- {
720
- rule: [['areaType', '$eq', 'pattern']],
721
- type: 'range',
722
- name: 'opacity',
723
- displayName: '透明度',
724
- value: opacity,
725
- config: { max: 1, min: 0, step: 0.01 },
726
- },
727
- {
728
- name: 'line',
729
- displayName: '折线',
730
- value: [
731
- ...commonLine({
732
- type,
733
- color,
734
- lineWidth,
735
- curve,
736
- tension,
737
- connectNulls,
738
- }),
739
- lineLighter && lighter(lineLighter),
740
- ].filter((item) => !!item),
741
- },
742
- label(areaLabel),
743
- ],
744
- type: 'object',
745
- });
746
-
747
- const defaultPieSeries = {
748
- mapping: _mapping,
749
- color: {
750
- type: 'linear',
751
- pure: '#fff',
752
- linear: {
753
- stops: [
754
- { offset: 0, color: '#fff' },
755
- { offset: 50, color: '#ff0' },
756
- { offset: 100, color: '#f0f' },
757
- ],
758
- angle: 30,
759
- opacity: 1,
760
- },
761
- },
762
- };
763
- export const pieSeries = (
764
- name = Math.random() + '',
765
- {
766
- mapping: {
767
- fieldName = defaultPieSeries.mapping.fieldName,
768
- displayName = defaultPieSeries.mapping.displayName,
769
- } = defaultPieSeries.mapping,
770
- color = defaultPieSeries.color,
771
- currentColor,
772
- } = defaultPieSeries
773
- ) => ({
774
- name: name,
775
- displayName: '系列',
776
- value: [
777
- mapping({ fieldName, displayName }),
778
- {
779
- name: 'color',
780
- displayName: currentColor != undefined ? '默认颜色' : '颜色',
781
- type: 'multicolor',
782
- value: multiColor(color),
783
- markColorType: 'seriesGradient',
784
- },
785
- currentColor != undefined && {
786
- name: 'currentColor',
787
- displayName: '当前颜色',
788
- type: 'multicolor',
789
- value: multiColor(currentColor),
790
- },
791
- ].filter((item) => !!item),
792
- type: 'object',
793
- });
794
-
795
- const defaultPurePieSeries = {
796
- mapping: _mapping,
797
- color: '#fff',
798
- };
799
- export const purePieSeries = (
800
- name = Math.random() + '',
801
- {
802
- mapping: {
803
- fieldName = defaultPurePieSeries.mapping.fieldName,
804
- displayName = defaultPurePieSeries.mapping.displayName,
805
- } = defaultPurePieSeries.mapping,
806
- color = defaultPurePieSeries.color,
807
- } = defaultPurePieSeries
808
- ) => ({
809
- name: name,
810
- displayName: '系列',
811
- value: [
812
- mapping({ fieldName, displayName }),
813
- {
814
- name: 'color',
815
- displayName: '填充',
816
- type: 'color',
817
- value: color,
818
- markColorType: 'palette',
819
- },
820
- ],
821
- type: 'object',
822
- });
1
+ import { mapping, label, multiColor } from '.';
2
+
3
+ const _mapping = { fieldName: '', displayName: '' };
4
+
5
+ const defaultBandSeries = {
6
+ mapping: _mapping,
7
+ yOrZ: 'y',
8
+ fillImage: 'components/static-image/superChart/pattern.png',
9
+ fill: {
10
+ type: 'linear',
11
+ pure: '#fff',
12
+ linear: {
13
+ stops: [
14
+ { offset: 0, color: '#fff' },
15
+ { offset: 50, color: '#ff0' },
16
+ { offset: 100, color: '#f0f' },
17
+ ],
18
+ angle: 30,
19
+ opacity: 1,
20
+ },
21
+ },
22
+ highlight: {
23
+ show: false,
24
+ extent: 'max',
25
+ fill: {
26
+ type: 'linear',
27
+ pure: '#fff',
28
+ linear: {
29
+ stops: [
30
+ { offset: 0, color: '#fff' },
31
+ { offset: 50, color: '#ff0' },
32
+ { offset: 100, color: '#f0f' },
33
+ ],
34
+ angle: 30,
35
+ opacity: 1,
36
+ },
37
+ },
38
+ },
39
+ size: {
40
+ width: 10,
41
+ height: 10,
42
+ },
43
+ opacity: 0.65,
44
+ };
45
+
46
+ export const bandSeries = (
47
+ name = Math.random() + '',
48
+ {
49
+ mapping: {
50
+ fieldName = defaultBandSeries.mapping.fieldName,
51
+ displayName = defaultBandSeries.mapping.displayName,
52
+ } = defaultBandSeries.mapping,
53
+ yOrZ = defaultBandSeries.yOrZ,
54
+ stack,
55
+ patternType,
56
+ fillType,
57
+ fillImage = defaultBandSeries.fillImage,
58
+ patternWidth,
59
+ patternHeight,
60
+ patternImage,
61
+ fill = defaultBandSeries.fill,
62
+ size: {
63
+ width: urlWidth = defaultBandSeries.size.width,
64
+ height: urlHeight = defaultBandSeries.size.height,
65
+ } = defaultBandSeries.size,
66
+ opacity = defaultBandSeries.opacity,
67
+ highlight: {
68
+ show: showHighlight = defaultBandSeries.highlight.show,
69
+ extent: highlightExtent = defaultBandSeries.highlight.extent,
70
+ fill: highlightFill = defaultBandSeries.highlight.fill,
71
+ } = defaultBandSeries.highlight,
72
+ } = defaultBandSeries
73
+ ) => {
74
+ return {
75
+ name,
76
+ displayName: '系列',
77
+ value: [
78
+ mapping({ fieldName, displayName }),
79
+ {
80
+ name: 'yOrZ',
81
+ displayName: '纵轴选择',
82
+ value: yOrZ,
83
+ type: 'select',
84
+ config: {
85
+ options: [
86
+ { name: 'Y轴', value: 'y' },
87
+ { name: 'Z轴', value: 'z' },
88
+ ],
89
+ },
90
+ },
91
+ stack !== undefined && {
92
+ name: 'stack',
93
+ displayName: '堆叠',
94
+ value: stack,
95
+ type: 'input',
96
+ },
97
+ fillType !== undefined && {
98
+ name: 'fillType',
99
+ displayName: '填充样式',
100
+ value: fillType,
101
+ type: 'radio',
102
+ config: {
103
+ options: [
104
+ { name: '颜色', value: 'color' },
105
+ { name: '纹理', value: 'pattern' },
106
+ ],
107
+ },
108
+ },
109
+ fillType !== undefined && {
110
+ rule: [['fillType', '$eq', 'color']],
111
+ name: 'fill',
112
+ displayName: '颜色',
113
+ type: 'multicolor',
114
+ value: fill,
115
+ markColorType: 'seriesGradient',
116
+
117
+ },
118
+ fillType !== undefined && {
119
+ rule: [['fillType', '$eq', 'pattern']],
120
+ name: 'url',
121
+ displayName: '纹理图片',
122
+ type: 'uploadImage',
123
+ value: fillImage,
124
+ },
125
+ fillType !== undefined && {
126
+ rule: [['fillType', '$eq', 'pattern']],
127
+ name: 'size',
128
+ displayName: '尺寸',
129
+ value: [
130
+ {
131
+ name: 'width',
132
+ displayName: '宽度',
133
+ value: urlWidth,
134
+ config: { span: 12, suffix: 'W' },
135
+ },
136
+ {
137
+ name: 'height',
138
+ displayName: '高度',
139
+ value: urlHeight,
140
+ config: { span: 12, suffix: 'H' },
141
+ },
142
+ ],
143
+ type: 'group',
144
+ },
145
+ fillType !== undefined && {
146
+ rule: [['fillType', '$eq', 'pattern']],
147
+ type: 'range',
148
+ name: 'opacity',
149
+ displayName: '透明度',
150
+ value: opacity,
151
+ config: { max: 1, min: 0, step: 0.01 },
152
+ },
153
+ (patternType !== undefined || fillType === undefined) && {
154
+ name: 'fill',
155
+ displayName: '颜色',
156
+ type: 'multicolor',
157
+ value: fill,
158
+ markColorType: 'seriesGradient',
159
+ },
160
+ patternType !== undefined && {
161
+ name: 'patternType',
162
+ displayName: '纹理类型',
163
+ value: patternType,
164
+ type: 'radio',
165
+ config: {
166
+ options: [
167
+ { name: '默认', value: 'default' },
168
+ { name: '自定义', value: 'custom' },
169
+ ],
170
+ },
171
+ },
172
+ patternImage !== undefined && {
173
+ rule: [['patternType', '$eq', 'custom']],
174
+ name: 'patternImage',
175
+ displayName: '纹理',
176
+ value: patternImage,
177
+ type: 'uploadImage',
178
+ },
179
+ patternWidth !== undefined && {
180
+ name: 'patternWidth',
181
+ displayName: '纹理宽度',
182
+ value: patternWidth,
183
+ type: 'number',
184
+ config: {
185
+ suffix: 'px',
186
+ },
187
+ },
188
+ patternHeight !== undefined && {
189
+ name: 'patternHeight',
190
+ displayName: '纹理高度',
191
+ value: patternHeight,
192
+ type: 'number',
193
+ config: {
194
+ suffix: 'px',
195
+ },
196
+ },
197
+ {
198
+ name: 'highlight',
199
+ displayName: '极值高亮',
200
+ value: [
201
+ {
202
+ name: 'show',
203
+ displayName: '显示',
204
+ type: 'boolean',
205
+ value: showHighlight,
206
+ },
207
+ {
208
+ rule: [['show', '$eq', true]],
209
+ name: 'extent',
210
+ displayName: '极值',
211
+ value: highlightExtent,
212
+ type: 'select',
213
+ config: {
214
+ options: [
215
+ { name: '最大值', value: 'max' },
216
+ { name: '最小值', value: 'min' },
217
+ ],
218
+ },
219
+ },
220
+ {
221
+ rule: [['show', '$eq', true]],
222
+ name: 'fill',
223
+ displayName: '颜色',
224
+ type: 'multicolor',
225
+ value: highlightFill,
226
+ },
227
+ ],
228
+ },
229
+ ].filter((item) => !!item),
230
+ type: 'object',
231
+ };
232
+ };
233
+
234
+ const defaultLineSeries = {
235
+ mapping: _mapping,
236
+ yOrZ: 'y',
237
+ line: {
238
+ type: 'solid',
239
+ color: '#FFFFFF',
240
+ lineWidth: '1',
241
+ curve: true,
242
+ tension: 0,
243
+ connectNulls: false,
244
+ lighter: {
245
+ show: false,
246
+ fill: {
247
+ type: 'linear',
248
+ pure: '#fff',
249
+ linear: {
250
+ stops: [
251
+ { offset: 0, color: '#fff' },
252
+ { offset: 50, color: '#ff0' },
253
+ { offset: 100, color: '#f0f' },
254
+ ],
255
+ angle: 30,
256
+ opacity: 1,
257
+ },
258
+ },
259
+ length: 200,
260
+ width: 2,
261
+ unitStep: 1,
262
+ },
263
+ },
264
+ areaType: 'color',
265
+ size: {
266
+ width: 10,
267
+ height: 10,
268
+ },
269
+ url: 'components/static-image/superChart/pattern.png',
270
+ opacity: 0.65,
271
+ areaColor: {
272
+ type: 'linear',
273
+ pure: '#fff',
274
+ linear: {
275
+ stops: [
276
+ { offset: 0, color: '#fff' },
277
+ { offset: 50, color: '#ff0' },
278
+ { offset: 100, color: '#f0f' },
279
+ ],
280
+ angle: 30,
281
+ opacity: 1,
282
+ },
283
+ },
284
+ };
285
+ const defaultIcon = {
286
+ show: true,
287
+ mode: 'single',
288
+ inner: { color: '#83C4FF', radius: 3 },
289
+ outer: { color: 'rgba(24,144,255,0.4)', radius: 6 },
290
+ color: '#1283E3',
291
+ radius: 4,
292
+ image: 'components/static-image/superChart/fang.png',
293
+ size: {
294
+ width: 10,
295
+ height: 10,
296
+ },
297
+ };
298
+
299
+ const commonLine = (
300
+ {
301
+ type = defaultLineSeries.line.type,
302
+ color = defaultLineSeries.line.color,
303
+ lineWidth = defaultLineSeries.line.lineWidth,
304
+ curve = defaultLineSeries.line.curve,
305
+ tension = defaultLineSeries.line.tension,
306
+ connectNulls = defaultLineSeries.line.connectNulls,
307
+ } = defaultLineSeries.line
308
+ ) => [
309
+ {
310
+ name: 'type',
311
+ displayName: '类型',
312
+ value: type,
313
+ type: 'select',
314
+ config: {
315
+ options: [
316
+ {
317
+ name: '实线',
318
+ value: 'solid',
319
+ },
320
+ {
321
+ name: '虚线',
322
+ value: 'dash',
323
+ },
324
+ ],
325
+ },
326
+ },
327
+ {
328
+ name: 'color',
329
+ displayName: '颜色',
330
+ value: color,
331
+ type: 'color',
332
+ markColorType: 'palette',
333
+ },
334
+ {
335
+ name: 'lineWidth',
336
+ displayName: '粗细',
337
+ value: lineWidth,
338
+ type: 'input',
339
+ config: {
340
+ suffix: 'px',
341
+ },
342
+ },
343
+ {
344
+ name: 'curve',
345
+ displayName: '曲线',
346
+ value: curve,
347
+ type: 'boolean',
348
+ },
349
+ {
350
+ rule: [['curve', '$eq', true]],
351
+ name: 'tension',
352
+ displayName: '曲线张力',
353
+ value: tension,
354
+ type: 'range',
355
+ config: {
356
+ min: 0,
357
+ max: 1,
358
+ step: 0.1,
359
+ },
360
+ },
361
+ {
362
+ name: 'connectNulls',
363
+ displayName: 'null值连接',
364
+ value: connectNulls,
365
+ type: 'boolean',
366
+ },
367
+ ];
368
+
369
+ const lighter = (
370
+ {
371
+ show = defaultLineSeries.line.lighter.show,
372
+ fill = defaultLineSeries.line.lighter.fill,
373
+ length = defaultLineSeries.line.lighter.length,
374
+ width = defaultLineSeries.line.lighter.width,
375
+ unitStep = defaultLineSeries.line.lighter.unitStep,
376
+ } = defaultLineSeries.line.lighter
377
+ ) => ({
378
+ name: 'lighter',
379
+ displayName: '光效',
380
+ value: [
381
+ {
382
+ name: 'show',
383
+ displayName: '显示',
384
+ value: show,
385
+ type: 'boolean',
386
+ },
387
+ {
388
+ rule: [['show', '$eq', true]],
389
+ name: 'fill',
390
+ displayName: '颜色',
391
+ type: 'multicolor',
392
+ value: fill,
393
+ markColorType: 'seriesGradient',
394
+ },
395
+ {
396
+ rule: [['show', '$eq', true]],
397
+ name: 'length',
398
+ displayName: '长度',
399
+ value: length,
400
+ type: 'number',
401
+ },
402
+ {
403
+ rule: [['show', '$eq', true]],
404
+ name: 'width',
405
+ displayName: '宽度',
406
+ value: width,
407
+ type: 'number',
408
+ },
409
+ {
410
+ rule: [['show', '$eq', true]],
411
+ name: 'unitStep',
412
+ displayName: '速度',
413
+ value: unitStep,
414
+ type: 'number',
415
+ },
416
+ ],
417
+ });
418
+
419
+ const icon = ({
420
+ show = defaultIcon.show,
421
+ mode = defaultIcon.mode,
422
+ inner: {
423
+ color: innerColor = defaultIcon.inner.color,
424
+ radius: innerRadius = defaultIcon.inner.innerRadius,
425
+ } = defaultIcon.inner,
426
+ outer: {
427
+ color: outerColor = defaultIcon.outer.color,
428
+ radius: outerRadius = defaultIcon.outer.radius,
429
+ } = defaultIcon.outer,
430
+ color = defaultIcon.color,
431
+ radius = defaultIcon.radius,
432
+ image = defaultIcon.image,
433
+ size: {
434
+ width: imageWidth = defaultIcon.size.width,
435
+ height: imageHeight = defaultIcon.size.height,
436
+ } = defaultIcon.size,
437
+ } = defaultIcon) => ({
438
+ name: 'icon',
439
+ displayName: '数据标记',
440
+ value: [
441
+ {
442
+ name: 'show',
443
+ displayName: '显示',
444
+ value: show,
445
+ type: 'boolean',
446
+ },
447
+ {
448
+ rule: [['show', '$eq', true]],
449
+ name: 'mode',
450
+ displayName: '模式',
451
+ value: mode,
452
+ type: 'select',
453
+ config: {
454
+ options: [
455
+ {
456
+ name: '单圆',
457
+ value: 'single',
458
+ },
459
+ {
460
+ name: '双圆',
461
+ value: 'double',
462
+ },
463
+ {
464
+ name: '自定义',
465
+ value: 'custom',
466
+ },
467
+ ],
468
+ },
469
+ },
470
+ {
471
+ rule: [
472
+ ['show', '$eq', true],
473
+ ['mode', '$eq', 'custom'],
474
+ ],
475
+ name: 'image',
476
+ displayName: '图片',
477
+ value: image,
478
+ type: 'uploadImage',
479
+ },
480
+ {
481
+ rule: [
482
+ ['show', '$eq', true],
483
+ ['mode', '$eq', 'custom'],
484
+ ],
485
+ name: 'size',
486
+ displayName: '尺寸',
487
+ value: [
488
+ {
489
+ name: 'width',
490
+ displayName: '宽度',
491
+ value: imageWidth,
492
+ config: {
493
+ span: 12,
494
+ suffix: 'W',
495
+ },
496
+ },
497
+ {
498
+ name: 'height',
499
+ displayName: '高度',
500
+ value: imageHeight,
501
+ config: {
502
+ span: 12,
503
+ suffix: 'H',
504
+ },
505
+ },
506
+ ],
507
+ type: 'group',
508
+ },
509
+ {
510
+ rule: [
511
+ ['show', '$eq', true],
512
+ ['mode', '$eq', 'double'],
513
+ ],
514
+ name: 'inner',
515
+ displayName: '内圆',
516
+ value: [
517
+ {
518
+ name: 'color',
519
+ displayName: '颜色',
520
+ value: innerColor,
521
+ type: 'color',
522
+ },
523
+ {
524
+ name: 'radius',
525
+ displayName: '半径',
526
+ value: innerRadius,
527
+ type: 'number',
528
+ config: {
529
+ min: 0,
530
+ suffix: 'px',
531
+ },
532
+ },
533
+ ],
534
+ },
535
+ {
536
+ rule: [
537
+ ['show', '$eq', true],
538
+ ['mode', '$eq', 'double'],
539
+ ],
540
+ name: 'outer',
541
+ displayName: '外圆',
542
+ value: [
543
+ {
544
+ name: 'color',
545
+ displayName: '颜色',
546
+ value: outerColor,
547
+ type: 'color',
548
+ },
549
+ {
550
+ name: 'radius',
551
+ displayName: '半径',
552
+ value: outerRadius,
553
+ type: 'number',
554
+ config: {
555
+ min: 0,
556
+ suffix: 'px',
557
+ },
558
+ },
559
+ ],
560
+ },
561
+ {
562
+ rule: [
563
+ ['show', '$eq', true],
564
+ ['mode', '$eq', 'single'],
565
+ ],
566
+ name: 'color',
567
+ displayName: '颜色',
568
+ value: color,
569
+ type: 'color',
570
+ markColorType: 'palette',
571
+ },
572
+ {
573
+ rule: [
574
+ ['show', '$eq', true],
575
+ ['mode', '$eq', 'single'],
576
+ ],
577
+ name: 'radius',
578
+ displayName: '半径',
579
+ value: radius,
580
+ type: 'number',
581
+ config: {
582
+ min: 0,
583
+ suffix: 'px',
584
+ },
585
+ },
586
+ ],
587
+ });
588
+ export const lineSeries = (
589
+ name = Math.random() + '',
590
+ {
591
+ mapping: {
592
+ fieldName = defaultLineSeries.mapping.fieldName,
593
+ displayName = defaultLineSeries.mapping.displayName,
594
+ } = defaultLineSeries.mapping,
595
+ yOrZ = defaultLineSeries.yOrZ,
596
+ line = defaultLineSeries.line,
597
+ icon: lineIcon,
598
+ label: lineLabel,
599
+ } = defaultLineSeries
600
+ ) => ({
601
+ name,
602
+ displayName: '系列',
603
+ value: [
604
+ mapping({ fieldName, displayName }),
605
+ {
606
+ name: 'yOrZ',
607
+ displayName: '纵轴选择',
608
+ value: yOrZ,
609
+ type: 'select',
610
+ config: {
611
+ options: [
612
+ { name: 'Y轴', value: 'y' },
613
+ { name: 'Z轴', value: 'z' },
614
+ ],
615
+ },
616
+ },
617
+ {
618
+ name: 'line',
619
+ displayName: '折线',
620
+ value: commonLine(line),
621
+ },
622
+ icon(lineIcon),
623
+ label(lineLabel),
624
+ ],
625
+ type: 'object',
626
+ });
627
+
628
+ export const areaSeries = (
629
+ name = Math.random() + '',
630
+ {
631
+ mapping: {
632
+ fieldName = defaultLineSeries.mapping.fieldName,
633
+ displayName = defaultLineSeries.mapping.displayName,
634
+ } = defaultLineSeries.mapping,
635
+ yOrZ = defaultLineSeries.yOrZ,
636
+ line: {
637
+ type = defaultLineSeries.line.type,
638
+ color = defaultLineSeries.line.color,
639
+ lineWidth = defaultLineSeries.line.lineWidth,
640
+ curve = defaultLineSeries.line.curve,
641
+ tension = defaultLineSeries.line.tension,
642
+ connectNulls = defaultLineSeries.line.connectNulls,
643
+ lighter: lineLighter,
644
+ } = defaultLineSeries.line,
645
+ label: areaLabel = defaultLineSeries.label,
646
+ areaType = defaultLineSeries.areaType,
647
+ areaColor = defaultLineSeries.areaColor,
648
+ url = defaultLineSeries.url,
649
+ size: {
650
+ width: urlWidth = defaultLineSeries.size.width,
651
+ height: urlHeight = defaultLineSeries.size.height,
652
+ } = defaultLineSeries.size,
653
+ opacity = defaultLineSeries.opacity,
654
+ } = defaultLineSeries
655
+ ) => ({
656
+ name,
657
+ displayName: '系列',
658
+ value: [
659
+ mapping({ fieldName, displayName }),
660
+ {
661
+ name: 'yOrZ',
662
+ displayName: '纵轴选择',
663
+ value: yOrZ,
664
+ type: 'select',
665
+ config: {
666
+ options: [
667
+ { name: 'Y轴', value: 'y' },
668
+ { name: 'Z轴', value: 'z' },
669
+ ],
670
+ },
671
+ },
672
+ {
673
+ name: 'areaType',
674
+ displayName: '区域样式',
675
+ value: areaType,
676
+ type: 'radio',
677
+ config: {
678
+ options: [
679
+ { name: '颜色', value: 'color' },
680
+ { name: '纹理', value: 'pattern' },
681
+ ],
682
+ },
683
+ },
684
+ {
685
+ rule: [['areaType', '$eq', 'color']],
686
+ name: 'areaColor',
687
+ displayName: '区域颜色',
688
+ type: 'multicolor',
689
+ value: areaColor,
690
+ markColorType: 'seriesGradient',
691
+ },
692
+ {
693
+ rule: [['areaType', '$eq', 'pattern']],
694
+ name: 'url',
695
+ displayName: '纹理图片',
696
+ value: url,
697
+ type: 'uploadImage',
698
+ },
699
+ {
700
+ rule: [['areaType', '$eq', 'pattern']],
701
+ name: 'size',
702
+ displayName: '尺寸',
703
+ value: [
704
+ {
705
+ name: 'width',
706
+ displayName: '宽度',
707
+ value: urlWidth,
708
+ config: { span: 12, suffix: 'W' },
709
+ },
710
+ {
711
+ name: 'height',
712
+ displayName: '高度',
713
+ value: urlHeight,
714
+ config: { span: 12, suffix: 'H' },
715
+ },
716
+ ],
717
+ type: 'group',
718
+ },
719
+ {
720
+ rule: [['areaType', '$eq', 'pattern']],
721
+ type: 'range',
722
+ name: 'opacity',
723
+ displayName: '透明度',
724
+ value: opacity,
725
+ config: { max: 1, min: 0, step: 0.01 },
726
+ },
727
+ {
728
+ name: 'line',
729
+ displayName: '折线',
730
+ value: [
731
+ ...commonLine({
732
+ type,
733
+ color,
734
+ lineWidth,
735
+ curve,
736
+ tension,
737
+ connectNulls,
738
+ }),
739
+ lineLighter && lighter(lineLighter),
740
+ ].filter((item) => !!item),
741
+ },
742
+ label(areaLabel),
743
+ ],
744
+ type: 'object',
745
+ });
746
+
747
+ const defaultPieSeries = {
748
+ mapping: _mapping,
749
+ color: {
750
+ type: 'linear',
751
+ pure: '#fff',
752
+ linear: {
753
+ stops: [
754
+ { offset: 0, color: '#fff' },
755
+ { offset: 50, color: '#ff0' },
756
+ { offset: 100, color: '#f0f' },
757
+ ],
758
+ angle: 30,
759
+ opacity: 1,
760
+ },
761
+ },
762
+ };
763
+ export const pieSeries = (
764
+ name = Math.random() + '',
765
+ {
766
+ mapping: {
767
+ fieldName = defaultPieSeries.mapping.fieldName,
768
+ displayName = defaultPieSeries.mapping.displayName,
769
+ } = defaultPieSeries.mapping,
770
+ color = defaultPieSeries.color,
771
+ currentColor,
772
+ } = defaultPieSeries
773
+ ) => ({
774
+ name: name,
775
+ displayName: '系列',
776
+ value: [
777
+ mapping({ fieldName, displayName }),
778
+ {
779
+ name: 'color',
780
+ displayName: currentColor != undefined ? '默认颜色' : '颜色',
781
+ type: 'multicolor',
782
+ value: multiColor(color),
783
+ markColorType: 'seriesGradient',
784
+ },
785
+ currentColor != undefined && {
786
+ name: 'currentColor',
787
+ displayName: '当前颜色',
788
+ type: 'multicolor',
789
+ value: multiColor(currentColor),
790
+ },
791
+ ].filter((item) => !!item),
792
+ type: 'object',
793
+ });
794
+
795
+ const defaultPurePieSeries = {
796
+ mapping: _mapping,
797
+ color: '#fff',
798
+ };
799
+ export const purePieSeries = (
800
+ name = Math.random() + '',
801
+ {
802
+ mapping: {
803
+ fieldName = defaultPurePieSeries.mapping.fieldName,
804
+ displayName = defaultPurePieSeries.mapping.displayName,
805
+ } = defaultPurePieSeries.mapping,
806
+ color = defaultPurePieSeries.color,
807
+ } = defaultPurePieSeries
808
+ ) => ({
809
+ name: name,
810
+ displayName: '系列',
811
+ value: [
812
+ mapping({ fieldName, displayName }),
813
+ {
814
+ name: 'color',
815
+ displayName: '填充',
816
+ type: 'color',
817
+ value: color,
818
+ markColorType: 'palette',
819
+ },
820
+ ],
821
+ type: 'object',
822
+ });