在将其显示在 Google 图表中之前,我需要格式化从 Analytics 获得的响应,当 on("success"
出现时,我尝试编辑响应。 ... 方法被触发,但我发现它在 .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);
我可以看到记录label
被修改但图表在编辑之前被填充。
最佳答案
我认为有一个解决方法。它有问题,但可能有用。同时处理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'));
});
它不优雅并且有很多问题。我真的很想得到正确的解决方案。
关于google-analytics - 在调用 .execute() 之前 Google Embed API 格式数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32606704/