Highcharts 中文社区

 找回密码
 立即注册
查看: 63|回复: 2

[Highcharts] 力导图node点击事件用update()更新节点外观属性,节点位移

[复制链接]

该用户从未签到

2

主题

3

帖子

24

积分

HC 新手

Rank: 1

积分
24
发表于 2019-6-27 15:45:59 | 显示全部楼层 |阅读模式
本帖最后由 leostar-eva 于 2019-6-27 15:50 编辑

最初发现问题是在点击节点时节点位置会重新计算(位置移动),github上解决了这个问题:https://github.com/highcharts/highcharts/issues/11124,但是新的问题又出现,现在的需求是默认时候节点都是灰色(如图1),当点击根节点下不同分支下的节点会变成不同的颜色,可能是改变marker的'lineColor', 'lineWidth', 'radius'这些属性(如图2),


1.png 2.png

因为是不同的颜色,所以无法简单的使用marker.states来改变点击后node的状态,只能在point的click事件中使用update()来更新node状态,代码如下:

plotOptions: {
        networkgraph: {
            keys: ['from', 'to'],
            layoutAlgorithm: {
              enableSimulation: true,
              // If you do not add the maxIterations attribute,
              // it will take a long time for the node to stop after loading,
              // affecting the click.
              maxIterations: 90
          }
        },
        series: {
        cursor: 'pointer',
        point: {
          events: {
            click: function (e) {
              this.update({
                                  marker: {
                                    ...this.marker,
                                    ...{
                                      lineColor: this.commonColor
                                    }
                                  }
                                })
            }
          }
        }
      }
    },



只要用了update(),所有node位置都会重新计算,位置会移动,能否在update()方法中添加判断,如果只是node外观属性的变化并且不是node数量和node之间关系的变化时,不需要重新计算node位置,这样就不会出现位移,github上并没有解决问题:https://github.com/highcharts/highcharts/issues/11171 希望能有大咖可以解决,急,谢谢。
  • TA的每日心情
    无聊
    2019-8-12 09:47
  • 签到天数: 263 天

    [LV.8]以坛为家I

    30

    主题

    922

    帖子

    4354

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    4354

    最佳新人活跃会员

    QQ
    发表于 2019-6-27 22:21:23 | 显示全部楼层
    直接调 point.update 没发现问题,例子:https://jshare.com.cn/jianshukeji/KH4Ws2
    Highcharts 中文网论坛管理团队

    我们提供:商业授权技术支持图表定制VIP服务 等相关支持服务
    在线客服:2133220776(QQ,非技术,工作日 10:00 ~ 17:00)
    新浪微博:http://weibo.com/highcharts

    该用户从未签到

    2

    主题

    3

    帖子

    24

    积分

    HC 新手

    Rank: 1

    积分
    24
     楼主| 发表于 2019-6-28 10:01:40 | 显示全部楼层
    本帖最后由 leostar-eva 于 2019-6-28 11:24 编辑
    简数科技 发表于 2019-6-27 22:21
    直接调 point.update 没发现问题,例子:https://jshare.com.cn/jianshukeji/KH4Ws2

    感谢你的回复,但是又暴露出了我一开始发现的问题,你的例子中点击节点后源码会报错,如图:
    RTX截图未命名.png
    当时为了避免这个错误,我查了源码,发现是节点里面少一个index属性,就在每个node中加上了index,如图:
    RTX截图未命名1.png

    这才导致了每次点击节点都会移动的问题,请看这里:https://jshare.com.cn/temp/IJ4Wjy, 这时候源码不报错了,但是点击节点后又会移动了,这是我自己捣腾出来的新问题,但是源码报错确实是一个需要解决的问题,望大佬重视并关注。





    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    快速回复 返回顶部 返回列表