我需要格式化我从Google Analytics中获得的响应,然后在Google Chart中显示它,我尝试在on("success"
...方法被触发时编辑响应,但我发现它在{{{{}后被调用1}}。
有没有办法在收到响应之后和填充图表之前编辑响应?
这是我的功能:
.execute()
使用var dataChart5 = new gapi.analytics.googleCharts.DataChart({
reportType: 'ga',
query: {
'ids': 'ga:***', // My ID
'start-date': '31daysAgo',
'end-date': 'yesterday',
'metrics': 'ga:users,ga:percentNewSessions,ga:sessions,ga:bounceRate,ga:avgSessionDuration,ga:pageviews,ga:pageviewsPerSession',
'prettyPrint':'true',
},
chart: {
'container': 'chart-5-container',
'type': 'TABLE',
'options': {
'width': '100%',
'title': 'test'
}
}
});
dataChart5.on('success', function(response) {
response.data.cols[0].label = "test1"; //here I edit the response
console.log(response);
});
dataChart5.execute();
我可以看到记录console.log(response);
被修改,但图表会在编辑之前填充。
答案 0 :(得分:0)
我认为有一种解决方法。它有问题,但可能有用。在处理success
事件时,调用一个函数,该函数将递归地遍历$('#chart-5-container')
的子元素并在其中应用格式。
该方法的一个问题是不会重新计算元素的位置。因此,使用不同的字符串大小,您可能会得到重叠的字符串。而且,它似乎并没有影响工具提示。
我正在使用这种方法来翻译葡萄牙语。
function recursiveTranslate(e) {
var key = e.html(),
dict = {};
dict['Date'] = 'Data';
dict['Users'] = 'Visitantes';
dict['Sessions'] = 'Visitas';
dict['Pageviews'] = 'Visualizações';
if (key in dict) {
e.html(dict[key]);
}
for (var i = 0; i < e.children().length; i++) {
recursiveTranslate($(e.children()[i]));
}
}
然后我在成功事件中致电recursiveTranslate
:
dataChart5.on('success', function h(obj) {
recursiveTranslate($('#chart-5-container'));
});
它不优雅,有很多问题。我真的很想找到合适的解决方案。