Google Visualization API看上去是个蛮不错的东西,在GAE环境中可以通过移植数据源的方式访问GAE中的数据,以便生成动态的图形。Google visualization python(gviz_api)是可以实现Python中数据类型转换成Visualization API可以使用的json格式的代码,而在django中则可以简单的通过将json数据写入模板来实现。比如:
google.load("visualization", "1", {packages:["table"]});
google.setOnLoadCallback(drawTable);
function drawTable() {
var json_data = new google.visualization.DataTable({{ json }}, 0.5);
var json_table = new google.visualization.Table(document.getElementById('table_div_json'));
json_table.draw(json_data, {allowHtml: true, showRowNumber: true});}
这个{{ json }}就是通过gviz_api中的ToJSon方法生成的json格式数据。其实就像这个我用数据生成的饼型图利用Google Chart也可以生成图片格式的图形,速度要比Visualization API快得多,这一点让我很难在这个wow-dkp-engine程序中取舍。
后来在使用Visualization API生成这张表格的时候遇到一个数据库的异常:
Timeout: datastore timeout: operation took too long
可能由于数据库运算时间过长,导致GAE服务器得不到数据库的响应。这个问题暂时还不太好解决,可能需要用把这个表格数据都放入缓存,然后让gviz_api去缓存中提取数据。大概也可以通过分页来解决这个问题。暂时先用捕捉异常的方法让程序得以运行,一旦发生异常则停止所有操作,只显示异常发生之前计算好的数据,所以每次访问返还的结果居然还都是不一样的...
最近一直在设计这个新的TextStyle主题,总想用最简约的外观和