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
package/src/layout/BarLayout.ts
CHANGED
|
@@ -1,249 +1,249 @@
|
|
|
1
|
-
import type BarLayoutType from '../../types/BarLayout'
|
|
2
|
-
import type { BarResultType } from '../../types/Bar'
|
|
3
|
-
import type BarOptionType from '../../types/BarOption'
|
|
4
|
-
import type BarConfigType from '../../types/BarConfig'
|
|
5
|
-
|
|
6
|
-
import { initOption } from '../common/option'
|
|
7
|
-
import ruler from '../ruler'
|
|
8
|
-
import { animation } from "oipage/web/animation/index"
|
|
9
|
-
|
|
10
|
-
class BarLayout implements BarLayoutType {
|
|
11
|
-
readonly name: string = 'BarLayout'
|
|
12
|
-
|
|
13
|
-
private __config: BarConfigType
|
|
14
|
-
|
|
15
|
-
constructor(config: BarConfigType = {}) {
|
|
16
|
-
this.__config = initOption(config, {
|
|
17
|
-
|
|
18
|
-
})
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
private __option = {
|
|
22
|
-
x: 50,
|
|
23
|
-
y: 350,
|
|
24
|
-
width: 400,
|
|
25
|
-
height: 300,
|
|
26
|
-
category: "xAxis",
|
|
27
|
-
duration: 200
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
setOption(option: BarOptionType) {
|
|
31
|
-
initOption(option, this.__option)
|
|
32
|
-
return this
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
private __rback: (bar: BarResultType) => void
|
|
36
|
-
private __oralBar: any
|
|
37
|
-
private __preBar: BarResultType | null
|
|
38
|
-
|
|
39
|
-
use(initBar: any) {
|
|
40
|
-
let bar: BarResultType = {
|
|
41
|
-
coordinate: {
|
|
42
|
-
x: this.__option.x,
|
|
43
|
-
y: this.__option.y,
|
|
44
|
-
width: this.__option.width,
|
|
45
|
-
height: this.__option.height,
|
|
46
|
-
xAxis: {
|
|
47
|
-
type: this.__option.category === "xAxis" ? "category" : "value",
|
|
48
|
-
data: []
|
|
49
|
-
},
|
|
50
|
-
yAxis: {
|
|
51
|
-
type: this.__option.category === "xAxis" ? "value" : "category",
|
|
52
|
-
data: []
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
node: []
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
let maxValue = void 0, minValue = void 0
|
|
59
|
-
|
|
60
|
-
// 求解一维最值
|
|
61
|
-
if (initBar.data) {
|
|
62
|
-
for (let val of initBar.data) {
|
|
63
|
-
if (maxValue === void 0 || val > maxValue) maxValue = val
|
|
64
|
-
if (minValue === void 0 || val < minValue) minValue = val
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// 求解二维最值
|
|
69
|
-
else if (initBar.value) {
|
|
70
|
-
for (let item of initBar.value) {
|
|
71
|
-
for (let val of item.data) {
|
|
72
|
-
if (maxValue === void 0 || val > maxValue) maxValue = val
|
|
73
|
-
if (minValue === void 0 || val < minValue) minValue = val
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
} else {
|
|
77
|
-
throw new Error('No data leads to parsing errors')
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
let rulerArray = ruler(maxValue || 0, minValue || 0, 5)
|
|
81
|
-
|
|
82
|
-
let categoryLen // 分类轴长度
|
|
83
|
-
let valueLen // 数值轴长度
|
|
84
|
-
|
|
85
|
-
if (this.__option.category === "xAxis") {
|
|
86
|
-
|
|
87
|
-
// 设置刻度尺刻度
|
|
88
|
-
bar.coordinate.xAxis.data = initBar.category
|
|
89
|
-
bar.coordinate.yAxis.data = rulerArray
|
|
90
|
-
|
|
91
|
-
// 设置轴长度
|
|
92
|
-
categoryLen = this.__option.width
|
|
93
|
-
valueLen = -1 * this.__option.height
|
|
94
|
-
} else {
|
|
95
|
-
bar.coordinate.xAxis.data = rulerArray
|
|
96
|
-
bar.coordinate.yAxis.data = initBar.category
|
|
97
|
-
categoryLen = this.__option.height
|
|
98
|
-
valueLen = this.__option.width
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
// 求解分类轴刻度
|
|
102
|
-
let category: any = []
|
|
103
|
-
|
|
104
|
-
// 一维
|
|
105
|
-
let categorySingle1Width = categoryLen / initBar.category.length
|
|
106
|
-
let categorySingle2Width = categorySingle1Width * 0.9
|
|
107
|
-
let categoryStart = categorySingle1Width * 0.05
|
|
108
|
-
if (initBar.data) {
|
|
109
|
-
for (let i = 0; i < initBar.data.length; i++) {
|
|
110
|
-
category.push([
|
|
111
|
-
categoryStart + categorySingle1Width * i,
|
|
112
|
-
categorySingle2Width
|
|
113
|
-
])
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// 二维
|
|
118
|
-
else {
|
|
119
|
-
let categorySingle3Width = categorySingle2Width / initBar.value.length
|
|
120
|
-
let categorySingle4Width = categorySingle3Width * 0.9
|
|
121
|
-
let categoryStartBlance = categorySingle3Width * 0.05
|
|
122
|
-
for (let i = 0; i < initBar.value[0].data.length; i++) {
|
|
123
|
-
category[i] = []
|
|
124
|
-
for (let j = 0; j < initBar.value.length; j++) {
|
|
125
|
-
category[i].push([
|
|
126
|
-
categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
|
|
127
|
-
categorySingle4Width
|
|
128
|
-
])
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
// 根据值获取长度
|
|
134
|
-
let singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0])
|
|
135
|
-
let getLenByValue = (value: number) => {
|
|
136
|
-
return singleValueLen * (value - rulerArray[0])
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// 计算小矩形
|
|
140
|
-
if (this.__option.category === "xAxis") { // 分类在x轴,从左到右
|
|
141
|
-
if (initBar.data) {
|
|
142
|
-
let nodeBar = []
|
|
143
|
-
for (let i = 0; i < initBar.data.length; i++) {
|
|
144
|
-
nodeBar.push({
|
|
145
|
-
x: this.__option.x + category[i][0],
|
|
146
|
-
y: this.__option.y,
|
|
147
|
-
width: category[i][1],
|
|
148
|
-
height: getLenByValue(initBar.data[i]),
|
|
149
|
-
value: initBar.data[i]
|
|
150
|
-
})
|
|
151
|
-
}
|
|
152
|
-
bar.node.push({
|
|
153
|
-
bar: nodeBar
|
|
154
|
-
})
|
|
155
|
-
} else {
|
|
156
|
-
for (let j = 0; j < initBar.value.length; j++) {
|
|
157
|
-
let nodeBar = []
|
|
158
|
-
for (let i = 0; i < initBar.value[j].data.length; i++) {
|
|
159
|
-
nodeBar.push({
|
|
160
|
-
x: this.__option.x + category[i][j][0],
|
|
161
|
-
y: this.__option.y,
|
|
162
|
-
width: category[i][j][1],
|
|
163
|
-
height: getLenByValue(initBar.value[j].data[i]),
|
|
164
|
-
value: initBar.value[j].data[i]
|
|
165
|
-
})
|
|
166
|
-
}
|
|
167
|
-
bar.node.push({
|
|
168
|
-
name: initBar.value[j].name,
|
|
169
|
-
bar: nodeBar
|
|
170
|
-
})
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
} else { // 分类在y轴,从上到下
|
|
174
|
-
if (initBar.data) {
|
|
175
|
-
let nodeBar = []
|
|
176
|
-
for (let i = 0; i < initBar.data.length; i++) {
|
|
177
|
-
nodeBar.push({
|
|
178
|
-
x: this.__option.x,
|
|
179
|
-
y: this.__option.y - this.__option.height + category[i][0],
|
|
180
|
-
width: getLenByValue(initBar.data[i]),
|
|
181
|
-
height: category[i][1],
|
|
182
|
-
value: initBar.data[i]
|
|
183
|
-
})
|
|
184
|
-
}
|
|
185
|
-
bar.node.push({
|
|
186
|
-
bar: nodeBar
|
|
187
|
-
})
|
|
188
|
-
} else {
|
|
189
|
-
for (let j = 0; j < initBar.value.length; j++) {
|
|
190
|
-
let nodeBar = []
|
|
191
|
-
for (let i = 0; i < initBar.value[j].data.length; i++) {
|
|
192
|
-
nodeBar.push({
|
|
193
|
-
x: this.__option.x,
|
|
194
|
-
y: this.__option.y - this.__option.height + category[i][j][0],
|
|
195
|
-
width: getLenByValue(initBar.value[j].data[i]),
|
|
196
|
-
height: category[i][j][1],
|
|
197
|
-
value: initBar.value[j].data[i]
|
|
198
|
-
})
|
|
199
|
-
}
|
|
200
|
-
bar.node.push({
|
|
201
|
-
name: initBar.value[j].name,
|
|
202
|
-
bar: nodeBar
|
|
203
|
-
})
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
return bar
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
bind(initBar: any, renderBack: (bar: BarResultType) => void) {
|
|
212
|
-
this.__rback = renderBack
|
|
213
|
-
this.__oralBar = initBar
|
|
214
|
-
|
|
215
|
-
this.__preBar = this.use(this.__oralBar)
|
|
216
|
-
this.__rback(this.__preBar)
|
|
217
|
-
|
|
218
|
-
return this
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
unbind() {
|
|
222
|
-
this.__rback = () => null
|
|
223
|
-
this.__oralBar = null
|
|
224
|
-
this.__preBar = null
|
|
225
|
-
return this
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
doUpdate() {
|
|
229
|
-
const newBar = this.use(this.__oralBar)
|
|
230
|
-
|
|
231
|
-
const cacheBar = JSON.parse(JSON.stringify(newBar))
|
|
232
|
-
|
|
233
|
-
animation((deep) => {
|
|
234
|
-
|
|
235
|
-
if (this.__preBar) {
|
|
236
|
-
// todo
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
this.__rback(cacheBar)
|
|
240
|
-
|
|
241
|
-
}, this.__option.duration, () => {
|
|
242
|
-
this.__preBar = newBar
|
|
243
|
-
this.__rback(this.__preBar)
|
|
244
|
-
})
|
|
245
|
-
return this
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
|
|
1
|
+
import type BarLayoutType from '../../types/BarLayout'
|
|
2
|
+
import type { BarResultType } from '../../types/Bar'
|
|
3
|
+
import type BarOptionType from '../../types/BarOption'
|
|
4
|
+
import type BarConfigType from '../../types/BarConfig'
|
|
5
|
+
|
|
6
|
+
import { initOption } from '../common/option'
|
|
7
|
+
import ruler from '../ruler'
|
|
8
|
+
import { animation } from "oipage/web/animation/index"
|
|
9
|
+
|
|
10
|
+
class BarLayout implements BarLayoutType {
|
|
11
|
+
readonly name: string = 'BarLayout'
|
|
12
|
+
|
|
13
|
+
private __config: BarConfigType
|
|
14
|
+
|
|
15
|
+
constructor(config: BarConfigType = {}) {
|
|
16
|
+
this.__config = initOption(config, {
|
|
17
|
+
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
private __option = {
|
|
22
|
+
x: 50,
|
|
23
|
+
y: 350,
|
|
24
|
+
width: 400,
|
|
25
|
+
height: 300,
|
|
26
|
+
category: "xAxis",
|
|
27
|
+
duration: 200
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
setOption(option: BarOptionType) {
|
|
31
|
+
initOption(option, this.__option)
|
|
32
|
+
return this
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
private __rback: (bar: BarResultType) => void
|
|
36
|
+
private __oralBar: any
|
|
37
|
+
private __preBar: BarResultType | null
|
|
38
|
+
|
|
39
|
+
use(initBar: any) {
|
|
40
|
+
let bar: BarResultType = {
|
|
41
|
+
coordinate: {
|
|
42
|
+
x: this.__option.x,
|
|
43
|
+
y: this.__option.y,
|
|
44
|
+
width: this.__option.width,
|
|
45
|
+
height: this.__option.height,
|
|
46
|
+
xAxis: {
|
|
47
|
+
type: this.__option.category === "xAxis" ? "category" : "value",
|
|
48
|
+
data: []
|
|
49
|
+
},
|
|
50
|
+
yAxis: {
|
|
51
|
+
type: this.__option.category === "xAxis" ? "value" : "category",
|
|
52
|
+
data: []
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
node: []
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
let maxValue = void 0, minValue = void 0
|
|
59
|
+
|
|
60
|
+
// 求解一维最值
|
|
61
|
+
if (initBar.data) {
|
|
62
|
+
for (let val of initBar.data) {
|
|
63
|
+
if (maxValue === void 0 || val > maxValue) maxValue = val
|
|
64
|
+
if (minValue === void 0 || val < minValue) minValue = val
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// 求解二维最值
|
|
69
|
+
else if (initBar.value) {
|
|
70
|
+
for (let item of initBar.value) {
|
|
71
|
+
for (let val of item.data) {
|
|
72
|
+
if (maxValue === void 0 || val > maxValue) maxValue = val
|
|
73
|
+
if (minValue === void 0 || val < minValue) minValue = val
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
throw new Error('No data leads to parsing errors')
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
let rulerArray = ruler(maxValue || 0, minValue || 0, 5)
|
|
81
|
+
|
|
82
|
+
let categoryLen // 分类轴长度
|
|
83
|
+
let valueLen // 数值轴长度
|
|
84
|
+
|
|
85
|
+
if (this.__option.category === "xAxis") {
|
|
86
|
+
|
|
87
|
+
// 设置刻度尺刻度
|
|
88
|
+
bar.coordinate.xAxis.data = initBar.category
|
|
89
|
+
bar.coordinate.yAxis.data = rulerArray
|
|
90
|
+
|
|
91
|
+
// 设置轴长度
|
|
92
|
+
categoryLen = this.__option.width
|
|
93
|
+
valueLen = -1 * this.__option.height
|
|
94
|
+
} else {
|
|
95
|
+
bar.coordinate.xAxis.data = rulerArray
|
|
96
|
+
bar.coordinate.yAxis.data = initBar.category
|
|
97
|
+
categoryLen = this.__option.height
|
|
98
|
+
valueLen = this.__option.width
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// 求解分类轴刻度
|
|
102
|
+
let category: any = []
|
|
103
|
+
|
|
104
|
+
// 一维
|
|
105
|
+
let categorySingle1Width = categoryLen / initBar.category.length
|
|
106
|
+
let categorySingle2Width = categorySingle1Width * 0.9
|
|
107
|
+
let categoryStart = categorySingle1Width * 0.05
|
|
108
|
+
if (initBar.data) {
|
|
109
|
+
for (let i = 0; i < initBar.data.length; i++) {
|
|
110
|
+
category.push([
|
|
111
|
+
categoryStart + categorySingle1Width * i,
|
|
112
|
+
categorySingle2Width
|
|
113
|
+
])
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// 二维
|
|
118
|
+
else {
|
|
119
|
+
let categorySingle3Width = categorySingle2Width / initBar.value.length
|
|
120
|
+
let categorySingle4Width = categorySingle3Width * 0.9
|
|
121
|
+
let categoryStartBlance = categorySingle3Width * 0.05
|
|
122
|
+
for (let i = 0; i < initBar.value[0].data.length; i++) {
|
|
123
|
+
category[i] = []
|
|
124
|
+
for (let j = 0; j < initBar.value.length; j++) {
|
|
125
|
+
category[i].push([
|
|
126
|
+
categoryStart + categorySingle1Width * i + categorySingle3Width * j + categoryStartBlance,
|
|
127
|
+
categorySingle4Width
|
|
128
|
+
])
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// 根据值获取长度
|
|
134
|
+
let singleValueLen = valueLen / (rulerArray[rulerArray.length - 1] - rulerArray[0])
|
|
135
|
+
let getLenByValue = (value: number) => {
|
|
136
|
+
return singleValueLen * (value - rulerArray[0])
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// 计算小矩形
|
|
140
|
+
if (this.__option.category === "xAxis") { // 分类在x轴,从左到右
|
|
141
|
+
if (initBar.data) {
|
|
142
|
+
let nodeBar = []
|
|
143
|
+
for (let i = 0; i < initBar.data.length; i++) {
|
|
144
|
+
nodeBar.push({
|
|
145
|
+
x: this.__option.x + category[i][0],
|
|
146
|
+
y: this.__option.y,
|
|
147
|
+
width: category[i][1],
|
|
148
|
+
height: getLenByValue(initBar.data[i]),
|
|
149
|
+
value: initBar.data[i]
|
|
150
|
+
})
|
|
151
|
+
}
|
|
152
|
+
bar.node.push({
|
|
153
|
+
bar: nodeBar
|
|
154
|
+
})
|
|
155
|
+
} else {
|
|
156
|
+
for (let j = 0; j < initBar.value.length; j++) {
|
|
157
|
+
let nodeBar = []
|
|
158
|
+
for (let i = 0; i < initBar.value[j].data.length; i++) {
|
|
159
|
+
nodeBar.push({
|
|
160
|
+
x: this.__option.x + category[i][j][0],
|
|
161
|
+
y: this.__option.y,
|
|
162
|
+
width: category[i][j][1],
|
|
163
|
+
height: getLenByValue(initBar.value[j].data[i]),
|
|
164
|
+
value: initBar.value[j].data[i]
|
|
165
|
+
})
|
|
166
|
+
}
|
|
167
|
+
bar.node.push({
|
|
168
|
+
name: initBar.value[j].name,
|
|
169
|
+
bar: nodeBar
|
|
170
|
+
})
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
} else { // 分类在y轴,从上到下
|
|
174
|
+
if (initBar.data) {
|
|
175
|
+
let nodeBar = []
|
|
176
|
+
for (let i = 0; i < initBar.data.length; i++) {
|
|
177
|
+
nodeBar.push({
|
|
178
|
+
x: this.__option.x,
|
|
179
|
+
y: this.__option.y - this.__option.height + category[i][0],
|
|
180
|
+
width: getLenByValue(initBar.data[i]),
|
|
181
|
+
height: category[i][1],
|
|
182
|
+
value: initBar.data[i]
|
|
183
|
+
})
|
|
184
|
+
}
|
|
185
|
+
bar.node.push({
|
|
186
|
+
bar: nodeBar
|
|
187
|
+
})
|
|
188
|
+
} else {
|
|
189
|
+
for (let j = 0; j < initBar.value.length; j++) {
|
|
190
|
+
let nodeBar = []
|
|
191
|
+
for (let i = 0; i < initBar.value[j].data.length; i++) {
|
|
192
|
+
nodeBar.push({
|
|
193
|
+
x: this.__option.x,
|
|
194
|
+
y: this.__option.y - this.__option.height + category[i][j][0],
|
|
195
|
+
width: getLenByValue(initBar.value[j].data[i]),
|
|
196
|
+
height: category[i][j][1],
|
|
197
|
+
value: initBar.value[j].data[i]
|
|
198
|
+
})
|
|
199
|
+
}
|
|
200
|
+
bar.node.push({
|
|
201
|
+
name: initBar.value[j].name,
|
|
202
|
+
bar: nodeBar
|
|
203
|
+
})
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return bar
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
bind(initBar: any, renderBack: (bar: BarResultType) => void) {
|
|
212
|
+
this.__rback = renderBack
|
|
213
|
+
this.__oralBar = initBar
|
|
214
|
+
|
|
215
|
+
this.__preBar = this.use(this.__oralBar)
|
|
216
|
+
this.__rback(this.__preBar)
|
|
217
|
+
|
|
218
|
+
return this
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
unbind() {
|
|
222
|
+
this.__rback = () => null
|
|
223
|
+
this.__oralBar = null
|
|
224
|
+
this.__preBar = null
|
|
225
|
+
return this
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
doUpdate() {
|
|
229
|
+
const newBar = this.use(this.__oralBar)
|
|
230
|
+
|
|
231
|
+
const cacheBar = JSON.parse(JSON.stringify(newBar))
|
|
232
|
+
|
|
233
|
+
animation((deep) => {
|
|
234
|
+
|
|
235
|
+
if (this.__preBar) {
|
|
236
|
+
// todo
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
this.__rback(cacheBar)
|
|
240
|
+
|
|
241
|
+
}, this.__option.duration, () => {
|
|
242
|
+
this.__preBar = newBar
|
|
243
|
+
this.__rback(this.__preBar)
|
|
244
|
+
})
|
|
245
|
+
return this
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
249
|
export default BarLayout
|