找回密码
 立即注册

QQ登录

只需一步,快速开始

gnip

高级会员

139

主题

367

帖子

1170

积分

高级会员

积分
1170

[已处理] 报表addTable局限

gnip
高级会员   /  发表于:2024-8-15 17:27  /   查看:1293  /  回复:13
本帖最后由 Joestar.Xu 于 2024-8-19 11:35 编辑


调研编号:SJS-26046

image.png472159118.png 报表添加表操作,这里能有一个映射关系嘛,如果绑定中文表名不可行,因为可能会变的,唯一不会变的是id,所以我想要显示的是表名,绑定的其实是表id,这里能动态做到嘛, image.png224749755.png 还有这个框里面的内容能自定义嘛,现在满足不了需求,

13 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-15 17:37:38
沙发
您好,我没太听懂您的意思,您是想用一个变量来代替字符串吗?

目前暂时没有公开的接口可以实现Hover框中内容的自定义,您说的需求具体是什么需求呢?
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-8-15 17:54:30
板凳
本帖最后由 gnip 于 2024-8-15 17:56 编辑
Joestar.Xu 发表于 2024-8-15 17:37
您好,我没太听懂您的意思,您是想用一个变量来代替字符串吗?

目前暂时没有公开的接口可以实现Hover框 ...

image.png940934753.png 如图,表名在后台是可以修改的,如果直接绑定中文名称,后面表名被改了,这里其实addTable后是json存起来的,不会跟随服务端实时更新,下次进来,中文名称还是以前的json保存的数据,唯一不变的是这条数据的id,所以我想的是addTable加的时候有没有什么配置项啥的,可以额外下次我进来更新这个表名,或者其他方式让绑定的是id,显示的是表名呢,不然后端表名改了,我这里还是绑定的以前的,这肯定会有问题的,数据都不来,如果我addTable('表id'),显示又是id了,这样能避免上面的情况,但是页面就显示都是一串id,用户想要看到的是表名 image.png378561095.png
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-8-15 18:29:47
地板
gnip 发表于 2024-8-15 17:54
如图,表名在后台是可以修改的,如果直接绑定中文名称,后面表名被改了,这里其实addTable后是json存起来 ...

或者没用办法自定义弹出层内容,有没有啥办法隐藏掉,然后我自己自定义这块
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-16 15:46:03
5#
您好,我了解您的使用场景了,目前来说SpreadJS暂无相关的配置可以直接实现您目前的需求,我和产品那边反馈一下,后续若有进一步的进展我会在本帖中回复您。

这边查了一下相关的API,也暂时没有找到可以隐藏起来的方案,我和开发确认一下,看看是否有相关的方案。
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-8-16 16:15:35
6#
Joestar.Xu 发表于 2024-8-16 15:46
您好,我了解您的使用场景了,目前来说SpreadJS暂无相关的配置可以直接实现您目前的需求,我和产品那边反馈 ...

感谢,这块鼠标滑动上去需要自定义程度需求很刚需,不能隐藏或者自定义就太局限用户使用了
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-16 16:37:28
7#
收到,这边反馈一下哈~
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-20 17:41:29
8#
您好,这边评估了一下您目前的使用场景:

您之所以想要在SpreadJS中隐藏Hover提示,是因为表名在服务器端会动态变化,这样一来要么把表名设置为后端的表id,要么隐藏Hover提示,但是表id的读取很困难,所以您想要通过隐藏Hover提升来实现这个需求。

但是实际上,即使您隐藏了Hover提示,其他在设计器中显示表名称的UI又该如何显示呢?全部设置为不可见?基于此,我们认为这不是一个合理的设计。

因此,我们建议您在前端不要尝试修改表名,而是使用DataManager处理定义的表到后端表的映射。

如:

  1. var myTable = dataManager.addTable("学生表", {
  2.     remote: {
  3.         read: {
  4.             url: ()=> fetch("serverside_table_id")
  5.         }
  6.     },
  7.     schema: {
  8.         columns: {
  9.             OrderId: {dataName: "Id"},
  10.             OrderDate: {dataType: "date"},
  11.             RequiredDate: {dataType: "date"},
  12.             ShippedDate: {dataType: "date"},
  13.             ShipVia: {dataMap: {1: "Speedy Express", 2: "United Package", 3: "Federal Shipping"}}
  14.         }
  15.     }
  16. });
复制代码


这样一来,前端的表名稳定下来,也不会破坏表之间的公式和关系等信息。

——————————————

从软件设计的层面来说,前端的设计和后端的设计中间还需要中间层,而不是直接连接,否则后端一旦发生变动,前端就需要调整和修改。中间层存在的意义就是抹除前后端的差异,尽可能少的改变已经设计好的代码,从而避免错误的出现。
回复 使用道具 举报
gnip
高级会员   /  发表于:2024-8-20 19:26:55
9#
本帖最后由 gnip 于 2024-8-21 09:14 编辑
Joestar.Xu 发表于 2024-8-20 17:41
您好,这边评估了一下您目前的使用场景:

您之所以想要在SpreadJS中隐藏Hover提示,是因为表名在服务器 ...

其实需求就是hover那层不需要内置的,况且还没法去原基础修改和增加,这就迫使只有自定义,目前就是需要隐藏hover框,要自定义,默认的确实满足不了需求,有dom元素设置嘛,页面我找了没找到,不然太难用了这个,涉及到报表相关的面板我们这全部要自定义ui去改掉,首先样式上要做内部统一,其次,有些功能项目上不需要,需要的只是报表组件提供的底层渲染和解析模版和数据能力,至于项目上需要什么能力,只要你们有对应接口去修改即可,举个例子,选表和绑定字段下拉要这样的,内置的肯定满足不了需求呀 image.png380706176.png ,老师您上面还提到一个问题,就是不让改表名,这肯定是不合理的,因为改不改表名,这是用户决定的,我们不能说不让用户改,这样肯定行不通,况且数据源来源我们这也不只一个平台的数据,而是多个平台,这不让改表名,也肯定是不行的,三方平台也有自己的想法,因此唯一不变动就是后台数据项的id,这个是唯一的,所以如果想要用你们的面板就是实际绑定的value是表id,而页面呈现则使用对应的中文名称,类似饿了么的下拉组件,绑定和显示的值各自设置
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-8-21 13:57:05
10#
了解了,如果一定要修改表格名称的话还有一个问题您需要解决,在修改了表名以后,引用了此表的公式或数据的单元格的引用以及表和表之间的关系也需要跟着变化,如果不建立映射关系,这一块的逻辑您这边又该如何处理呢?
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部