top of page

Target/Benchmark Line Based on Selected Filter

Updated: Nov 27, 2024

It is possible to add a benchmark/Target line to a chart using script. But there can be situations where we need to change the benchmark value dynamically based on selected filter. Here is a script to achieve this.




ree

Steps:

  1. Create Bar chart/ Column chart/ Line chart/ Area chart

  2. Add below script to widget

  3. Update the variable 'filterName' with name filter panel based on which the benchmark line should change

  4. Update the variable 'filterBenchmarkMapping' with mapping of filter item to benchmark value. If multiple items or no items selected, value of 'default' will be taken as value. So don't delete 'default' item from the list.

  5. Save the script and refresh the dashboard


widget.on('processresult', function(se, ev){
	
	let filterName = 'Region'
	
	let filterBenchmarkMapping = {
		'South': 100000,
		'West': 150000,
		'Midwest' : 200000,
		'default' : 250000
	}
	
	let selectedItem = 'default'
	
	let selectedFilter  = se.dashboard.filters.$$items.find(el=>el.jaql.title == filterName) //for dashboard filter
	
	//let selectedFilter  = ev.widget.metadata.panels[3].items.find(el=>el.jaql.title == filterName) //for widget filter
	
	if(selectedFilter && selectedFilter.jaql.filter && selectedFilter.jaql.filter.members && filterBenchmarkMapping[selectedFilter.jaql.filter.members[0]])
		selectedItem = selectedFilter.jaql.filter.members[0]

	ev.result.yAxis[0].plotLines = [{
				color: '#2ec7b5',
				dashStyle: 'LongDash',
				width: 2,
				value: filterBenchmarkMapping[selectedItem],
				zIndex: 5,
				label : {
					text : 'Target'
				}
            }]
})

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating

BI Next Level is your trusted resource for BI customization, data solutions, and expert insights. Explore practical tips, scripts, and tutorials for tools like Sisense, Python, and SQL. Let’s transform your data into impactful insights together.

Quick Links
Connect with us
bottom of page