@easyv/config 1.0.45 → 1.0.49

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