需求:
现有lot设备采集的大量数据需要进行展示,由于数据量大,需要进行图表的缩放,图表由lot设备数据采集生成,通过时间范围进行数据筛选.
需求方希望能够通过缩放后选出需要的数据,并能够将缩放后折线图图表块内的数据导出成excel,图表并没有原生的接口能够导出数据.
分析需求:
可以获取图表缩放前和缩放后的实际x轴坐标轴(lot设备数据采集的时间轴)中左右两端的时间,作为参数传到导出数据页面的cpt中,实现不需要在导出页面重新选择时间范围的功能.
前期尝试:
通过console.log打印图表对象,发现帆软的图表不管缩放前还是缩放后,图表的系列数组中都带有分类,值等信息,并不会因为缩放而改变系列数组的值.

解决方法:
直接审查x轴的左右轴标签,发现是一堆text标签,且缩放后该标签会响应式更改值:

发现需要的两个值正好是两组text的第一组中的第一和最后一个值,因此直接通过jquery选择器选择获取这组text标签中第一和最后一个作为值传参:

js代码:
//获取第一个属性带dx的text标签的text值
var a=$("text[dx]").first().text();
//获取第一个,所有属性带dx的text标签的,最后一个子节点的text值
var b=$("text[dx]:last-child").eq(0).text();
//打印出两个值
setTimeout(function(){console.log(a+"///"+b)},1000);
示例:

|