2012-11-12 55 views
1

我使用gwt-visualization(圍繞Chart Tools包裝)。我有一個ComboChart,其中包括兩個條形圖(堆疊)和一個折線圖,並且我想將annotationannotationText添加到某些行。ComboChart註釋文本gwt谷歌可視化

DataTable的定義是這樣的:

private DataTable buildData() { 

    DataTable data = DataTable.create(); 
    data.addColumn(ColumnType.STRING, "Day"); 
    data.addColumn(ColumnType.NUMBER, "Domain"); 
    data.addColumn(ColumnType.NUMBER, "Domain (Source 1)"); 
    data.addColumn(ColumnType.NUMBER, "Domain (Source 2)"); 

    addAnnotationColumn(data); 

    return data; 
} 

private native void addAnnotationColumn(DataTable data) /*-{ 
    data.addColumn({ 
     type : 'string', 
     role : 'annotation' 
    }); 
    data.addColumn({ 
     type : 'string', 
     role : 'annotationText' 
    }); 
}-*/; 

然後圖表選項...

private ComboChart.Options createComboOptions(String title) { 
    ComboChart.Options options = ComboChart.createComboOptions(); 
    Series line = Series.create(); 
    line.setType(Type.LINE); 
    options.setSeries(0, line); 

    Series bars1 = Series.create(); 
    bars1.setType(Type.BARS); 
    options.setSeries(1, bars1); 

    Series bars2 = Series.create(); 
    bars2.setType(Type.BARS); 
    options.setSeries(2, bars2); 

    options.setIsStacked(true); 
    return options; 
} 

導致這樣的事情: result

我需要的是到爲行系列中的某些行添加註釋,或換句話說如何在ComboChart中設置角色,但我似乎無法找到任何有關如何在gwt中執行此操作的文檔(或者甚至是如何在ComboChart中的純JS中執行此操作)。幫幫我?

回答

1

原來,ComboChart添加標註/ annotationText列到最後一個系列創建了圖表 - 這意味着角色被添加到條形圖中,該圖形不支持ComboChart中的註釋。

線圖,然而,支持它們 - 因此,「髒修復」是有行系列是最後一個在圖中:

private ComboChart.Options createComboOptions(String title) { 
    ComboChart.Options options = ComboChart.createComboOptions(); 

    Series bars1 = Series.create(); 
    bars1.setType(Type.BARS); 
    options.setSeries(0, bars1); 

    Series bars2 = Series.create(); 
    bars2.setType(Type.BARS); 
    options.setSeries(1, bars2); 

    Series line = Series.create(); 
    line.setType(Type.LINE); 
    options.setSeries(2, line); 

    options.setIsStacked(true); 
    return options; 
} 
1

有關在google圖表中的角色的文檔可以找到here

爲了增加實際的註解你可以使用內置的GWT功能(setValue()) 類似的東西:

private DataTable buildData() { 

    DataTable data = DataTable.create(); 
    data.addColumn(ColumnType.STRING, "Day"); 
    data.addColumn(ColumnType.NUMBER, "Domain"); 
    data.addColumn(ColumnType.NUMBER, "Domain (Source 1)"); 
    data.addColumn(ColumnType.NUMBER, "Domain (Source 2)"); 

    addAnnotationColumn(data); 

    for (int i =0;i<dataLength;i++) { 
     data.addRow(); 
     data.setValue(i,0,'DAY'); 
     data.setValue(i,1,DOMAIN); 
     data.setValue(i,2,DOMAIN_SOURCE1); 
     data.setValue(i,3,DOMAIN_SOURCE2); 
     data.setValue(i,4,ANNOTATION); 
     data.setValue(i,5,ANNOTATION_TEXT); 
    } 

    return data; 
} 
+0

感謝您的回答。問題是,當我這樣做時,註釋根本不會顯示。但是,如果我將角色從「註釋」更改爲「工具提示」(僅用於測試),則「域2」列將具有自定義工具提示。 – Marcelo

+0

@Marcelo:我認爲最好的方法是嘗試在[google圖表遊樂場]中使用純JS重新創建圖表(https://code.google.com/apis/ajax/playground/?type=visualization# combo_chart)。您可以將combochart作爲示例並對其進行修改以添加註釋。一旦這個工作,我們可以檢查爲什麼GWT版本不起作用。 –