找回密码
 立即注册

QQ登录

只需一步,快速开始

Anne01

注册会员

6

主题

8

帖子

40

积分

注册会员

积分
40
  • 114

    金币

  • 6

    主题

  • 8

    帖子

Anne01
注册会员   /  发表于:2022-8-19 17:51  /   查看:3008  /  回复:11
请问:在SpreadJS中集成Ecahrts 中,怎么能够画一个treeMap 矩形树图的Echart 图? image.png60635985.png
这是treeMap 矩形树图的例子:
image.png251034545.png


地址链接:https://echarts.apache.org/examp ... show-parent&lang=ts

spreedjs集成Echart demo 代码:
image.png797667541.png




spreadjs_demo.rar

2.05 MB, 下载次数: 149

11 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-22 12:15:43
推荐
本帖最后由 Clark.Pan 于 2022-10-26 00:00 编辑

请参考附件demo



--------------------------
总结:
该问题可以参考上面的demo
如果发生切换sheet导致echart图片空白的问题,需要监听对应的sheet切换事件,在事件中重新生成图表

  1. spread.bind(GC.Spread.Sheets.Events.SheetTabClick, function (e, info) {
  2.                 setTimeout(() => {
  3.                     initEchart();
  4.                 }, 0);
  5. });
复制代码

另外,对于客户的问题:
Q:我设置一个简单的DOM对象, 比如 "<div>1111</div>",这个保存后,再刷新 或者 切换sheet还是存在的, 你们保存的逻辑是什么?


A:SpreadJS的浮动对象可以保存静态的HTML dom,但对于echart这种基于html dom基础上用JS渲染的组件无法做到序列化保存。所以需要在对应的事件监听中调用对应的代码进行图表的更新或重新生成。


spreadjs_demo.zip

2.31 MB, 下载次数: 141

回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-19 18:19:56
沙发
您好,
您提供下完整链接,这边结合demo等调研下相应方案:
image.png559624022.png
回复 使用道具 举报
Anne01
注册会员   /  发表于:2022-8-19 18:25:58
板凳
Lynn.Dou 发表于 2022-8-19 18:19
您好,
您提供下完整链接,这边结合demo等调研下相应方案:

https://echarts.apache.org/examples/zh/editor.html?c=treemap-show-parent&lang=ts
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2022-9-15 18:08:04
5#

你好,使用这个demo, 切换sheet后,生成图表没了,看我发的gif
回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2022-9-15 18:09:17
6#
查看控制台, 切换后 canvas元素直接没了
image.png37281798.png
动画.gif
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-16 11:26:09
7#
问题已复现,已将此问题记录下来进一步调研原因,有进展贴中回复您。
本贴先做保留处理。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-20 10:28:25
8#
本帖最后由 Lynn.Dou 于 2022-9-20 10:29 编辑

demo中请添加以下代码,通过事件监听重绘echart:
  1. spread.bind(GC.Spread.Sheets.Events.SheetTabClick, function (e, info) {
  2.                 setTimeout(() => {
  3.                     initEchart();
  4.                 }, 0);
  5.             });
复制代码


回复 使用道具 举报
eyAndrew
金牌服务用户   /  发表于:2022-9-20 11:04:01
9#
Lynn.Dou 发表于 2022-9-20 10:28
demo中请添加以下代码,通过事件监听重绘echart:

重新绘制的话,按照我的理解,当我保存ssjson,这个echart不会保存到ssjson 对么? 重新打开这个ssjson后,也要重新绘制?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-9-20 17:35:58
10#
是的,canvas中保存的只是数据模型,没有保存实际效果,所以在切换sheet或导入导出json后需要重新绘制。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部