This example shows how to customize the default tooltip of a Chart
.
Chart
.A Chart
instance comes with a simple default tooltip. This tooltip is represented by the tooltip
attribute. Through the tooltip attribute you can do the following:
The tooltip
attribute contains the following properties:
CartesianSeries
instance of the item.seriesCollection
.HTMLElement
which is written into the DOM using appendChild
. If you override this method and choose to return an html string, you
will also need to override the tooltip's setTextFunction
method to accept an html string.
CategoryAxis
Reference to the categoryAxis of the chart.
seriesCollection
.HTMLElement
which is written into the DOM using appendChild
. If you override this method and choose to return an html string, you
will also need to override the tooltip's setTextFunction
method to accept an html string.
planarLabelFunction
or markerLabelFunction
into the the tooltip node.
has the following signature:
HTMLElement
that the content is to be added.String
or HTMLElement
. If an HTML string is used, it will be rendered as a
string.In this example, we have changed the styles and set a custom markerLabelFunction
to format the text.
#mychart { margin:10px 10px 10px 10px; width:90%; max-width: 800px; height:400px; }
<div id="mychart"></div>
var myDataValues = [ {category:"5/1/2010", Miscellaneous:2000, Expenses:3700, Revenue:2200}, {category:"5/2/2010", Miscellaneous:50, Expenses:9100, Revenue:100}, {category:"5/3/2010", Miscellaneous:400, Expenses:1100, Revenue:1500}, {category:"5/4/2010", Miscellaneous:200, Expenses:1900, Revenue:2800}, {category:"5/5/2010", Miscellaneous:5000, Expenses:5000, Revenue:2650} ]; var myTooltip = { styles: { backgroundColor: "#333", color: "#eee", borderColor: "#fff", textAlign: "center" }, markerLabelFunction: function(categoryItem, valueItem, itemIndex, series, seriesIndex) { var msg = document.createElement("div"), underlinedTextBlock = document.createElement("span"), boldTextBlock = document.createElement("div"); underlinedTextBlock.style.textDecoration = "underline"; boldTextBlock.style.marginTop = "5px"; boldTextBlock.style.fontWeight = "bold"; underlinedTextBlock.appendChild(document.createTextNode(valueItem.displayName + " for " + categoryItem.axis.get("labelFunction").apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]))); boldTextBlock.appendChild(document.createTextNode(valueItem.axis.get("labelFunction").apply(this, [valueItem.value, {prefix:"$", decimalPlaces:2}]))); msg.appendChild(underlinedTextBlock); msg.appendChild(document.createElement("br")); msg.appendChild(boldTextBlock); return msg; } }; var mychart = new Y.Chart({ dataProvider:myDataValues, type:"bar", render:"#mychart", tooltip: myTooltip });