harikm007
03-11-2022Data Warehouse
Add additional information in tooltip - (Column, Bar, Line, Area charts - stacked and classic)
Here is how you can include more information in tooltip.
Steps:
- 
Create column/bar/line/area chart
 - 
In this approach, result of disabled Values panel will display as additional information in tooltip . So create and disable Values panel as required. Make sure there is only one Values panel is enabled and there is no Categories and Break by panel is disabled.
 - 
Add below widget script and save
 - 
Refresh widget
 
widget.on("beforequery", function (se, ev) {
	$.each(ev.widget.metadata.panels[1].items, function(index, value){
		if(value.disabled == true)
		{
			var newJaql = {
				jaql  : JSON.parse(JSON.stringify(value.jaql))
			}
			ev.query.metadata.push(newJaql)
			lastIndex = ev.query.metadata.length - 1
			ev.query.metadata[lastIndex].disabled = false	
		}
	})
})
widget.on("beforedatapointtooltip", function (se, args){
	var valueSet, breakbyExist = false, categoryExist = false
	if(args.widget.metadata.panels[2].items.length > 0)
		breakbyExist = true
		if(args.widget.metadata.panels[0].items.length > 0)
			categoryExist = true
			category = args.context.category
			seriesName = args.context.points[0].seriesName
			if(categoryExist)
			{
				categoryTitle = args.widget.metadata.panels[0].items[0].jaql.title
				categoryIndex = args.widget.rawQueryResult.headers.indexOf(categoryTitle)
			}
	if(breakbyExist)
	{
		breakbyTitle = args.widget.metadata.panels[2].items[0].jaql.title
		breakByIndex = args.widget.rawQueryResult.headers.indexOf(breakbyTitle)
	}
	$.each(se.rawQueryResult.values, function(key, value)
		   {
		if(!categoryExist)
		{
			if(value[breakByIndex].text == seriesName)
			{
				valueSet = value
			}
		}else if(!breakbyExist)
		{
			if(value[categoryIndex].text == category)
			{
				valueSet = value
			}
		}else
		{
			if(value[breakByIndex].text == seriesName && value[categoryIndex].text == category)
			{
				valueSet = value
			}
		}
	})
	$.each(args.widget.metadata.panels[1].items, function(index, value){
		if(value.disabled == true)
		{
			resultIndex = args.widget.rawQueryResult.headers.indexOf(value.jaql.title)
			args.context.points[args.context.points.length]= {
				seriesName: value.jaql.title,
				showPercentage: false,
				value: valueSet[resultIndex].text,
				valueColor: args.context.points[0].valueColor
			}
		}
	})
})
-Hari