2016-04-18 7 views
0

Ich möchte nur sicherstellen, dass ich etwas zu tun, nicht falsch, bevor ich einen Fehler/graben in GWT-Charts Code-Datei ...GWT-Charts ColumnFunction funktioniert nicht?

ein Linechart stylen Versuch:

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); 

(I hatte RoleType.STYLE selbst, custom-built 0.9.11-snapshot off Master)

aber fügte hinzu, dass Spalte führt (unter Verwendung von neuen JSONObject (Spalten)) hinzuzufügen:

{ 
    "0":{"sourceColumn":0}, 
    "1":{"sourceColumn":1, "label":"Data"}, 
    "2":{"calc":{}, "type":"string", "role":"style"} 
} 

Beachten Sie den leeren Satz für "calc"?

Ich habe versucht, nur eine ColumnFunction für Daten (Rückgabe eines flachen Wertes) für den Fall, dass die "style" Role mehr als nur das Hinzufügen von RoleType Enum, und das scheint auch nicht durch.

Die JSNI in DataViewColumn.setCalc (ColumnFunction) scheint mir richtig zu sein, so dass ich bin mir nicht sicher, wo das Problem liegt ...

UPDATE:

Putting Debugging-Anweisungen in der ColumnFunction zeigte es lief, aber die Ausgabe schien nicht benutzt zu werden.

Stellt fest, dass DataViewColumn.setCalc die Rückgabeanweisung in seinem JSNI-Wrapper fehlte.

+0

Das befiehlt ich gebaut auf: https://github.com/google/gwt-charts/commit/586282f34d6251a0ac9ab451c4918594d8e9e39f Meine ganze Veränderung „STYLE (“ style „)“ auf die Roletype Enumeration wurde hinzugefügt. –

Antwort

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) { 
     [email protected]::calc(Lcom/googlecode/gwt/charts/client/DataTable;I) (dataTable, row); 
    }; 
}-*/; 

nicht Wurde der Wert der Rückkehr von der Funktion berechnet, die Berechnung es einfach.

Das Hinzufügen von "return" zu der Zeile im innersten Block behebt das Problem.

Verwandte Themen