antvis/G6

v5.0.0-beta.28 自定义节点中使用自定义节点状态不生效 #5282

liuchangheng posted onGitHub

G6 版本

5.x

问题描述

vue项目中使用自定义节点,鼠标悬浮时,希望将部分一些自定义节点设置为半透明状态,无法生效

重现链接

https://codesandbox.io/p/sandbox/damp-water-gwqg38?layout=%257B%2522sidebarPanel%2522%253A%2522EXPLORER%2522%252C%2522rootPanelGroup%2522%253A%257B%2522direction%2522%253A%2522horizontal%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522id%2522%253A%2522ROOT_LAYOUT%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522UNKNOWN%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522clqatxomg00063b6ii3ua0uq7%2522%252C%2522sizes%2522%253A%255B100%252C0%255D%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522EDITOR%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522EDITOR%2522%252C%2522id%2522%253A%2522clqatxomg00023b6i1btksahk%2522%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522direction%2522%253A%2522horizontal%2522%252C%2522id%2522%253A%2522SHELLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522SHELLS%2522%252C%2522id%2522%253A%2522clqatxomg00033b6i5lw6pmqp%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%257D%252C%257B%2522type%2522%253A%2522PANEL_GROUP%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522direction%2522%253A%2522vertical%2522%252C%2522id%2522%253A%2522DEVTOOLS%2522%252C%2522panels%2522%253A%255B%257B%2522type%2522%253A%2522PANEL%2522%252C%2522contentType%2522%253A%2522DEVTOOLS%2522%252C%2522id%2522%253A%2522clqatxomg00053b6ic5g6qolb%2522%257D%255D%252C%2522sizes%2522%253A%255B100%255D%257D%255D%252C%2522sizes%2522%253A%255B47.88200824353181%252C52.11799175646819%255D%257D%252C%2522tabbedPanels%2522%253A%257B%2522clqatxomg00023b6i1btksahk%2522%253A%257B%2522id%2522%253A%2522clqatxomg00023b6i1btksahk%2522%252C%2522tabs%2522%253A%255B%255D%257D%252C%2522clqatxomg00053b6ic5g6qolb%2522%253A%257B%2522tabs%2522%253A%255B%257B%2522id%2522%253A%2522clqatxomg00043b6i7us6992g%2522%252C%2522mode%2522%253A%2522permanent%2522%252C%2522type%2522%253A%2522UNASSIGNED_PORT%2522%252C%2522port%2522%253A0%252C%2522path%2522%253A%2522%252F%2522%257D%255D%252C%2522id%2522%253A%2522clqatxomg00053b6ic5g6qolb%2522%252C%2522activeTabId%2522%253A%2522clqatxomg00043b6i7us6992g%2522%257D%252C%2522clqatxomg00033b6i5lw6pmqp%2522%253A%257B%2522tabs%2522%253A%255B%255D%252C%2522id%2522%253A%2522clqatxomg00033b6i5lw6pmqp%2522%257D%257D%252C%2522showDevtools%2522%253Atrue%252C%2522showShells%2522%253Afalse%252C%2522showSidebar%2522%253Atrue%252C%2522sidebarPanelSize%2522%253A10%257D

重现步骤

1.进入页面 2.鼠标悬浮在节点上

预期行为

我希望无关联节点设置为半透明状态,实际上所有节点都没有发生变化

平台

  • 操作系统: [macOS]
  • 网页浏览器: [Google Chrome]
  • G6 版本: [v5.0.0-beta.28]

屏幕截图或视频(可选)

<img width="367" alt="image" src="https://github.com/antvis/G6/assets/49780270/044e20bf-d4b9-4d12-971e-e76060b2e4ce">

补充说明(可选)

再次还有其他问题,1.初始化设置renderer为webgl时,整个项目直接报错,另外采用canvas模式时,canvas会自动靠右对齐出现滚动条,导致页面左边大概三分之一部分不属于canvas,需要强制设置canvas left:0,top:0 才行


hi @liuchangheng, welcome!

posted by github-actions[bot] over 1 year ago

