2016-07-20 3 views
0

Ich habe eine grundlegende AmGraph bekam:Amcharts - Wie formatiert man valueField in einem benutzerdefinierten Tooltip?

graph = new AmCharts.AmGraph(); 

    graph.lineThickness = 4; 
    graph.valueAxis = valueAxis; 
    graph.fillAlphas = 0; 
    graph.valueAxis = valueAxis; 
    graph.valueAxis.minimum = 0; 

    graph.title = "likes"; 
    graph.labelText = " "; 
    graph.valueField = "likes_1"; 

Das Problem ist, dass die numberFormatter nicht Werte Format, wenn ich eine benutzerdefinierte balloonText Funktion bin mit:

graph.numberFormatter = {precision: -1, decimalSeparator:",", thousandsSeparator:","}; 

Also, wenn ich diese verwenden :

graph.balloonText = "<b>got: [[likes_1]] </b>"; 

Der Tooltip sieht wie folgt aus:

"got: 1000" 

Wie kann ich den Wert formatieren? wenn ich versuche, Javascript zu verwenden für die Formatierung es (Numeral.js):

graph.balloonText = "<script>numeral([[likes_1]]).format("0,0") </script>"; 

Der Platzhalter ist nicht mit dem Ist-Wert ersetzt, wenn die Seite den Aufbau, so dass ich nur bekommen (aber eher, wenn das Diagramm schweben?) :

Uncaught ReferenceError: likes_32 is not defined 

Was soll ich tun?

Antwort

2

(Erste empfehlen kann ich die neuere Art von Diagramm Initialisierung zu verwenden! here für das Schauen.)

Statt balloonText können Sie balloonFunction verwenden, das Sie den Text ändern kann mit JavaScript. Dort können Sie die Nummer nach Ihren Wünschen formatieren.
Ich bereitete einen demo mit dem AmCharts.formatNumber Formatierer vor.

return AmCharts.formatNumber(graphDataItem.values.value, { 
     precision: -1, 
     decimalSeparator: '.', 
     thousandsSeparator: ',' 
    }, -1); 

Sie können immer noch Numeral.js dort verwenden, obwohl (es Syntax ein wenig mehr geradeaus mir scheint).

return numeral(graphDataItem.values.value).format("0,0"); 
+0

Kann ich irgendwelche Parameter an den Callback balloonFunction senden? weil meine chartData für mehrere Graphen ausgelegt ist und jeder Graph einen anderen Tooltip hat, zusammen mit einem anderen valueField. Oder ich könnte einfach verschiedene Callbacks für jedes Diagramm erstellen? graph.valueField = "likes_1"; graph2.valueField = "likes_2"; – Buffalo

+0

Da die 'balloonFunction' Teil des' graph' Objekts ist, kann jedes Diagramm eine andere Implementierung für die Formatierung haben (oder was auch immer Sie mit dem Tooltip Inhalt machen wollen). Sie müssen nur eine gültige Zeichenfolge zurückgeben, der Inhalt spielt keine Rolle. Sie können die Funktion leicht debuggen, um zu sehen, welche Informationen über die Argumente bereitgestellt werden. – gerric

+0

Danke, es hat. Es ist SEHR hässlich, da ich ein Diagramm und 40 oder mehr Diagramme habe, also 40 oder mehr Formatierungsfunktionen (10+ für jede der 4 Umschaltansichten), aber es funktioniert. Ich werde mit einem Javascript hashmap spielen, das alle Daten enthält und mir erlaubt, von derselben Funktion mit einigen Parametern darauf zuzugreifen. Wenn ich jemals aus Sachen raus bin :) – Buffalo