钉钉自定义组件使用F2遇到的问题

小程序引入方式官网有教程,参考支付宝小程序引入。
遇到的问题如下:
1.图表刷新:
请求到数据给到图表时,图表未刷新,使用:

Charts.changeData(data);//data为后端数据
Charts.repaint();//更新图表
//两个要一起用才行

2.饼图中PieLabel引入报错,最终引入如下:

 const PieLabel = require('@antv/f2/lib/plugin/pie-label');
 F2.Chart.plugins.register([ PieLabel ]);//引入 PieLabel

3.饼图内放文字,这个官网有放icon的例子,我们需求中要求加上数据,其实官网代码只看懂了部分,我作了部分改动,也算实现了需求。样式如下:
在这里插入图片描述
以下是部分代码:

       function _getEndPoint(center, angle, r) {
          return {
            x: center.x + r * Math.cos(angle),
            y: center.y + r * Math.sin(angle)
          };
        }

        var _F = F2,
          Shape = _F.Shape,
          Util = _F.Util,
          G = _F.G;
        var Vector2 = G.Vector2;
        Shape.registerShape('interval', 'pie-with-icon', {
          draw: function draw(cfg, container) {
            var points = this.parsePoints(cfg.points);
            var style = Util.mix({
              fill: cfg.color
            }, cfg.style);
            var coord = this._coord;
            if (cfg.isInCircle && coord.transposed) {
              // 只处理极坐标y
              var newPoints = [points[0], points[3], points[2], points[1]];

              var _cfg$center = cfg.center,
                x = _cfg$center.x,
                y = _cfg$center.y;

              var v = [1, 0];
              var v0 = [newPoints[0].x - x, newPoints[0].y - y];
              var v1 = [newPoints[1].x - x, newPoints[1].y - y];
              var v2 = [newPoints[2].x - x, newPoints[2].y - y];

              var startAngle = Vector2.angleTo(v, v1);
              var endAngle = Vector2.angleTo(v, v2);
              var r0 = Vector2.length(v0);
              var r = Vector2.length(v1);

              if (startAngle >= 1.5 * Math.PI) {
                startAngle = startAngle - 2 * Math.PI;
              }

              if (endAngle >= 1.5 * Math.PI) {
                endAngle = endAngle - 2 * Math.PI;
              }
              var middleAngle = (startAngle + endAngle) / 2;
              var numbricCenter = _getEndPoint(cfg.center, middleAngle, (r + r0) / 2);
              
            
              var sector = container.addShape('Sector', {
                className: 'interval',
                attrs: Util.mix({
                  x: x,
                  y: y,
                  r: r,
                  r0: r0,
                  startAngle: startAngle,
                  endAngle: endAngle
                }, style)
              });

                var text = container.addShape('text', {
                  attrs: {
                    x: numbricCenter.x,
                    y: numbricCenter.y,
                    textAlign: 'center',
                    textBaseline: 'middle',
                    fontSize: that.props.componentProps.upwardFont,
                    text:cfg.origin._origin.rate+'%', //这里是要显示的数据
                    fill: that.props.componentProps.upwardColor,
                    fontWeight: '400'
                  }
                });
              return [sector,text];
            }
               }
        });

4.柱状图平移,需要用到interaction,这个在引入过程中报错,未解决。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值