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