We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Help with Dynamic dates on the Dashboarding using Content Block

Innus Mulani
Tera Contributor

Hi All,

 

I have added a List report on the Dashboard with source as catalog task table. I want to apply the interactive filter to this dashboard using Content Block widget. 

On this widget, I have added 2 date_time fields to pick the date/time with one button to call the below function 

publishFilter().

When i am passing the two static date/time values (between) to the publish filter, dashboard return the result correctly. But i would like to use the date value entered on the form in 2 fields and pass to this function.

I have tried to use below but it is not working and returns no data.

 

filter_message.filter = "opened_atBETWEENjavascript:gs.dateGenerate(starttime)@javascript:gs.dateGenerate(endtime)";
 
See script below:
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<script>
    var my_dashboardMessageHandler = new DashboardMessageHandler("my_unique_id");

function publishFilter () {
    var filter_message = {};
    filter_message.id = "my_unique_id";
    filter_message.table = "sc_task";
    var starttime = document.getElementById('DateTime1').value;
    var endtime = document.getElementById('DateTime2').value;
        
<!--     Add your own filter query logic here -->
    filter_message.filter = "opened_atBETWEENjavascript&colon;gs.dateGenerate('2023-05-01','00:00:00')@javascript&colon;gs.dateGenerate('2023-09-01','23:59:59')";
        SNC.canvas.interactiveFilters.setDefaultValue({
            id: filter_message.id,
            filters: [filter_message]
        }, false);
    my_dashboardMessageHandler.publishFilter(filter_message.table, filter_message.filter);
}
1 ACCEPTED SOLUTION

Hi,

 

Try this code and confirm if this works fine

 

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<script>
var my_dashboardMessageHandler = new DashboardMessageHandler("my_unique_id");

function publishFilter () {
var filter_message = {};
filter_message.id = "my_unique_id";
filter_message.table = "sc_task";
var startdatetime = document.getElementById('DateTime1').value;
var enddatetime = document.getElementById('DateTime2').value;
var startdate = startdatetime.split(" ")[0];
var startdate_format = startdate.split("-")[2] + "-" + startdate.split("-")[0] + "-" + startdate.split("-")[1]
var starttime = startdatetime.split(" ")[1];
var enddate = enddatetime.split(" ")[0];
var enddate_format = enddate.split("-")[2] + "-" + enddate.split("-")[0] + "-" + enddate.split("-")[1]
var endtime = enddatetime.split(" ")[1];

<!-- Add your own filter query logic here -->
filter_message.filter = "opened_atBETWEENjavascript&colon;gs.dateGenerate('" + startdate_format + "','" + starttime + "')@javascript&colon;gs.dateGenerate('" + enddate_format + "','" + endtime + "')";
SNC.canvas.interactiveFilters.setDefaultValue({
id: filter_message.id,
filters: [filter_message]
}, false);
my_dashboardMessageHandler.publishFilter(filter_message.table, filter_message.filter);
}

Thank you,
Palani

View solution in original post

6 REPLIES 6

Innus Mulani
Tera Contributor

Thanks @palanikumar . Solution has worked and able to filter based on the dynamic date/time values selected on the page

Very Helpful thanks!