vislite 1.4.0-alpha.0 → 1.4.0
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/CHANGELOG +307 -307
- package/lib/BarLayout/index.es.js +437 -437
- package/lib/BarLayout/index.es.min.js +2 -2
- package/lib/Buffer/index.es.js +35 -35
- package/lib/Buffer/index.es.min.js +1 -1
- package/lib/Canvas/index.es.js +774 -774
- package/lib/Canvas/index.es.min.js +1 -1
- package/lib/Cardinal/index.es.js +90 -90
- package/lib/Cardinal/index.es.min.js +1 -1
- package/lib/Eoap/index.es.js +33 -33
- package/lib/Eoap/index.es.min.js +1 -1
- package/lib/Hermite/index.es.js +35 -35
- package/lib/Hermite/index.es.min.js +1 -1
- package/lib/MapCoordinate/index.es.js +199 -199
- package/lib/MapCoordinate/index.es.min.js +1 -1
- package/lib/Matrix4/index.es.js +124 -124
- package/lib/Matrix4/index.es.min.js +1 -1
- package/lib/Mercator/index.es.js +19 -19
- package/lib/Mercator/index.es.min.js +1 -1
- package/lib/PieLayout/index.es.js +213 -213
- package/lib/PieLayout/index.es.min.js +2 -2
- package/lib/RawCanvas/index.es.js +704 -704
- package/lib/RawCanvas/index.es.min.js +1 -1
- package/lib/SVG/index.es.js +514 -514
- package/lib/SVG/index.es.min.js +1 -1
- package/lib/Shader/index.es.js +35 -35
- package/lib/Shader/index.es.min.js +1 -1
- package/lib/Texture/index.es.js +53 -53
- package/lib/Texture/index.es.min.js +1 -1
- package/lib/TreeLayout/index.es.js +397 -397
- package/lib/TreeLayout/index.es.min.js +2 -2
- package/lib/animation/index.es.js +110 -106
- package/lib/animation/index.es.min.js +3 -3
- package/lib/assemble/index.es.js +17 -17
- package/lib/assemble/index.es.min.js +1 -1
- package/lib/getLoopColors/index.es.js +35 -35
- package/lib/getLoopColors/index.es.min.js +1 -1
- package/lib/getWebGLContext/index.es.js +62 -62
- package/lib/getWebGLContext/index.es.min.js +1 -1
- package/lib/index.umd.js +2795 -2791
- package/lib/index.umd.min.js +5 -5
- package/lib/initOption/index.es.js +6 -6
- package/lib/initOption/index.es.min.js +1 -1
- package/lib/mergeOption/index.es.js +34 -34
- package/lib/mergeOption/index.es.min.js +1 -1
- package/lib/move/index.es.js +7 -7
- package/lib/move/index.es.min.js +1 -1
- package/lib/rotate/index.es.js +7 -7
- package/lib/rotate/index.es.min.js +1 -1
- package/lib/ruler/index.es.js +137 -137
- package/lib/ruler/index.es.min.js +1 -1
- package/lib/scale/index.es.js +6 -6
- package/lib/scale/index.es.min.js +1 -1
- package/lib/throttle/index.es.js +51 -51
- package/lib/throttle/index.es.min.js +2 -2
- package/package/BarLayout/index.ts +2 -2
- package/package/PieLayout/index.ts +2 -2
- package/package/animation/index.ts +6 -3
- package/package/index.ts +84 -84
- package/package/throttle/index.ts +2 -2
- package/package.json +75 -75
- package/src/SVG.ts +55 -55
- package/src/common/canvas/gradient.ts +31 -31
- package/src/common/svg/default.ts +29 -29
- package/src/common/svg/gradient.ts +53 -53
- package/src/common/svg/index.ts +332 -332
- package/src/common/tree/toPlainTree.ts +135 -135
- package/src/common/webgl/texture.ts +98 -98
- package/src/layout/BarLayout.ts +248 -248
- package/src/layout/PieLayout.ts +141 -141
- package/src/layout/TreeLayout.ts +197 -197
- package/types/Bar.d.ts +91 -91
- package/types/BarConfig.d.ts +4 -4
- package/types/BarLayout.d.ts +48 -48
- package/types/BarOption.d.ts +31 -31
- package/types/Pie.d.ts +73 -73
- package/types/PieConfig.d.ts +26 -26
- package/types/PieLayout.d.ts +40 -40
- package/types/PieOption.d.ts +21 -21
- package/types/SVG.d.ts +247 -247
- package/types/animation.d.ts +11 -5
- package/types/index.d.ts +195 -195
- package/types/throttle.d.ts +5 -5
|
@@ -1,467 +1,467 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* BarLayout of VISLite JavaScript Library v1.4.0
|
|
2
|
+
* BarLayout of VISLite JavaScript Library v1.4.0
|
|
3
3
|
* git+https://github.com/oi-contrib/VISLite.git
|
|
4
4
|
*/
|
|
5
|
-
function initOption(setOption, defaultOption) {
|
|
6
|
-
for (var key in setOption) {
|
|
7
|
-
defaultOption[key] = setOption[key];
|
|
8
|
-
}
|
|
9
|
-
return defaultOption;
|
|
5
|
+
function initOption(setOption, defaultOption) {
|
|
6
|
+
for (var key in setOption) {
|
|
7
|
+
defaultOption[key] = setOption[key];
|
|
8
|
+
}
|
|
9
|
+
return defaultOption;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
function ruler (maxValue, minValue, num, option) {
|
|
13
|
-
if (maxValue < minValue) {
|
|
14
|
-
var temp = minValue;
|
|
15
|
-
minValue = maxValue;
|
|
16
|
-
maxValue = temp;
|
|
17
|
-
}
|
|
18
|
-
else if (maxValue == minValue) {
|
|
19
|
-
return [maxValue];
|
|
20
|
-
}
|
|
21
|
-
var times100 = (function (_value) {
|
|
22
|
-
var _times100_base = (_value < 100 && _value > -100) ? 10 : 0.1;
|
|
23
|
-
var _times100 = -1, _tiemsValue = _value;
|
|
24
|
-
while (_times100_base == 10 ?
|
|
25
|
-
(_tiemsValue >= -100 && _tiemsValue <= 100)
|
|
26
|
-
:
|
|
27
|
-
(_tiemsValue <= -100 || _tiemsValue >= 100)) {
|
|
28
|
-
_times100 += 1;
|
|
29
|
-
_tiemsValue *= _times100_base;
|
|
30
|
-
}
|
|
31
|
-
if (_times100_base == 10) {
|
|
32
|
-
return Math.pow(10, _times100);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
var temp = "0.";
|
|
36
|
-
for (var i = 1; i < _times100; i++) {
|
|
37
|
-
temp += "0";
|
|
38
|
-
}
|
|
39
|
-
return +(temp + "1");
|
|
40
|
-
}
|
|
41
|
-
})(maxValue - minValue);
|
|
42
|
-
var distance100_oral = Math.ceil((maxValue - minValue) * times100 / num);
|
|
43
|
-
var getResult = function (changValue) {
|
|
44
|
-
var distance100 = {
|
|
45
|
-
3: 2,
|
|
46
|
-
4: 5,
|
|
47
|
-
6: 5,
|
|
48
|
-
7: 5,
|
|
49
|
-
8: 10,
|
|
50
|
-
9: 10,
|
|
51
|
-
11: 10,
|
|
52
|
-
12: 10,
|
|
53
|
-
13: 15,
|
|
54
|
-
14: 15,
|
|
55
|
-
16: 15,
|
|
56
|
-
17: 15,
|
|
57
|
-
18: 20,
|
|
58
|
-
19: 20,
|
|
59
|
-
21: 20,
|
|
60
|
-
22: 20,
|
|
61
|
-
23: 25,
|
|
62
|
-
24: 25,
|
|
63
|
-
26: 25,
|
|
64
|
-
27: 25
|
|
65
|
-
}[distance100_oral + changValue] || (distance100_oral + changValue);
|
|
66
|
-
var distance = distance100 / times100;
|
|
67
|
-
var begin = Math.floor(minValue / distance) * distance;
|
|
68
|
-
var rulerArray = [];
|
|
69
|
-
rulerArray.push(begin);
|
|
70
|
-
for (var index = 1; rulerArray[rulerArray.length - 1] < maxValue; index++) {
|
|
71
|
-
rulerArray.push(begin + distance * index);
|
|
72
|
-
}
|
|
73
|
-
return rulerArray;
|
|
74
|
-
};
|
|
75
|
-
var rulerArray = getResult(0);
|
|
76
|
-
var balanceMax = function () {
|
|
77
|
-
var rulerArray_temp = [];
|
|
78
|
-
var changeDist = rulerArray[rulerArray.length - 1] - (option === null || option === void 0 ? void 0 : option.max);
|
|
79
|
-
for (var index = 0; index < rulerArray.length; index++) {
|
|
80
|
-
if (index + 1 < rulerArray.length && rulerArray[index + 1] - changeDist < minValue) ;
|
|
81
|
-
else {
|
|
82
|
-
rulerArray_temp.push(rulerArray[index] - changeDist);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
return rulerArray_temp;
|
|
86
|
-
};
|
|
87
|
-
var balanceMin = function () {
|
|
88
|
-
var rulerArray_temp = [];
|
|
89
|
-
var changeDist = rulerArray[0] - (option === null || option === void 0 ? void 0 : option.min);
|
|
90
|
-
for (var index = 0; index < rulerArray.length; index++) {
|
|
91
|
-
rulerArray_temp[index] = rulerArray[index] - changeDist;
|
|
92
|
-
if (maxValue <= rulerArray_temp[index])
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
return rulerArray_temp;
|
|
96
|
-
};
|
|
97
|
-
if (option) {
|
|
98
|
-
if ('max' in option && 'min' in option && option.max >= maxValue && option.min <= minValue) {
|
|
99
|
-
var isAnswer = function () {
|
|
100
|
-
if (rulerArray[0] >= option.min && rulerArray[rulerArray.length - 1] <= option.max)
|
|
101
|
-
return true;
|
|
102
|
-
var rulerArray_max = balanceMax();
|
|
103
|
-
if (rulerArray_max[0] >= option.min && rulerArray_max[rulerArray_max.length - 1] <= option.max) {
|
|
104
|
-
rulerArray = rulerArray_max;
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
var rulerArray_min = balanceMin();
|
|
108
|
-
if (rulerArray_min[0] >= option.min && rulerArray_min[rulerArray_max.length - 1] <= option.max) {
|
|
109
|
-
rulerArray = rulerArray_min;
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
if (isAnswer())
|
|
114
|
-
return rulerArray;
|
|
115
|
-
for (var changValue = 1; changValue < 100; changValue++) {
|
|
116
|
-
rulerArray = getResult(changValue);
|
|
117
|
-
if (isAnswer())
|
|
118
|
-
return rulerArray;
|
|
119
|
-
rulerArray = getResult(-changValue);
|
|
120
|
-
if (isAnswer())
|
|
121
|
-
return rulerArray;
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
if ('max' in option && option.max >= maxValue) {
|
|
125
|
-
if (option.max < rulerArray[rulerArray.length - 1]) {
|
|
126
|
-
rulerArray = balanceMax();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
else if ('min' in option && option.min <= minValue) {
|
|
130
|
-
if (option.min > rulerArray[0]) {
|
|
131
|
-
rulerArray = balanceMin();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
for (var index = 0; index < rulerArray.length; index++) {
|
|
136
|
-
var valStr = rulerArray[index] + "";
|
|
137
|
-
if (/\./.test(valStr)) {
|
|
138
|
-
if (/9{7,}$/.test(valStr)) {
|
|
139
|
-
valStr = valStr.replace(/9{7,}$/, '');
|
|
140
|
-
rulerArray[index] = +(valStr.substring(0, valStr.length - 1) + ((+valStr[valStr.length - 1]) + 1));
|
|
141
|
-
}
|
|
142
|
-
else if (/0{7,}\d$/.test(valStr)) {
|
|
143
|
-
rulerArray[index] = +(valStr.replace(/0{7,}\d$/, ''));
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return rulerArray;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/*!
|
|
151
|
-
* animation of OIPage v1.2.0
|
|
152
|
-
* git+https://github.com/oi-contrib/OIPage.git
|
|
153
|
-
*/
|
|
154
|
-
|
|
155
|
-
//当前正在运动的动画的tick函数堆栈
|
|
156
|
-
var $timers = [];
|
|
157
|
-
//唯一定时器的定时间隔
|
|
158
|
-
var $interval = 13;
|
|
159
|
-
//定时器ID
|
|
160
|
-
var $timerId;
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* 动画轮播
|
|
164
|
-
* @param {function} doback 轮询函数,有一个形参deep,0-1,表示执行进度
|
|
165
|
-
* @param {number} duration 动画时长,可选
|
|
166
|
-
* @param {function} callback 动画结束回调,可选,有一个形参deep,0-1,表示执行进度
|
|
167
|
-
*
|
|
168
|
-
* @returns {function} 返回一个函数,调用该函数,可以提前结束动画
|
|
169
|
-
*/
|
|
170
|
-
function animation(doback, duration, callback) {
|
|
171
|
-
if (arguments.length < 2) duration = 400;
|
|
172
|
-
if (arguments.length < 3) callback = function () { };
|
|
173
|
-
|
|
174
|
-
var clock = {
|
|
175
|
-
//把tick函数推入堆栈
|
|
176
|
-
"timer": function (tick, duration, callback) {
|
|
177
|
-
if (!tick) {
|
|
178
|
-
throw new Error('Tick is required!');
|
|
12
|
+
function ruler (maxValue, minValue, num, option) {
|
|
13
|
+
if (maxValue < minValue) {
|
|
14
|
+
var temp = minValue;
|
|
15
|
+
minValue = maxValue;
|
|
16
|
+
maxValue = temp;
|
|
17
|
+
}
|
|
18
|
+
else if (maxValue == minValue) {
|
|
19
|
+
return [maxValue];
|
|
20
|
+
}
|
|
21
|
+
var times100 = (function (_value) {
|
|
22
|
+
var _times100_base = (_value < 100 && _value > -100) ? 10 : 0.1;
|
|
23
|
+
var _times100 = -1, _tiemsValue = _value;
|
|
24
|
+
while (_times100_base == 10 ?
|
|
25
|
+
(_tiemsValue >= -100 && _tiemsValue <= 100)
|
|
26
|
+
:
|
|
27
|
+
(_tiemsValue <= -100 || _tiemsValue >= 100)) {
|
|
28
|
+
_times100 += 1;
|
|
29
|
+
_tiemsValue *= _times100_base;
|
|
30
|
+
}
|
|
31
|
+
if (_times100_base == 10) {
|
|
32
|
+
return Math.pow(10, _times100);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
var temp = "0.";
|
|
36
|
+
for (var i = 1; i < _times100; i++) {
|
|
37
|
+
temp += "0";
|
|
179
38
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
39
|
+
return +(temp + "1");
|
|
40
|
+
}
|
|
41
|
+
})(maxValue - minValue);
|
|
42
|
+
var distance100_oral = Math.ceil((maxValue - minValue) * times100 / num);
|
|
43
|
+
var getResult = function (changValue) {
|
|
44
|
+
var distance100 = {
|
|
45
|
+
3: 2,
|
|
46
|
+
4: 5,
|
|
47
|
+
6: 5,
|
|
48
|
+
7: 5,
|
|
49
|
+
8: 10,
|
|
50
|
+
9: 10,
|
|
51
|
+
11: 10,
|
|
52
|
+
12: 10,
|
|
53
|
+
13: 15,
|
|
54
|
+
14: 15,
|
|
55
|
+
16: 15,
|
|
56
|
+
17: 15,
|
|
57
|
+
18: 20,
|
|
58
|
+
19: 20,
|
|
59
|
+
21: 20,
|
|
60
|
+
22: 20,
|
|
61
|
+
23: 25,
|
|
62
|
+
24: 25,
|
|
63
|
+
26: 25,
|
|
64
|
+
27: 25
|
|
65
|
+
}[distance100_oral + changValue] || (distance100_oral + changValue);
|
|
66
|
+
var distance = distance100 / times100;
|
|
67
|
+
var begin = Math.floor(minValue / distance) * distance;
|
|
68
|
+
var rulerArray = [];
|
|
69
|
+
rulerArray.push(begin);
|
|
70
|
+
for (var index = 1; rulerArray[rulerArray.length - 1] < maxValue; index++) {
|
|
71
|
+
rulerArray.push(begin + distance * index);
|
|
72
|
+
}
|
|
73
|
+
return rulerArray;
|
|
74
|
+
};
|
|
75
|
+
var rulerArray = getResult(0);
|
|
76
|
+
var balanceMax = function () {
|
|
77
|
+
var rulerArray_temp = [];
|
|
78
|
+
var changeDist = rulerArray[rulerArray.length - 1] - (option === null || option === void 0 ? void 0 : option.max);
|
|
79
|
+
for (var index = 0; index < rulerArray.length; index++) {
|
|
80
|
+
if (index + 1 < rulerArray.length && rulerArray[index + 1] - changeDist < minValue) ;
|
|
81
|
+
else {
|
|
82
|
+
rulerArray_temp.push(rulerArray[index] - changeDist);
|
|
196
83
|
}
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
//动画没有结束再添加
|
|
220
|
-
$timers.push(timer);
|
|
221
|
-
} else {
|
|
222
|
-
callback(passTime);
|
|
84
|
+
}
|
|
85
|
+
return rulerArray_temp;
|
|
86
|
+
};
|
|
87
|
+
var balanceMin = function () {
|
|
88
|
+
var rulerArray_temp = [];
|
|
89
|
+
var changeDist = rulerArray[0] - (option === null || option === void 0 ? void 0 : option.min);
|
|
90
|
+
for (var index = 0; index < rulerArray.length; index++) {
|
|
91
|
+
rulerArray_temp[index] = rulerArray[index] - changeDist;
|
|
92
|
+
if (maxValue <= rulerArray_temp[index])
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
return rulerArray_temp;
|
|
96
|
+
};
|
|
97
|
+
if (option) {
|
|
98
|
+
if ('max' in option && 'min' in option && option.max >= maxValue && option.min <= minValue) {
|
|
99
|
+
var isAnswer = function () {
|
|
100
|
+
if (rulerArray[0] >= option.min && rulerArray[rulerArray.length - 1] <= option.max)
|
|
101
|
+
return true;
|
|
102
|
+
var rulerArray_max = balanceMax();
|
|
103
|
+
if (rulerArray_max[0] >= option.min && rulerArray_max[rulerArray_max.length - 1] <= option.max) {
|
|
104
|
+
rulerArray = rulerArray_max;
|
|
105
|
+
return true;
|
|
223
106
|
}
|
|
107
|
+
var rulerArray_min = balanceMin();
|
|
108
|
+
if (rulerArray_min[0] >= option.min && rulerArray_min[rulerArray_max.length - 1] <= option.max) {
|
|
109
|
+
rulerArray = rulerArray_min;
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
if (isAnswer())
|
|
114
|
+
return rulerArray;
|
|
115
|
+
for (var changValue = 1; changValue < 100; changValue++) {
|
|
116
|
+
rulerArray = getResult(changValue);
|
|
117
|
+
if (isAnswer())
|
|
118
|
+
return rulerArray;
|
|
119
|
+
rulerArray = getResult(-changValue);
|
|
120
|
+
if (isAnswer())
|
|
121
|
+
return rulerArray;
|
|
224
122
|
}
|
|
225
|
-
|
|
226
|
-
|
|
123
|
+
}
|
|
124
|
+
if ('max' in option && option.max >= maxValue) {
|
|
125
|
+
if (option.max < rulerArray[rulerArray.length - 1]) {
|
|
126
|
+
rulerArray = balanceMax();
|
|
227
127
|
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if ($timerId) {
|
|
233
|
-
clearInterval($timerId);
|
|
234
|
-
$timerId = null;
|
|
128
|
+
}
|
|
129
|
+
else if ('min' in option && option.min <= minValue) {
|
|
130
|
+
if (option.min > rulerArray[0]) {
|
|
131
|
+
rulerArray = balanceMin();
|
|
235
132
|
}
|
|
236
133
|
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
stop: function () {
|
|
248
|
-
var i;
|
|
249
|
-
for (i in $timers) {
|
|
250
|
-
if ($timers[i].id == id) {
|
|
251
|
-
$timers[i].id = void 0;
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
134
|
+
}
|
|
135
|
+
for (var index = 0; index < rulerArray.length; index++) {
|
|
136
|
+
var valStr = rulerArray[index] + "";
|
|
137
|
+
if (/\./.test(valStr)) {
|
|
138
|
+
if (/9{7,}$/.test(valStr)) {
|
|
139
|
+
valStr = valStr.replace(/9{7,}$/, '');
|
|
140
|
+
rulerArray[index] = +(valStr.substring(0, valStr.length - 1) + ((+valStr[valStr.length - 1]) + 1));
|
|
141
|
+
}
|
|
142
|
+
else if (/0{7,}\d$/.test(valStr)) {
|
|
143
|
+
rulerArray[index] = +(valStr.replace(/0{7,}\d$/, ''));
|
|
254
144
|
}
|
|
255
145
|
}
|
|
256
|
-
}
|
|
257
|
-
|
|
146
|
+
}
|
|
147
|
+
return rulerArray;
|
|
258
148
|
}
|
|
259
149
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
yAxis: {
|
|
290
|
-
type: this.__option.category === "xAxis" ? "value" : "category",
|
|
291
|
-
data: []
|
|
292
|
-
}
|
|
293
|
-
},
|
|
294
|
-
node: []
|
|
295
|
-
};
|
|
296
|
-
var maxValue = void 0, minValue = void 0;
|
|
297
|
-
if (initBar.data) {
|
|
298
|
-
for (var _i = 0, _a = initBar.data; _i < _a.length; _i++) {
|
|
299
|
-
var val = _a[_i];
|
|
300
|
-
if (maxValue === void 0 || val > maxValue)
|
|
301
|
-
maxValue = val;
|
|
302
|
-
if (minValue === void 0 || val < minValue)
|
|
303
|
-
minValue = val;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
else if (initBar.value) {
|
|
307
|
-
for (var _b = 0, _c = initBar.value; _b < _c.length; _b++) {
|
|
308
|
-
var item = _c[_b];
|
|
309
|
-
for (var _d = 0, _e = item.data; _d < _e.length; _d++) {
|
|
310
|
-
var val = _e[_d];
|
|
311
|
-
if (maxValue === void 0 || val > maxValue)
|
|
312
|
-
maxValue = val;
|
|
313
|
-
if (minValue === void 0 || val < minValue)
|
|
314
|
-
minValue = val;
|
|
315
|
-
}
|
|
150
|
+
/*!
|
|
151
|
+
* animation of OIPage v1.3.0
|
|
152
|
+
* git+https://github.com/oi-contrib/OIPage.git
|
|
153
|
+
*/
|
|
154
|
+
|
|
155
|
+
//当前正在运动的动画的tick函数堆栈
|
|
156
|
+
var $timers = [];
|
|
157
|
+
//唯一定时器的定时间隔
|
|
158
|
+
var $interval = 13;
|
|
159
|
+
//定时器ID
|
|
160
|
+
var $timerId;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* 动画轮播
|
|
164
|
+
* @param {function} doback 轮询函数,有一个形参deep,0-1,表示执行进度
|
|
165
|
+
* @param {number} duration 动画时长,可选
|
|
166
|
+
* @param {function} callback 动画结束回调,可选,有一个形参deep,0-1,表示执行进度
|
|
167
|
+
*
|
|
168
|
+
* @returns {function} 返回一个函数,调用该函数,可以提前结束动画
|
|
169
|
+
*/
|
|
170
|
+
function animation(doback, duration, callback) {
|
|
171
|
+
if (arguments.length < 2) duration = 400;
|
|
172
|
+
if (arguments.length < 3) callback = function () { };
|
|
173
|
+
|
|
174
|
+
var clock = {
|
|
175
|
+
//把tick函数推入堆栈
|
|
176
|
+
"timer": function (tick, duration, callback) {
|
|
177
|
+
if (!tick) {
|
|
178
|
+
throw new Error('Tick is required!');
|
|
316
179
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
categoryLen = this.__option.height;
|
|
334
|
-
valueLen = this.__option.width;
|
|
335
|
-
}
|
|
336
|
-
var category = [];
|
|
337
|
-
var categorySingle1Width = categoryLen / initBar.category.length;
|
|
338
|
-
var categorySingle2Width = categorySingle1Width * 0.9;
|
|
339
|
-
var categoryStart = categorySingle1Width * 0.05;
|
|
340
|
-
if (initBar.data) {
|
|
341
|
-
for (var i = 0; i < initBar.data.length; i++) {
|
|
342
|
-
category.push([
|
|
343
|
-
categoryStart + categorySingle1Width * i,
|
|
344
|
-
categorySingle2Width
|
|
345
|
-
]);
|
|
180
|
+
var id = new Date().valueOf() + "_" + (Math.random() * 1000).toFixed(0);
|
|
181
|
+
$timers.push({
|
|
182
|
+
"id": id,
|
|
183
|
+
"createTime": new Date(),
|
|
184
|
+
"tick": tick,
|
|
185
|
+
"duration": duration,
|
|
186
|
+
"callback": callback
|
|
187
|
+
});
|
|
188
|
+
clock.start();
|
|
189
|
+
return id;
|
|
190
|
+
},
|
|
191
|
+
|
|
192
|
+
//开启唯一的定时器timerId
|
|
193
|
+
"start": function () {
|
|
194
|
+
if (!$timerId) {
|
|
195
|
+
$timerId = setInterval(clock.tick, $interval);
|
|
346
196
|
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
var
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
197
|
+
},
|
|
198
|
+
|
|
199
|
+
//被定时器调用,遍历timers堆栈
|
|
200
|
+
"tick": function () {
|
|
201
|
+
var createTime, flag, tick, callback, timer, duration, passTime, timers = $timers;
|
|
202
|
+
|
|
203
|
+
$timers = [];
|
|
204
|
+
$timers.length = 0;
|
|
205
|
+
|
|
206
|
+
for (flag = 0; flag < timers.length; flag++) {
|
|
207
|
+
//初始化数据
|
|
208
|
+
timer = timers[flag];
|
|
209
|
+
createTime = timer.createTime;
|
|
210
|
+
tick = timer.tick;
|
|
211
|
+
duration = timer.duration;
|
|
212
|
+
callback = timer.callback;
|
|
213
|
+
|
|
214
|
+
//执行
|
|
215
|
+
passTime = (+new Date().valueOf() - createTime.valueOf()) / duration;
|
|
216
|
+
passTime = passTime > 1 ? 1 : passTime;
|
|
217
|
+
tick(passTime);
|
|
218
|
+
if (passTime < 1 && timer.id) {
|
|
219
|
+
//动画没有结束再添加
|
|
220
|
+
$timers.push(timer);
|
|
221
|
+
} else {
|
|
222
|
+
callback(passTime);
|
|
359
223
|
}
|
|
360
224
|
}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
var getLenByValue = function (value) {
|
|
364
|
-
return singleValueLen * (value - rulerArray[0]);
|
|
365
|
-
};
|
|
366
|
-
if (this.__option.category === "xAxis") {
|
|
367
|
-
if (initBar.data) {
|
|
368
|
-
var nodeBar = [];
|
|
369
|
-
for (var i = 0; i < initBar.data.length; i++) {
|
|
370
|
-
nodeBar.push({
|
|
371
|
-
x: this.__option.x + category[i][0],
|
|
372
|
-
y: this.__option.y,
|
|
373
|
-
width: category[i][1],
|
|
374
|
-
height: getLenByValue(initBar.data[i]),
|
|
375
|
-
value: initBar.data[i]
|
|
376
|
-
});
|
|
377
|
-
}
|
|
378
|
-
bar.node.push({
|
|
379
|
-
bar: nodeBar
|
|
380
|
-
});
|
|
225
|
+
if ($timers.length <= 0) {
|
|
226
|
+
clock.stop();
|
|
381
227
|
}
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
width: category[i][j][1],
|
|
390
|
-
height: getLenByValue(initBar.value[j].data[i]),
|
|
391
|
-
value: initBar.value[j].data[i]
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
bar.node.push({
|
|
395
|
-
name: initBar.value[j].name,
|
|
396
|
-
bar: nodeBar
|
|
397
|
-
});
|
|
398
|
-
}
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
//停止定时器,重置timerId=null
|
|
231
|
+
"stop": function () {
|
|
232
|
+
if ($timerId) {
|
|
233
|
+
clearInterval($timerId);
|
|
234
|
+
$timerId = null;
|
|
399
235
|
}
|
|
400
236
|
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
else {
|
|
418
|
-
for (var j = 0; j < initBar.value.length; j++) {
|
|
419
|
-
var nodeBar = [];
|
|
420
|
-
for (var i = 0; i < initBar.value[j].data.length; i++) {
|
|
421
|
-
nodeBar.push({
|
|
422
|
-
x: this.__option.x,
|
|
423
|
-
y: this.__option.y - this.__option.height + category[i][j][0],
|
|
424
|
-
width: getLenByValue(initBar.value[j].data[i]),
|
|
425
|
-
height: category[i][j][1],
|
|
426
|
-
value: initBar.value[j].data[i]
|
|
427
|
-
});
|
|
428
|
-
}
|
|
429
|
-
bar.node.push({
|
|
430
|
-
name: initBar.value[j].name,
|
|
431
|
-
bar: nodeBar
|
|
432
|
-
});
|
|
237
|
+
};
|
|
238
|
+
|
|
239
|
+
var id = clock.timer(function (deep) {
|
|
240
|
+
//其中deep为0-1,表示改变的程度
|
|
241
|
+
doback(deep);
|
|
242
|
+
}, duration, callback);
|
|
243
|
+
|
|
244
|
+
return {
|
|
245
|
+
// 一个函数
|
|
246
|
+
// 用于在动画结束前结束动画
|
|
247
|
+
stop: function () {
|
|
248
|
+
var i;
|
|
249
|
+
for (i in $timers) {
|
|
250
|
+
if ($timers[i].id == id) {
|
|
251
|
+
$timers[i].id = void 0;
|
|
252
|
+
return;
|
|
433
253
|
}
|
|
434
254
|
}
|
|
435
255
|
}
|
|
436
|
-
return bar;
|
|
437
|
-
};
|
|
438
|
-
BarLayout.prototype.bind = function (initBar, renderBack) {
|
|
439
|
-
this.__rback = renderBack;
|
|
440
|
-
this.__oralBar = initBar;
|
|
441
|
-
this.__preBar = this.use(this.__oralBar);
|
|
442
|
-
this.__rback(this.__preBar);
|
|
443
|
-
return this;
|
|
444
|
-
};
|
|
445
|
-
BarLayout.prototype.unbind = function () {
|
|
446
|
-
this.__rback = function () { return null; };
|
|
447
|
-
this.__oralBar = null;
|
|
448
|
-
this.__preBar = null;
|
|
449
|
-
return this;
|
|
450
256
|
};
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
var BarLayout = (function () {
|
|
261
|
+
function BarLayout(config) {
|
|
262
|
+
if (config === void 0) { config = {}; }
|
|
263
|
+
this.name = 'BarLayout';
|
|
264
|
+
this.__option = {
|
|
265
|
+
x: 50,
|
|
266
|
+
y: 350,
|
|
267
|
+
width: 400,
|
|
268
|
+
height: 300,
|
|
269
|
+
category: "xAxis",
|
|
270
|
+
duration: 200
|
|
271
|
+
};
|
|
272
|
+
this.__config = initOption(config, {});
|
|
273
|
+
}
|
|
274
|
+
BarLayout.prototype.setOption = function (option) {
|
|
275
|
+
initOption(option, this.__option);
|
|
276
|
+
return this;
|
|
277
|
+
};
|
|
278
|
+
BarLayout.prototype.use = function (initBar) {
|
|
279
|
+
var bar = {
|
|
280
|
+
coordinate: {
|
|
281
|
+
x: this.__option.x,
|
|
282
|
+
y: this.__option.y,
|
|
283
|
+
width: this.__option.width,
|
|
284
|
+
height: this.__option.height,
|
|
285
|
+
xAxis: {
|
|
286
|
+
type: this.__option.category === "xAxis" ? "category" : "value",
|
|
287
|
+
data: []
|
|
288
|
+
},
|
|
289
|
+
yAxis: {
|
|
290
|
+
type: this.__option.category === "xAxis" ? "value" : "category",
|
|
291
|
+
data: []
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
node: []
|
|
295
|
+
};
|
|
296
|
+
var maxValue = void 0, minValue = void 0;
|
|
297
|
+
if (initBar.data) {
|
|
298
|
+
for (var _i = 0, _a = initBar.data; _i < _a.length; _i++) {
|
|
299
|
+
var val = _a[_i];
|
|
300
|
+
if (maxValue === void 0 || val > maxValue)
|
|
301
|
+
maxValue = val;
|
|
302
|
+
if (minValue === void 0 || val < minValue)
|
|
303
|
+
minValue = val;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else if (initBar.value) {
|
|
307
|
+
for (var _b = 0, _c = initBar.value; _b < _c.length; _b++) {
|
|
308
|
+
var item = _c[_b];
|
|
309
|
+
for (var _d = 0, _e = item.data; _d < _e.length; _d++) {
|
|
310
|
+
var val = _e[_d];
|
|
311
|
+
if (maxValue === void 0 || val > maxValue)
|
|
312
|
+
maxValue = val;
|
|
313
|
+
if (minValue === void 0 || val < minValue)
|
|
314
|
+
minValue = val;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
throw new Error('No data leads to parsing errors');
|
|
320
|
+
}
|
|
321
|
+
var rulerArray = ruler(maxValue || 0, minValue || 0, 5);
|
|
322
|
+
var categoryLen;
|
|
323
|
+
var valueLen;
|
|
324
|
+
if (this.__option.category === "xAxis") {
|
|
325
|
+
bar.coordinate.xAxis.data = initBar.category;
|
|
326
|
+
bar.coordinate.yAxis.data = rulerArray;
|
|
327
|
+
categoryLen = this.__option.width;
|
|
328
|
+
valueLen = -1 * this.__option.height;
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
bar.coordinate.xAxis.data = rulerArray;
|
|
332
|
+
bar.coordinate.yAxis.data = initBar.category;
|
|
333
|
+
categoryLen = this.__option.height;
|
|
334
|
+
valueLen = this.__option.width;
|
|
335
|
+
}
|
|
336
|
+
var category = [];
|
|
337
|
+
var categorySingle1Width = categoryLen / initBar.category.length;
|
|
338
|
+
var categorySingle2Width = categorySingle1Width * 0.9;
|
|
339
|
+
var categoryStart = categorySingle1Width * 0.05;
|
|
340
|
+
if (initBar.data) {
|
|
341
|
+
for (var i = 0; i < initBar.data.length; i++) {
|
|
342
|
+
category.push([
|
|
343
|
+
categoryStart + categorySingle1Width * i,
|
|
344
|
+
categorySingle2Width
|
|
345
|
+
]);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
var categorySingle3Width = categorySingle2Width / initBar.value.length;
|
|
350
|
+
var categorySingle4Width = categorySingle3Width * 0.9;
|
|
351
|
+
var categoryStartBlance = categorySingle3Width * 0.05;
|
|
352
|
+
for (var i = 0; i < initBar.value[0].data.length; i++) {
|
|
353
|
+
category[i] = [];
|
|
354
|
+
for (var j = 0; j < initBar.value.length; j++) {
|
|
355
|
+
category[i].push([
|
|
356
|
+
categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
|
|
357
|
+
categorySingle4Width
|
|
358
|
+
]);
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
var singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0]);
|
|
363
|
+
var getLenByValue = function (value) {
|
|
364
|
+
return singleValueLen * (value - rulerArray[0]);
|
|
365
|
+
};
|
|
366
|
+
if (this.__option.category === "xAxis") {
|
|
367
|
+
if (initBar.data) {
|
|
368
|
+
var nodeBar = [];
|
|
369
|
+
for (var i = 0; i < initBar.data.length; i++) {
|
|
370
|
+
nodeBar.push({
|
|
371
|
+
x: this.__option.x + category[i][0],
|
|
372
|
+
y: this.__option.y,
|
|
373
|
+
width: category[i][1],
|
|
374
|
+
height: getLenByValue(initBar.data[i]),
|
|
375
|
+
value: initBar.data[i]
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
bar.node.push({
|
|
379
|
+
bar: nodeBar
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
for (var j = 0; j < initBar.value.length; j++) {
|
|
384
|
+
var nodeBar = [];
|
|
385
|
+
for (var i = 0; i < initBar.value[j].data.length; i++) {
|
|
386
|
+
nodeBar.push({
|
|
387
|
+
x: this.__option.x + category[i][j][0],
|
|
388
|
+
y: this.__option.y,
|
|
389
|
+
width: category[i][j][1],
|
|
390
|
+
height: getLenByValue(initBar.value[j].data[i]),
|
|
391
|
+
value: initBar.value[j].data[i]
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
bar.node.push({
|
|
395
|
+
name: initBar.value[j].name,
|
|
396
|
+
bar: nodeBar
|
|
397
|
+
});
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
if (initBar.data) {
|
|
403
|
+
var nodeBar = [];
|
|
404
|
+
for (var i = 0; i < initBar.data.length; i++) {
|
|
405
|
+
nodeBar.push({
|
|
406
|
+
x: this.__option.x,
|
|
407
|
+
y: this.__option.y - this.__option.height + category[i][0],
|
|
408
|
+
width: getLenByValue(initBar.data[i]),
|
|
409
|
+
height: category[i][1],
|
|
410
|
+
value: initBar.data[i]
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
bar.node.push({
|
|
414
|
+
bar: nodeBar
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
for (var j = 0; j < initBar.value.length; j++) {
|
|
419
|
+
var nodeBar = [];
|
|
420
|
+
for (var i = 0; i < initBar.value[j].data.length; i++) {
|
|
421
|
+
nodeBar.push({
|
|
422
|
+
x: this.__option.x,
|
|
423
|
+
y: this.__option.y - this.__option.height + category[i][j][0],
|
|
424
|
+
width: getLenByValue(initBar.value[j].data[i]),
|
|
425
|
+
height: category[i][j][1],
|
|
426
|
+
value: initBar.value[j].data[i]
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
bar.node.push({
|
|
430
|
+
name: initBar.value[j].name,
|
|
431
|
+
bar: nodeBar
|
|
432
|
+
});
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return bar;
|
|
437
|
+
};
|
|
438
|
+
BarLayout.prototype.bind = function (initBar, renderBack) {
|
|
439
|
+
this.__rback = renderBack;
|
|
440
|
+
this.__oralBar = initBar;
|
|
441
|
+
this.__preBar = this.use(this.__oralBar);
|
|
442
|
+
this.__rback(this.__preBar);
|
|
443
|
+
return this;
|
|
444
|
+
};
|
|
445
|
+
BarLayout.prototype.unbind = function () {
|
|
446
|
+
this.__rback = function () { return null; };
|
|
447
|
+
this.__oralBar = null;
|
|
448
|
+
this.__preBar = null;
|
|
449
|
+
return this;
|
|
450
|
+
};
|
|
451
|
+
BarLayout.prototype.doUpdate = function () {
|
|
452
|
+
var _this = this;
|
|
453
|
+
var newBar = this.use(this.__oralBar);
|
|
454
|
+
var cacheBar = JSON.parse(JSON.stringify(newBar));
|
|
455
|
+
animation(function (deep) {
|
|
456
|
+
if (_this.__preBar) ;
|
|
457
|
+
_this.__rback(cacheBar);
|
|
458
|
+
}, this.__option.duration, function () {
|
|
459
|
+
_this.__preBar = newBar;
|
|
460
|
+
_this.__rback(_this.__preBar);
|
|
461
|
+
});
|
|
462
|
+
return this;
|
|
463
|
+
};
|
|
464
|
+
return BarLayout;
|
|
465
465
|
}());
|
|
466
466
|
|
|
467
467
|
export { BarLayout as default };
|