将GWT可视化的y轴格式从毫秒更改为hr:min:sec
我目前正在使用GWT可视化库生成显示一组作业运行时的折线图。时间值以毫秒为单位,我希望图表以hr:min:sec格式显示y轴标签,而不是以毫秒为单位。我使用了setFormattedValue方法进行此转换,但不幸的是,只有工具提示值显示格式化值,而y轴以毫秒为单位继续显示 这是我的密码:将GWT可视化的y轴格式从毫秒更改为hr:min:sec,gwt,formatting,google-visualization,Gwt,Formatting,Google Visualization,我目前正在使用GWT可视化库生成显示一组作业运行时的折线图。时间值以毫秒为单位,我希望图表以hr:min:sec格式显示y轴标签,而不是以毫秒为单位。我使用了setFormattedValue方法进行此转换,但不幸的是,只有工具提示值显示格式化值,而y轴以毫秒为单位继续显示 这是我的密码: import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import com.electriccl
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import com.electriccloud.commander.gwt.client.util.CommanderUrlBuilder;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.visualization.client.AbstractDataTable;
import com.google.gwt.visualization.client.AbstractDataTable.ColumnType;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.VisualizationUtils;
import com.google.gwt.visualization.client.visualizations.Table;
import com.google.gwt.visualization.client.visualizations.corechart.HorizontalAxisOptions;
import com.google.gwt.visualization.client.visualizations.corechart.LineChart;
public class ScheduledJobMonitorFancyChartPanel extends HorizontalPanel{
protected static final int MS = 0;
protected static final int HR_MIN_SEC = 1;
private String scheduleName;
private HashMap<String, AverageElapsedTime> elapsedTimeData;
private Table dataTable;
private LineChart lineChart;
private boolean graphIsVisible = true;
private int displayStyle;
public ScheduledJobMonitorFancyChartPanel(){
super();
this.setStyleName("hidden");
}
public ScheduledJobMonitorFancyChartPanel(String schedName, HashMap<String, AverageElapsedTime> data, int displayType){
this();
this.scheduleName = schedName;
this.elapsedTimeData = data;
this.displayStyle = displayType;
createTableAndChart();
this.setVisible(graphIsVisible);
}
private void createTableAndChart(){
// this block defines the table and chart
Runnable onLoadCallback = new Runnable() {
public void run() {
VerticalPanel outterPanel = new VerticalPanel();
Label chartTitle = new Label("ElapsedTime Data for " + scheduleName);
chartTitle.setStylePrimaryName("chartTitle");
outterPanel.add(chartTitle);
HorizontalPanel allChartGroups = new HorizontalPanel();
allChartGroups.setStylePrimaryName("allChartGroupsStyle");
// Since a single Job may have multiple steps being monitored, this creates the charts
// for each step, but groups them all (horizontally) under the same job
Collection<String> c = elapsedTimeData.keySet();
Iterator<String> itr = c.iterator();
while(itr.hasNext()){
String stepName = itr.next();
AverageElapsedTime aet = elapsedTimeData.get(stepName);
AbstractDataTable linkableTable = createTableWithLinks(aet);
AbstractDataTable table = createTable(aet);
dataTable = new Table(linkableTable, createDataTableOptions());
dataTable.setStylePrimaryName("dataTableStyle");
lineChart = new LineChart(table, createLineChartOptions(stepName));
lineChart.setStylePrimaryName("lineChartStyle");
HorizontalPanel tableAndChartGroup = new HorizontalPanel();
tableAndChartGroup.setStylePrimaryName("tableAndChartGroup");
tableAndChartGroup.add(dataTable);
tableAndChartGroup.add(lineChart);
allChartGroups.add(tableAndChartGroup);
}
outterPanel.add(allChartGroups);
addToPanel(outterPanel);
}
};
// this line gets the table/chart defined above displayed on the screen
VisualizationUtils.loadVisualizationApi(onLoadCallback, LineChart.PACKAGE, Table.PACKAGE);
}
// Because the table/chart is created inside an annonymous Runnable object, this method
// exposes it to being added to "this"
private void addToPanel(Widget widget){
this.add(widget);
}
// set up the table used by the LineChart
private AbstractDataTable createTable(AverageElapsedTime aet){
DataTable data = DataTable.create();
data.addColumn(ColumnType.STRING, "JobId");
data.addColumn(ColumnType.NUMBER, "ElapsedTime");
data.addRows(aet.getSize());
HashMap<Long, Long> jobIdElapsedTimeHash = aet.getListOfTimes();
Collection<Long> c = jobIdElapsedTimeHash.keySet();
Iterator<Long> itr = c.iterator();
int row = 0;
while(itr.hasNext()){
Long jobId = itr.next();
data.setValue(row, 0, jobId.toString());
if(this.displayStyle == ScheduledJobMonitorFancyChartPanel.MS)
data.setValue(row, 1, jobIdElapsedTimeHash.get(jobId));
else if(this.displayStyle == ScheduledJobMonitorFancyChartPanel.HR_MIN_SEC){
data.setValue(row, 1, jobIdElapsedTimeHash.get(jobId));
String formattedValue = AverageElapsedTime.getDisplayTime(jobIdElapsedTimeHash.get(jobId));
data.setFormattedValue(row, 1, formattedValue);
}
row++;
}
return data;
}
// set up the table used by the DataTable - It embeds links to the jobId listed
private AbstractDataTable createTableWithLinks(AverageElapsedTime aet){
DataTable data = DataTable.create();
data.addColumn(ColumnType.STRING, "JobId");
data.addColumn(ColumnType.NUMBER, "ElapsedTime");
data.addRows(aet.getSize());
HashMap<Long, Long> jobIdElapsedTimeHash = aet.getListOfTimes();
Collection<Long> c = jobIdElapsedTimeHash.keySet();
Iterator<Long> itr = c.iterator();
String urlBase = CommanderUrlBuilder.getBase();
int row = 0;
while(itr.hasNext()){
Long jobId = itr.next();
data.setValue(row, 0, "<a href='" + urlBase + "link/jobDetails/jobs/" + jobId + "' target='_blank'>" + jobId + "</a>");
// data.setValue(row, 1, jobIdElapsedTimeHash.get(jobId));
if(this.displayStyle == ScheduledJobMonitorFancyChartPanel.MS)
data.setValue(row, 1, jobIdElapsedTimeHash.get(jobId));
else if(this.displayStyle == ScheduledJobMonitorFancyChartPanel.HR_MIN_SEC){
data.setValue(row, 1, jobIdElapsedTimeHash.get(jobId));
String formattedValue = AverageElapsedTime.getDisplayTime(jobIdElapsedTimeHash.get(jobId));
data.setFormattedValue(row, 1, formattedValue);
}
row++;
}
return data;
}
// set the options for the DataTable
private Table.Options createDataTableOptions(){
Table.Options options = Table.Options.create();
options.setHeight("300");
options.setWidth("190");
options.setAllowHtml(true);
return options;
}
// set the options for the LineChart
private com.google.gwt.visualization.client.visualizations.corechart.Options createLineChartOptions(String stepName){
com.google.gwt.visualization.client.visualizations.corechart.Options options = com.google.gwt.visualization.client.visualizations.corechart.Options.create();
options.setWidth(500);
options.setHeight(300);
options.setCurveType("function");
options.setColors("#336E95");
options.setTitle(stepName);
HorizontalAxisOptions hao = HorizontalAxisOptions.create();
hao.setSlantedText(true);
hao.setSlantedTextAngle(45);
options.setHAxisOptions(hao);
return options;
}
public void setTimeDisplay(int displayType) {
switch(displayType){
case 0:
break;
case 1:
this.displayStyle = ScheduledJobMonitorFancyChartPanel.HR_MIN_SEC;
}
}
}
import java.util.Collection;
导入java.util.HashMap;
导入java.util.Iterator;
导入com.electriccloud.commander.gwt.client.util.CommanderUrlBuilder;
导入com.google.gwt.user.client.ui.HorizontalPanel;
导入com.google.gwt.user.client.ui.Label;
导入com.google.gwt.user.client.ui.VerticalPanel;
导入com.google.gwt.user.client.ui.Widget;
导入com.google.gwt.visualization.client.AbstractDataTable;
导入com.google.gwt.visualization.client.AbstractDataTable.ColumnType;
导入com.google.gwt.visualization.client.DataTable;
导入com.google.gwt.visualization.client.VisualizationUtils;
导入com.google.gwt.visualization.client.visualizations.Table;
导入com.google.gwt.visualization.client.visualizations.corechart.HorizontalAxisOptions;
导入com.google.gwt.visualization.client.visualizations.corechart.LineChart;
公共类ScheduledJobMonitorFancyChartPanel扩展了HorizontalPanel{
受保护的静态最终整数MS=0;
受保护的静态最终整数HR\u MIN\u SEC=1;
私有字符串scheduleName;
私有HashMap elapsedTimeData;
私有表数据表;
私人线形图;
私有布尔graphIsVisible=true;
私人int显示风格;
公共调度ObjMonitorFancychartPanel(){
超级();
本文件名(“隐藏”);
}
公共ScheduledJobMonitorFancyChartPanel(字符串schedName、HashMap数据、int displayType){
这个();
this.scheduleName=schedName;
this.elapsedTimeData=数据;
this.displayStyle=displayType;
createTableAndChart();
此.setVisible(图形可见);
}
私有void createTableAndChart(){
//此块定义表格和图表
Runnable onLoadCallback=new Runnable(){
公开募捐{
VerticalPanel outterPanel=新的VerticalPanel();
标签chartTitle=新标签(“ElapsedTime数据用于”+scheduleName);
chartTitle.setStylePrimaryName(“chartTitle”);
outterPanel.add(图表标题);
HorizontalPanel allChartGroups=新建HorizontalPanel();
allChartGroups.setStylePrimaryName(“allChartGroupsStyle”);
//由于单个作业可能有多个步骤被监控,因此会创建图表
//对于每个步骤,但将它们全部(水平)分组到同一作业下
集合c=elapsedTimeData.keySet();
迭代器itr=c.Iterator();
while(itr.hasNext()){
字符串stepName=itr.next();
AverageElapsedTime aet=elapsedTimeData.get(步骤名称);
AbstractDataTable linkableTable=createTableWithLinks(aet);
AbstractDataTable=createTable(aet);
dataTable=新表(linkableTable,createDataTableOptions());
setStylePrimaryName(“dataTableStyle”);
线形图=新线形图(表,createLineChartOptions(stepName));
lineChart.setStylePrimaryName(“lineChartStyle”);
HorizontalPanel tableAndChartGroup=新建HorizontalPanel();
tableAndChartGroup.setStylePrimaryName(“tableAndChartGroup”);
tableAndChartGroup.add(dataTable);
tableAndChartGroup.add(折线图);
添加(tableAndChartGroup);
}
添加(所有图表组);
addToPanel(外部面板);
}
};
//此行获取屏幕上显示的上面定义的表格/图表
VisualizationUtils.loadVisualizationApi(onLoadCallback,LineChart.PACKAGE,Table.PACKAGE);
}
//由于表/图表是在一个无注释的可运行对象内创建的,因此此方法
//将其添加到“此”中
私有void addToPanel(小部件){
添加(小部件);
}
//设置线条图使用的表格
私有AbstractDataTable createTable(AverageLapsedTime aet){
DataTable data=DataTable.create();
data.addColumn(ColumnType.STRING,“JobId”);
data.addColumn(ColumnType.NUMBER,“ElapsedTime”);
data.addRows(aet.getSize());
HashMap JobideReleasedTimeHash=aet.getListOfTimes();
集合c=JobidReleasedTimeHash.keySet();
迭代器itr=c.Iterator();
int行=0;
while(itr.hasNext()){
Long jobId=itr.next();
data.setValue(行,0,jobId.toString());
if(this.displayStyle==ScheduledJobMonitorFancyChartPanel.MS)
setValue(行,1,JobidReleasedTimeHash.get(jobId));
else if(this.displayStyle==ScheduledJobMonitorFancyChartPanel.HR\u MIN\u SEC){
setValue(行,1,JobidReleasedTimeHash.get(jobId));
String formattedValue=AverageLapsedTime.getDisplayTime(JobidReleasedTimeHash.get(jobId));
data.setFormattedValue(第1行,formattedValue);
}
行++;
}
返回数据;
}
//设置DataTable使用的表-它嵌入到列出的jobId的链接
私有AbstractDataTable createTableWithLinks(AverageLapsedTime aet){
DataTable data=DataTable.create();
data.addColumn(ColumnType.STRING,“JobId”);
data.addColumn(ColumnType.NUMBER,