UNPKG

1.35 kBJavaScriptView Raw
1const Renderer = require('./renderer');
2const Core = require('@antv/f2/lib/core'); // 引入 F2 的核心包
3
4function strLen(str) {
5 let len = 0;
6 for (let i = 0; i < str.length; i++) {
7 if (str.charCodeAt(i) > 0 && str.charCodeAt(i) < 128) {
8 len++;
9 } else {
10 len += 2;
11 }
12 }
13
14 return len;
15}
16
17// override some methods
18// 由于目前钉钉小程序框架善不支持 measureText 方法,故用此方法 mock
19Core.Util.measureText = function(text, font, ctx) {
20 if (!ctx || !ctx.measureText) {
21 let fontSize = 12;
22 if (font) {
23 fontSize = parseInt(font.split(' ')[3], 10);
24 }
25 fontSize /= 2;
26 return {
27 width: strLen(text) * fontSize
28 };
29 }
30
31 ctx.font = font || '12px sans-serif';
32 return ctx.measureText(text);
33};
34// 为小程序封装事件机制
35Core.Util.addEventListener = function(source, type, listener) {
36 source.addListener(type, listener);
37};
38
39Core.Util.removeEventListener = function(source, type, listener) {
40 source.removeListener(type, listener);
41};
42
43Core.Util.createEvent = function(event, chart) {
44 const type = event.type;
45 let x = 0;
46 let y = 0;
47 const touches = event.touches;
48 if (touches && touches.length > 0) {
49 x = touches[0].x;
50 y = touches[0].y;
51 }
52
53 return {
54 type,
55 chart,
56 x,
57 y
58 };
59};
60
61Core.Renderer = Renderer;
62
63module.exports = Core;