vislite 1.6.1 → 1.7.0-alpha.1
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 +9 -1
- package/lib/BarLayout/index.es.js +1 -1
- package/lib/BarLayout/index.es.min.js +1 -1
- package/lib/Buffer/index.es.js +1 -1
- package/lib/Buffer/index.es.min.js +1 -1
- package/lib/Canvas/index.es.js +1 -1
- package/lib/Canvas/index.es.min.js +1 -1
- package/lib/Cardinal/index.es.js +1 -1
- package/lib/Cardinal/index.es.min.js +1 -1
- package/lib/Eoap/index.es.js +1 -1
- package/lib/Eoap/index.es.min.js +1 -1
- package/lib/Hermite/index.es.js +1 -1
- package/lib/Hermite/index.es.min.js +1 -1
- package/lib/MapCoordinate/index.es.js +1 -1
- package/lib/MapCoordinate/index.es.min.js +1 -1
- package/lib/Matrix4/index.es.js +1 -1
- package/lib/Matrix4/index.es.min.js +1 -1
- package/lib/Mercator/index.es.js +1 -1
- package/lib/Mercator/index.es.min.js +1 -1
- package/lib/PieLayout/index.es.js +1 -1
- package/lib/PieLayout/index.es.min.js +1 -1
- package/lib/RawCanvas/index.es.js +1 -1
- package/lib/RawCanvas/index.es.min.js +1 -1
- package/lib/SVG/index.es.js +90 -1
- package/lib/SVG/index.es.min.js +2 -2
- package/lib/Shader/index.es.js +1 -1
- package/lib/Shader/index.es.min.js +1 -1
- package/lib/Texture/index.es.js +1 -1
- package/lib/Texture/index.es.min.js +1 -1
- package/lib/TreeLayout/index.es.js +1 -1
- package/lib/TreeLayout/index.es.min.js +1 -1
- package/lib/animation/index.es.js +1 -1
- package/lib/animation/index.es.min.js +1 -1
- package/lib/assemble/index.es.js +1 -1
- package/lib/assemble/index.es.min.js +1 -1
- package/lib/getLoopColors/index.es.js +1 -1
- package/lib/getLoopColors/index.es.min.js +1 -1
- package/lib/getWebGLContext/index.es.js +1 -1
- package/lib/getWebGLContext/index.es.min.js +1 -1
- package/lib/index.umd.js +90 -1
- package/lib/index.umd.min.js +2 -2
- package/lib/initOption/index.es.js +1 -1
- package/lib/initOption/index.es.min.js +1 -1
- package/lib/mergeOption/index.es.js +1 -1
- package/lib/mergeOption/index.es.min.js +1 -1
- package/lib/move/index.es.js +1 -1
- package/lib/move/index.es.min.js +1 -1
- package/lib/rotate/index.es.js +1 -1
- package/lib/rotate/index.es.min.js +1 -1
- package/lib/ruler/index.es.js +1 -1
- package/lib/ruler/index.es.min.js +1 -1
- package/lib/scale/index.es.js +1 -1
- package/lib/scale/index.es.min.js +1 -1
- package/lib/throttle/index.es.js +1 -1
- package/lib/throttle/index.es.min.js +1 -1
- package/package.json +2 -2
- package/src/common/svg/index.ts +88 -1
- package/types/SVG.d.ts +31 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vislite",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0-alpha.1",
|
|
4
4
|
"description": "灵活、快速、简单的数据可视化交互式跨端前端库",
|
|
5
5
|
"main": "./lib/index.umd.min.js",
|
|
6
6
|
"typings": "./types/index.d.ts",
|
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
"webpack-dev-server": "^4.7.4"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"oipage": "^1.
|
|
73
|
+
"oipage": "^1.5.0"
|
|
74
74
|
}
|
|
75
75
|
}
|
package/src/common/svg/index.ts
CHANGED
|
@@ -19,6 +19,10 @@ class SVG {
|
|
|
19
19
|
private __path: string = ""
|
|
20
20
|
private __currentPosition: number[] = []
|
|
21
21
|
|
|
22
|
+
// 变换(和canvas2D的类似,内部维护了用于记录)
|
|
23
|
+
private __transform_history: Array<string> = []
|
|
24
|
+
private __transform_current = ""
|
|
25
|
+
|
|
22
26
|
protected __svg: SVGElement
|
|
23
27
|
constructor(svg: SVGElement) {
|
|
24
28
|
this.__svg = svg
|
|
@@ -128,18 +132,27 @@ class SVG {
|
|
|
128
132
|
// deg表示文字旋转角度,是角度值,不是弧度
|
|
129
133
|
fillText(text: string, x: number, y: number, deg: number = 0) {
|
|
130
134
|
initText(this.__useEl, this.__config, x, y, deg)
|
|
135
|
+
this.attr({
|
|
136
|
+
transform: this.__transform_current
|
|
137
|
+
})
|
|
131
138
|
this.__useEl.textContent = text
|
|
132
139
|
fill(this.__useEl, this.__config)
|
|
133
140
|
return this
|
|
134
141
|
}
|
|
135
142
|
strokeText(text: string, x: number, y: number, deg: number = 0) {
|
|
136
143
|
initText(this.__useEl, this.__config, x, y, deg)
|
|
144
|
+
this.attr({
|
|
145
|
+
transform: this.__transform_current
|
|
146
|
+
})
|
|
137
147
|
this.__useEl.textContent = text
|
|
138
148
|
stroke(this.__useEl, this.__config)
|
|
139
149
|
return this
|
|
140
150
|
}
|
|
141
151
|
fullText(text: string, x: number, y: number, deg: number = 0) {
|
|
142
152
|
initText(this.__useEl, this.__config, x, y, deg)
|
|
153
|
+
this.attr({
|
|
154
|
+
transform: this.__transform_current
|
|
155
|
+
})
|
|
143
156
|
this.__useEl.textContent = text
|
|
144
157
|
full(this.__useEl, this.__config)
|
|
145
158
|
return this
|
|
@@ -155,6 +168,9 @@ class SVG {
|
|
|
155
168
|
deg: number
|
|
156
169
|
) {
|
|
157
170
|
initArc(this.__useEl, this.__config, cx, cy, r1, r2, beginDeg, deg)
|
|
171
|
+
this.attr({
|
|
172
|
+
transform: this.__transform_current
|
|
173
|
+
})
|
|
158
174
|
fill(this.__useEl, this.__config)
|
|
159
175
|
return this
|
|
160
176
|
}
|
|
@@ -167,6 +183,9 @@ class SVG {
|
|
|
167
183
|
deg: number
|
|
168
184
|
) {
|
|
169
185
|
initArc(this.__useEl, this.__config, cx, cy, r1, r2, beginDeg, deg)
|
|
186
|
+
this.attr({
|
|
187
|
+
transform: this.__transform_current
|
|
188
|
+
})
|
|
170
189
|
stroke(this.__useEl, this.__config)
|
|
171
190
|
return this
|
|
172
191
|
}
|
|
@@ -179,6 +198,9 @@ class SVG {
|
|
|
179
198
|
deg: number
|
|
180
199
|
) {
|
|
181
200
|
initArc(this.__useEl, this.__config, cx, cy, r1, r2, beginDeg, deg)
|
|
201
|
+
this.attr({
|
|
202
|
+
transform: this.__transform_current
|
|
203
|
+
})
|
|
182
204
|
full(this.__useEl, this.__config)
|
|
183
205
|
return this
|
|
184
206
|
}
|
|
@@ -186,16 +208,25 @@ class SVG {
|
|
|
186
208
|
// 圆形
|
|
187
209
|
fillCircle(cx: number, cy: number, r: number) {
|
|
188
210
|
initCircle(this.__useEl, cx, cy, r)
|
|
211
|
+
this.attr({
|
|
212
|
+
transform: this.__transform_current
|
|
213
|
+
})
|
|
189
214
|
fill(this.__useEl, this.__config)
|
|
190
215
|
return this
|
|
191
216
|
}
|
|
192
217
|
strokeCircle(cx: number, cy: number, r: number) {
|
|
193
218
|
initCircle(this.__useEl, cx, cy, r)
|
|
219
|
+
this.attr({
|
|
220
|
+
transform: this.__transform_current
|
|
221
|
+
})
|
|
194
222
|
stroke(this.__useEl, this.__config)
|
|
195
223
|
return this
|
|
196
224
|
}
|
|
197
225
|
fullCircle(cx: number, cy: number, r: number) {
|
|
198
226
|
initCircle(this.__useEl, cx, cy, r)
|
|
227
|
+
this.attr({
|
|
228
|
+
transform: this.__transform_current
|
|
229
|
+
})
|
|
199
230
|
full(this.__useEl, this.__config)
|
|
200
231
|
return this
|
|
201
232
|
}
|
|
@@ -203,16 +234,25 @@ class SVG {
|
|
|
203
234
|
// 矩形
|
|
204
235
|
fillRect(x: number, y: number, width: number, height: number) {
|
|
205
236
|
initRect(this.__useEl, this.__config, x, y, width, height)
|
|
237
|
+
this.attr({
|
|
238
|
+
transform: this.__transform_current
|
|
239
|
+
})
|
|
206
240
|
fill(this.__useEl, this.__config)
|
|
207
241
|
return this
|
|
208
242
|
}
|
|
209
243
|
strokeRect(x: number, y: number, width: number, height: number) {
|
|
210
244
|
initRect(this.__useEl, this.__config, x, y, width, height)
|
|
245
|
+
this.attr({
|
|
246
|
+
transform: this.__transform_current
|
|
247
|
+
})
|
|
211
248
|
stroke(this.__useEl, this.__config)
|
|
212
249
|
return this
|
|
213
250
|
}
|
|
214
251
|
fullRect(x: number, y: number, width: number, height: number) {
|
|
215
252
|
initRect(this.__useEl, this.__config, x, y, width, height)
|
|
253
|
+
this.attr({
|
|
254
|
+
transform: this.__transform_current
|
|
255
|
+
})
|
|
216
256
|
full(this.__useEl, this.__config)
|
|
217
257
|
return this
|
|
218
258
|
}
|
|
@@ -241,20 +281,38 @@ class SVG {
|
|
|
241
281
|
}
|
|
242
282
|
fill() {
|
|
243
283
|
initPath(this.__useEl, this.__path)
|
|
284
|
+
this.attr({
|
|
285
|
+
transform: this.__transform_current
|
|
286
|
+
})
|
|
244
287
|
fill(this.__useEl, this.__config)
|
|
245
288
|
return this
|
|
246
289
|
}
|
|
247
290
|
stroke() {
|
|
248
291
|
initPath(this.__useEl, this.__path)
|
|
292
|
+
this.attr({
|
|
293
|
+
transform: this.__transform_current
|
|
294
|
+
})
|
|
249
295
|
stroke(this.__useEl, this.__config)
|
|
250
296
|
return this
|
|
251
297
|
}
|
|
252
298
|
full() {
|
|
253
299
|
initPath(this.__useEl, this.__path)
|
|
300
|
+
this.attr({
|
|
301
|
+
transform: this.__transform_current
|
|
302
|
+
})
|
|
254
303
|
full(this.__useEl, this.__config)
|
|
255
304
|
return this
|
|
256
305
|
}
|
|
257
306
|
|
|
307
|
+
save() {
|
|
308
|
+
this.__transform_history.push(this.__transform_current);
|
|
309
|
+
return this
|
|
310
|
+
}
|
|
311
|
+
restore() {
|
|
312
|
+
if (this.__transform_history.length > 0) this.__transform_current = this.__transform_history.pop() as string;
|
|
313
|
+
return this
|
|
314
|
+
}
|
|
315
|
+
|
|
258
316
|
arc(x: number, y: number, r: number, beginDeg: number, deg: number) {
|
|
259
317
|
const begPosition = rotate(x, y, (beginDeg / 180) * Math.PI, x + r, y)
|
|
260
318
|
const endPosition = rotate(
|
|
@@ -317,7 +375,6 @@ class SVG {
|
|
|
317
375
|
return this
|
|
318
376
|
}
|
|
319
377
|
|
|
320
|
-
|
|
321
378
|
// 线性渐变
|
|
322
379
|
createLinearGradient(x0: number, y0: number, x1: number, y1: number) {
|
|
323
380
|
return linearGradient(this.__svg, x0, y0, x1, y1)
|
|
@@ -327,6 +384,36 @@ class SVG {
|
|
|
327
384
|
createRadialGradient(cx: number, cy: number, r: number) {
|
|
328
385
|
return radialGradient(this.__svg, cx, cy, r)
|
|
329
386
|
}
|
|
387
|
+
|
|
388
|
+
// 转换画布
|
|
389
|
+
translate(dx: number, dy: number) {
|
|
390
|
+
this.__transform_current += ' translate(' + dx + ',' + dy + ')'
|
|
391
|
+
return this
|
|
392
|
+
}
|
|
393
|
+
rotate(deg: number) {
|
|
394
|
+
this.__transform_current += ' rotate(' + deg + ')'
|
|
395
|
+
return this
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// 扩展绘制方法
|
|
399
|
+
install(methods: {
|
|
400
|
+
[key: string]: Function
|
|
401
|
+
}): any {
|
|
402
|
+
for (const key in methods) {
|
|
403
|
+
|
|
404
|
+
if (key in this) {
|
|
405
|
+
throw new Error("VISLite SVG:Method already exists and cannot be overwritten.")
|
|
406
|
+
} else {
|
|
407
|
+
(this as any)[key] = (...args: any) => {
|
|
408
|
+
const value = methods[key].apply(this, args)
|
|
409
|
+
if (value != void 0) return value
|
|
410
|
+
return this
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
return this
|
|
416
|
+
}
|
|
330
417
|
}
|
|
331
418
|
|
|
332
419
|
export default SVG
|
package/types/SVG.d.ts
CHANGED
|
@@ -199,6 +199,16 @@ export default interface SVGType {
|
|
|
199
199
|
*/
|
|
200
200
|
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): this
|
|
201
201
|
|
|
202
|
+
/**
|
|
203
|
+
* 保存当前的绘图状态
|
|
204
|
+
*/
|
|
205
|
+
save(): this
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* 恢复之前保存的绘图状态
|
|
209
|
+
*/
|
|
210
|
+
restore(): this
|
|
211
|
+
|
|
202
212
|
/**
|
|
203
213
|
* 把当前路径包裹的区域填充颜色
|
|
204
214
|
*/
|
|
@@ -245,4 +255,25 @@ export default interface SVGType {
|
|
|
245
255
|
* 把画布变成url
|
|
246
256
|
*/
|
|
247
257
|
toDataURL(): Promise<string>
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* 将画布的坐标原点向左右方向移动dx,向上下方向移动dy
|
|
261
|
+
* @param dx
|
|
262
|
+
* @param dy
|
|
263
|
+
*/
|
|
264
|
+
translate(dx: number, dy: number): this
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* 将画布顺时针旋转deg弧度
|
|
268
|
+
* @param deg
|
|
269
|
+
*/
|
|
270
|
+
rotate(deg: number): this
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* 扩展绘制方法
|
|
274
|
+
* @param methods
|
|
275
|
+
*/
|
|
276
|
+
install(methods: {
|
|
277
|
+
[key: string]: Function
|
|
278
|
+
}): this
|
|
248
279
|
}
|