top of page

Switchable Measure Dropdown

Here is a script to add a dropdown to switch between different measures/calculation.

For example, in below screenshot, each item in dropdown represent different calculations and when we select an item from it, chart will show corresponding calculated values in Y-Axis. (The X-axis won't change)



Steps:

  1. Create a bar/column/line/are chart

  2. Widget should contain only one category(dimension). You can create as many Values panels as required and enable only one panel. The script will generate one button per Value panel and will be able to switch between panels by clicking on buttons.

3. Add below script to widget

4. Save the script and refresh widget



widget.on('processresult', function(se, ev){	
	ev.result.chart.spacing = [20, 20, 77, 20 ]
});

widget.on("domready", function(w){
		
	chart = w.chart[0][Object.keys(w.chart[0])[0]].hc
	
	var buttonList = new Array(w.metadata.panels[1].items.length)
	chartContainer = $('.highcharts-container', element)
	
	dropdownHTML = `<select style="padding: 5px 10px; background:#FFFFFF; border: 1px solid #c0c1c2; margin:2px 5px;" name="select" id="select-${w.oid}"></select>`
	
	
	if($(`#select-${w.oid}`).length)
	{
		$(`#select-${w.oid}`).remove()
		chartContainer.height(chartContainer.height() + 77);
	}
	chartContainer.before(dropdownHTML)
	
	$.each(w.metadata.panels[1].items, function(index, value){
		$(`#select-${w.oid}`).append(`<option value="Item${index}">${value.jaql.title}</option>`)
	})	
	
	chartContainer.height(chartContainer.height() - 77);
	
	selecteIndex = w.metadata.panels[1].items.findIndex(el=>el.disabled == false)	 
	document.getElementById(`select-${widget.oid}`).value = 'Item' + selecteIndex
	var select = document.getElementById(`select-${widget.oid}`);

	select.addEventListener('change', (e) => {
		
	  var selectedPanelIndex = parseInt(e.target.value.replace('Item', ''))

	  $.each(w.metadata.panels[1].items, function(itemIndex, itemValue){
		if(itemIndex == selectedPanelIndex)
			itemValue.disabled = false
		else
			itemValue.disabled = true

	  })
	  widget.refresh();

	});

});




521 views1 comment

1 commento

Valutazione 0 stelle su 5.
Non ci sono ancora valutazioni

Aggiungi una valutazione

Hi -

This is great. I'm using W2021.4 at the moment, soon to upgrade to later W2024.3. I'm finding that with this script in place, if I later edit the widget and then just hit cancel, the dropdown disappears. Refreshing the widget from the (i) button corrects the problem and the dropdown returns. Absolutely workable, bit if you see a fix to that...

Cheers.

CW

Mi piace
BI Next Level white logo

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
Copyright © 2024. All Rights Reserved. Designed, Developed & Maintained  by Intertoons
bottom of page