Knowledge Base Article

BloX Data Input To Keep The Entered Value

Question

I want to use the Date picker for filtering, however, the dates selected are not getting preserved by the date picker and might be confusing for the end users whether the date is selected or not.

Answer

You can use the script to keep the selected values in the filter.

widget.on('ready',function(se,ev){

if (!Array.isArray(se.queryResult)) return;

var minMax = se.queryResult.reduce(function(acc, val){
if((!acc.min) || acc.min>val[0].Value){acc.min = val[0].Value}
if((!acc.max) || acc.max<val[0].Value){acc.max = val[0].Value}
return acc
} , {min:undefined,max:undefined})


formatted_dateFrom = moment(minMax.min).format('YYYY-MM-DD')
formatted_dateTo = moment(minMax.max).format('YYYY-MM-DD')

document.getElementById("data.filters[0].filterJaql.from").value=formatted_dateFrom
document.getElementById("data.filters[0].filterJaql.to").value=formatted_dateTo

document.getElementById("data.filters[0].filterJaql.from").setAttribute("style", "text-align:center");
document.getElementById("data.filters[0].filterJaql.to").setAttribute("style", "text-align:center");

})

This will pull the values for you.

Published 10-19-2021

5 Comments

  • kreycraft's avatar
    kreycraft
    Sisense Employee

    I've tried this as both a widget and dashboard script and it hasn't worked yet.  I'm missing the connection between date filter and populating the Blox widget. 

     

     

  • Facing similar issues. Any inputs on how to solve this issue will be greatly appreciated

  • Hi,

    I'm getting the current filter value as described in https://community.sisense.com/t5/knowledge-base/blox-date-and-timestamp-range-filter/ta-p/4973. This then worked for me:

    //***** Populate input boxes with current filter values *****/
    widget.on('ready', function() {
    	
    	//replace with filter name
    	var filterName = "Date";
    
    	// ----------Find date filter----------
        let dateFilter = dashboard.filters.$$items.find((item) => {
            if (item.jaql && item.jaql.title.indexOf(filterName) !== -1) {
                return true
            }
        })
    		
    	//get the current 'from' filter value
    	var fromDate = dateFilter.jaql.filter.from;
    	
    	//get the current 'to' filter value
    	var toDate = dateFilter.jaql.filter.to;
    
    	//set the current 'from' and 'to' filter values as placeholder and default value for input field
    	document.getElementById("data.filters[0].filterJaql.from").value=fromDate
    	document.getElementById("data.filters[0].filterJaql.to").value=toDate
    	
    });