Hi @liuchangheng, Please star this repo if you find it useful! Thanks :star:! 你好 @liuchangheng。如果该仓库对你有用,可以 star 一下,感谢你的 :star:!

posted by github-actions[bot] over 1 year ago

看起来你时想实现类似于 Active Relations 的效果,推测效果不生效的原因可能是短时间内更新多个item状态导致,可以参考如下代码进行调整:

https://github.com/antvis/G6/blob/dbfa80675de08a9f898c2bef2ff890cb3fe40154/packages/g6/src/stdlib/behavior/activate-relations.ts#L121-L128

不过需要注意的是,这种写法目前是实验性的,后续可能会有所调整

posted by Aarebecca over 1 year ago

另外,你的 Demo 是基于 Vue 实现的,如果有兴趣的话,欢迎提一个 PR 来补充 G6 在 Vue 中的使用教程。❤️

posted by Aarebecca over 1 year ago

看起来你时想实现类似于 Active Relations 的效果,推测效果不生效的原因可能是短时间内更新多个item状态导致,可以参考如下代码进行调整:

https://github.com/antvis/G6/blob/dbfa80675de08a9f898c2bef2ff890cb3fe40154/packages/g6/src/stdlib/behavior/activate-relations.ts#L121-L128

不过需要注意的是,这种写法目前是实验性的,后续可能会有所调整

我按照上面的方法尝试过,依然没有生效,我最开始参考官网中给出的例子来实现https://g6-next.antv.antgroup.com/zh/examples/interaction/highlight/#highlightDark

posted by liuchangheng over 1 year ago

看起来你时想实现类似于 Active Relations 的效果,推测效果不生效的原因可能是短时间内更新多个item状态导致,可以参考如下代码进行调整:

https://github.com/antvis/G6/blob/dbfa80675de08a9f898c2bef2ff890cb3fe40154/packages/g6/src/stdlib/behavior/activate-relations.ts#L121-L128

不过需要注意的是,这种写法目前是实验性的,后续可能会有所调整

我利用官方提供的demo中去修改,自定义了一些节点,我发现这些节点在官方的例子中似乎也失效了,是否是自定义节点无法响应节点状态? 这里调整下说发,目前定位可能是otherShapes中定义的shapeId 无法响应节点状态,我在使用自定义流动线的时候,没有用otherShapes(使用的是labelShape)是可以响应状态

posted by liuchangheng over 1 year ago

这里给出了一个实例,我在 使用 G 自定义的饼图节点 例子上进行修改,添加了以下内容:

<img width="728" alt="image" src="https://github.com/antvis/G6/assets/25787943/7c7e48b0-657a-4d92-9970-ec49f018a4b6">

并添加了一个定时器在1秒后设置状态

<img width="779" alt="image" src="https://github.com/antvis/G6/assets/25787943/d44eb801-15dc-459e-9cd4-ddd72cf0499d">

可以看出 otherShapes 已经更新上状态样式了。不过这个例子还存在一个问题,就是 haloShape 没有被关闭,因此也显示出来了。

posted by Aarebecca over 1 year ago

使用 G 自定义的饼图节点

我目前是在节点的data中来定义了节点的状态,来实现描述的效果,和你提供的代码区别只是没有使用官方的节点状态管来来进行设置,但是下图中官方例子给出来的是只用对节点状态进行配置就能实现,目前对于otherShapes来说,似乎没有支持,导致只能在otherShapes 层去进行判断后,来进行赋值,对于自定义的层比较多的情况下,不太友好 <img width="1029" alt="image" src="https://github.com/antvis/G6/assets/49780270/fcc13cf6-294d-49e9-bc00-849013bd4190">

可以参考下面的链接试试。https://g6-next.antv.antgroup.com/zh/examples/interaction/highlight/#activateRelations

posted by liuchangheng over 1 year ago

你好,G6 5.0 正式版中采用新的节点自定义方式,你可以参考官网示例进行调整,应当能解决当前问题。

posted by Aarebecca 11 months ago

Fund this Issue

$0.00
Funded

Pull requests