1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.getMaxScale = exports.getDefaultCategoryScaleRange = exports.getName = exports.syncScale = exports.createScaleByField = void 0;
|
4 | var tslib_1 = require("tslib");
|
5 | var util_1 = require("@antv/util");
|
6 | var dependents_1 = require("../dependents");
|
7 | var coordinate_1 = require("./coordinate");
|
8 | var dateRegex = /^(?:(?!0000)[0-9]{4}([-/.]+)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)([-/.]+)0?2\2(?:29))(\s+([01]|([01][0-9]|2[0-3])):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9]))?$/;
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 | function getDefaultType(value) {
|
16 | var type = 'linear';
|
17 | if (dateRegex.test(value)) {
|
18 | type = 'timeCat';
|
19 | }
|
20 | else if (util_1.isString(value)) {
|
21 | type = 'cat';
|
22 | }
|
23 | return type;
|
24 | }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 | function createScaleByField(field, data, scaleDef) {
|
34 | var validData = data || [];
|
35 | if (util_1.isNumber(field) || (util_1.isNil(util_1.firstValue(validData, field)) && util_1.isEmpty(scaleDef))) {
|
36 | var Identity = dependents_1.getScale('identity');
|
37 | return new Identity({
|
38 | field: field.toString(),
|
39 | values: [field],
|
40 | });
|
41 | }
|
42 | var values = util_1.valuesOfKey(validData, field);
|
43 |
|
44 | var type = util_1.get(scaleDef, 'type', getDefaultType(values[0]));
|
45 | var ScaleCtor = dependents_1.getScale(type);
|
46 | return new ScaleCtor(tslib_1.__assign({ field: field,
|
47 | values: values }, scaleDef));
|
48 | }
|
49 | exports.createScaleByField = createScaleByField;
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 | function syncScale(scale, newScale) {
|
58 | if (scale.type !== 'identity' && newScale.type !== 'identity') {
|
59 | var obj = {};
|
60 | for (var k in newScale) {
|
61 | if (Object.prototype.hasOwnProperty.call(newScale, k)) {
|
62 | obj[k] = newScale[k];
|
63 | }
|
64 | }
|
65 | scale.change(obj);
|
66 | }
|
67 | }
|
68 | exports.syncScale = syncScale;
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 |
|
75 | function getName(scale) {
|
76 | return scale.alias || scale.field;
|
77 | }
|
78 | exports.getName = getName;
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 |
|
85 | function getDefaultCategoryScaleRange(scale, coordinate, theme) {
|
86 | var values = scale.values;
|
87 | var count = values.length;
|
88 | var range;
|
89 | if (count === 1) {
|
90 | range = [0.5, 1];
|
91 | }
|
92 | else {
|
93 | var widthRatio = 1;
|
94 | var offset = 0;
|
95 | if (coordinate_1.isFullCircle(coordinate)) {
|
96 | if (!coordinate.isTransposed) {
|
97 | range = [0, 1 - 1 / count];
|
98 | }
|
99 | else {
|
100 | widthRatio = util_1.get(theme, 'widthRatio.multiplePie', 1 / 1.3);
|
101 | offset = (1 / count) * widthRatio;
|
102 | range = [offset / 2, 1 - offset / 2];
|
103 | }
|
104 | }
|
105 | else {
|
106 | offset = 1 / count / 2;
|
107 | range = [offset, 1 - offset];
|
108 | }
|
109 | }
|
110 | return range;
|
111 | }
|
112 | exports.getDefaultCategoryScaleRange = getDefaultCategoryScaleRange;
|
113 |
|
114 |
|
115 |
|
116 |
|
117 | function getMaxScale(scale) {
|
118 |
|
119 | var values = scale.values.filter(function (item) { return !util_1.isNil(item) && !isNaN(item); });
|
120 | return Math.max.apply(Math, tslib_1.__spreadArrays(values, [util_1.isNil(scale.max) ? -Infinity : scale.max]));
|
121 | }
|
122 | exports.getMaxScale = getMaxScale;
|
123 |
|
\ | No newline at end of file |