antvis / S2

⚡️ A practical visualization library for tabular analysis.

Home Page:https://s2.antv.antgroup.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🤔 rowCell和colCell中对数据String()处理后导致拿不到原始值

liqiuqiui opened this issue · comments

🏷 Version

Package Version
@antv/s2
@antv/s2-react
@antv/s2-vue

Sheet Type

  • PivotSheet
  • TableSheet
  • GridAnalysisSheet
  • StrategySheet
  • EditableSheet

🖋 Description

rowCell和colCell中对数据String()处理后导致拿不到null的原始值,是否考虑增加originLabel和originValue的方式保留未经处理的原始值,以供开发者自行处理一些特殊的情况?
image

具体代码就是这一行 https://github.com/antvis/S2/blob/master/packages/s2-core/src/utils/dataset/pivot-data-set.ts#L66

🔗 Reproduce Link

😊 Expected Behavior

😅 Current Behavior

麻烦 @wjgogogo 看看

commented

@lijinke666 请问下这个问题有计划修复吗,在使用的时候我也有这个获取colCell原始值的需求

是否考虑增加originLabel和originValue的方式保留未经处理的原始值,以供开发者自行处理一些特殊的情况?

近期看一下, 有一定改造成本, 如可行会在 2.x 中支持

你好 @liqiuqiui,感谢你的建议, 我们会及时评估和排期, 谢谢!
当然, 如果能贡献 PR 帮助我们改进, 不胜感激!

Hello, @liqiuqiui, thanks for your advice. We will evaluate and schedule in time. Thank you!
you could implement it by yourself through the customization capabilities provided by S2. Thanks so much for your understanding.

@lijinke666 请问下这个问题有计划修复吗,在使用的时候我也有这个获取colCell原始值的需求

这个属于能力增强了, 不是 修复, 你是什么场景? 也是维值为 null ? 请详细描述你的诉求

commented

@lijinke666 请问下这个问题有计划修复吗,在使用的时候我也有这个获取colCell原始值的需求

这个属于能力增强了, 不是 修复, 你是什么场景? 也是维值为 null ? 请详细描述你的诉求

目前就是对维度定义了一些格式化函数,然后这个函数里面包含了对维度为null值的一些处理,目前就是导出成的时候我需要将维度的null经过格式化处理之后的结果导出。
比如说下面这个表
image
通过
const data = await asyncGetAllPlainData({ sheetInstance: s2, split: '\t', formatOptions: true });
导出的结果为
image
我希望的结果是上面的日期为空的维度值可以导出成我在formatter自定义的null为空值的结果,我的一个实现思路是通过这个colCell的单元格对应的原始值来判断,如果是null就在对应维度的formatter函数中进入自定义的null为空值的处理逻辑。但是由于维度值在s2中直接被转成字符串,就没有办法在formatter中进行正确的维值为null的格式处理再进行导出。
或者说,针对导出的这个问题,能否支持在asyncGetAllPlainData 中的formatOptions 加入一个配置开关类似
export declare type FormatOptions = boolean | { formatHeader?: boolean; formatData?: boolean; placeholder?:boolean; };
支持占位符的导出

@lijinke666 请问下这个问题有计划修复吗,在使用的时候我也有这个获取colCell原始值的需求

这个属于能力增强了, 不是 修复, 你是什么场景? 也是维值为 null ? 请详细描述你的诉求

目前就是对维度定义了一些格式化函数,然后这个函数里面包含了对维度为null值的一些处理,目前就是导出成的时候我需要将维度的null经过格式化处理之后的结果导出。 比如说下面这个表 image 通过 const data = await asyncGetAllPlainData({ sheetInstance: s2, split: '\t', formatOptions: true }); 导出的结果为 image 我希望的结果是上面的日期为空的维度值可以导出成我在formatter自定义的null为空值的结果,我的一个实现思路是通过这个colCell的单元格对应的原始值来判断,如果是null就在对应维度的formatter函数中进入自定义的null为空值的处理逻辑。但是由于维度值在s2中直接被转成字符串,就没有办法在formatter中进行正确的维值为null的格式处理再进行导出。 或者说,针对导出的这个问题,能否支持在asyncGetAllPlainData 中的formatOptions 加入一个配置开关类似 export declare type FormatOptions = boolean | { formatHeader?: boolean; formatData?: boolean; placeholder?:boolean; }; 支持占位符的导出

明白了, 这个请另外提个 issue (带上复现 demo), 你的场景和该 issue 没关系, 不要混在一起了.

看起来你配置了 S2DataConfig.meta 的格式化, 表格渲染的时候把 null 转成了 -, 但是导出的时候 formatOptions: true 预期应该是使用格式化后的值 (-), 和表格长一样, 但是还是导出的还是 null, 初步看起来是 BUG, 需要结合你的可复现 demo 排查一下.

commented

@lijinke666 请问下这个问题有计划修复吗,在使用的时候我也有这个获取colCell原始值的需求

这个属于能力增强了, 不是 修复, 你是什么场景? 也是维值为 null ? 请详细描述你的诉求

目前就是对维度定义了一些格式化函数,然后这个函数里面包含了对维度为null值的一些处理,目前就是导出成的时候我需要将维度的null经过格式化处理之后的结果导出。 比如说下面这个表 image 通过 const data = await asyncGetAllPlainData({ sheetInstance: s2, split: '\t', formatOptions: true }); 导出的结果为 image 我希望的结果是上面的日期为空的维度值可以导出成我在formatter自定义的null为空值的结果,我的一个实现思路是通过这个colCell的单元格对应的原始值来判断,如果是null就在对应维度的formatter函数中进入自定义的null为空值的处理逻辑。但是由于维度值在s2中直接被转成字符串,就没有办法在formatter中进行正确的维值为null的格式处理再进行导出。 或者说,针对导出的这个问题,能否支持在asyncGetAllPlainData 中的formatOptions 加入一个配置开关类似 export declare type FormatOptions = boolean | { formatHeader?: boolean; formatData?: boolean; placeholder?:boolean; }; 支持占位符的导出

明白了, 这个请另外提个 issue (带上复现 demo), 你的场景和该 issue 没关系, 不要混在一起了.

看起来你配置了 S2DataConfig.meta 的格式化, 表格渲染的时候把 null 转成了 -, 但是导出的时候 formatOptions: true 预期应该是使用格式化后的值 (-), 和表格长一样, 但是还是导出的还是 null, 初步看起来是 BUG, 需要结合你的可复现 demo 排查一下.

谢谢,我重新提了一个issue 来说明这个问题https://github.com/antvis/S2/issues/2808