在使用APEX(18.2)技术开发应用程序时,可以在App Builder-> Advanced->“ JavaScript Initialization Code”下为图表提供自定义数据过滤器回调。在我的情况下,我这样做是为了计算标签值。 这是我基于App Builder内部帮助页面中的示例的工作解决方案:
function( options ){
// Setup a callback function which gets called when data is retrieved, it allows to manipulate the series
options.dataFilter = function( data ) {
series = data.series;
$.each(series[0].items, function (_i, item) {
if (item.value) {
item.label = (Math.round(item.value*100)/100).toString();
item.labelPosition = 'outsideBarEdge';
}
});
data.series[ 0 ].color = "#00FF00";
return data;
};
return options;
}
每次更改该图的数据系列时,都会调用此函数。 问题:每次数据系列更改时,只要初始化图表,就会调用 dataFilter回调。
现在,在刷新包含该图表的区域以处理数据之后,我想稍后再调用其他回调(来自动态操作)稍有不同(与问题无关)。
有什么方法可以发现数据系列已完全加载并且数据对象已准备好进行操作?
先谢谢了。 P.s.我对stackoverflow的第一个问题,希望它能提供足够的信息。
我尝试定期检查图表的data.series属性,并在不为null时调用自定义数据过滤器函数。该解决方案的问题是(很脏。),一个图可以有两个y轴,并且只要加载了一个y轴的数据,此解决方案就将开始处理数据。 由于我正在计算标签-第二个数据系列(对于第二个y轴)将没有标签。
我定期检查data.series的肮脏解决方案不应成为新解决方案的起点,因此我决定不发布它。
预期结果:当通过动态操作为图表调用新的数据过滤器回调时,图表的所有数据系列的所有点都具有预先计算的标签值。