如何在 pe:gcharts 中指定列类型
How to specify column type in pe:gcharts
简单的问题,但我想不出答案。
在普通的 GCharts 中,我有这个:
var data = new google.visualization.DataTable();
data.addColumn('datetime', 'Time');
data.addColumn('number', 'Value 1');
data.addColumn('number', 'Value 2');
但是,如何使用 PrimerFaces 的模型构建器指定值为 datetime 和 number?
.addColumns() 方法只是将项目添加为 List<String>
:
GChartModelBuilder lineChartModelBuilder = new GChartModelBuilder();
lineChartModelBuilder.setChartType(GChartType.LINE);
lineChartModelBuilder.addColumns("Time");
lineChartModelBuilder.addColumns("Value 1");
lineChartModelBuilder.addColumns("Value 2");
谢谢!
我假设您使用的是非常旧的 PF Extensions 版本?我之所以这么说是在 2016 年,它被修复为使用 List<Object>
而不是 List<String>
并在 PrimeFaces Extensions 6.1 或更高版本中发布。
更新:
如果您想使用键值对添加数据,应该可以。由于 GChart 使用 Google GSON 将 Java 代码转换为 JSON 给客户端,我想如果你在字段中放置一个字符串数组值,它会像你期望的那样反序列化。
创建表示列的 POJO:
public class GChartModelColumn {
// column label
private final String label;
// column type: number, date, datetime
private final String type;
public GChartModelColumn(String label, String type) {
super();
this.label = label;
this.type = type;
}
public String getLabel() {
return label;
}
public String getType() {
return type;
}
}
然后使用上面的模型添加列,例如...
lineChartModelBuilder.addColumns(
new GChartModelColumn("Time", "datetime"),
new GChartModelColumn("Value 1", "number"),
new GChartModelColumn("Value 2", "number"));
然后在 JS 代码中它将您的数据对象转换为 Google DataTable。
var dataTable = google.visualization.arrayToDataTable(this.data);
简单的问题,但我想不出答案。
在普通的 GCharts 中,我有这个:
var data = new google.visualization.DataTable();
data.addColumn('datetime', 'Time');
data.addColumn('number', 'Value 1');
data.addColumn('number', 'Value 2');
但是,如何使用 PrimerFaces 的模型构建器指定值为 datetime 和 number?
.addColumns() 方法只是将项目添加为 List<String>
:
GChartModelBuilder lineChartModelBuilder = new GChartModelBuilder();
lineChartModelBuilder.setChartType(GChartType.LINE);
lineChartModelBuilder.addColumns("Time");
lineChartModelBuilder.addColumns("Value 1");
lineChartModelBuilder.addColumns("Value 2");
谢谢!
我假设您使用的是非常旧的 PF Extensions 版本?我之所以这么说是在 2016 年,它被修复为使用 List<Object>
而不是 List<String>
并在 PrimeFaces Extensions 6.1 或更高版本中发布。
更新:
如果您想使用键值对添加数据,应该可以。由于 GChart 使用 Google GSON 将 Java 代码转换为 JSON 给客户端,我想如果你在字段中放置一个字符串数组值,它会像你期望的那样反序列化。
创建表示列的 POJO:
public class GChartModelColumn {
// column label
private final String label;
// column type: number, date, datetime
private final String type;
public GChartModelColumn(String label, String type) {
super();
this.label = label;
this.type = type;
}
public String getLabel() {
return label;
}
public String getType() {
return type;
}
}
然后使用上面的模型添加列,例如...
lineChartModelBuilder.addColumns(
new GChartModelColumn("Time", "datetime"),
new GChartModelColumn("Value 1", "number"),
new GChartModelColumn("Value 2", "number"));
然后在 JS 代码中它将您的数据对象转换为 Google DataTable。
var dataTable = google.visualization.arrayToDataTable(this.data);