我只是想在我提交错误/开始挖掘GWT-Charts代码之前确保我没有做错事......
尝试设置LineChart样式:
DataViewColumn ret = DataViewColumn.create(new ColumnFunction() {
@Override
public Object calc(DataTable dataTable, int row) {
if (dataTable.isValueNull(i, dataColumn)
|| dataTable.getValueNumber(i, dataColumn) < value) {
return "color: red";
}
return "color: green";
}
}, ColumnType.STRING);
ret.setRole(RoleType.STYLE);
(我必须自己添加RoleType.STYLE,自定义构建0.9.11-SNAPSHOT关闭Master)
但是添加该列会导致(使用新的JSONObject(列)):
{
"0":{"sourceColumn":0},
"1":{"sourceColumn":1, "label":"Data"},
"2":{"calc":{}, "type":"string", "role":"style"}
}
注意“calc”的空集?
我尝试为数据执行ColumnFunction(返回一个平面值),以防“style”角色需要的不仅仅是添加到RoleType枚举,而且似乎也没有通过。
DataViewColumn.setCalc(ColumnFunction)中的JSNI似乎对我来说是正确的,所以我不确定问题出在哪里......
更新:
将调试语句放在ColumnFunction中显示它正在运行,但输出似乎没有被使用。
事实证明,DataViewColumn.setCalc在其JSNI包装器中缺少return语句。
答案 0 :(得分:0)
DataViewColumn.setCalc:
/**
* Sets a function that will be called for each row in the column to calculate a value for that cell.
*
* @param columnFunction a function for calculating each row value
*/
public final native void setCalc(ColumnFunction columnFunction) /*-{
this.calc = function(dataTable, row) {
columnFunction.@com.googlecode.gwt.charts.client.ColumnFunction::calc(Lcom/googlecode/gwt/charts/client/DataTable;I) (dataTable, row);
};
}-*/;
没有返回函数计算的值,只计算它。
将“return”添加到最里面的块中的行可以解决问题。