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

palanikumar
Mega Sage

Hi,

 

Can you try the below filter:

filter_message.filter = "opened_atBETWEENjavascript&colon;gs.dateGenerate('2023-05-01','00:00:00')@javascript&colon;gs.dateGenerate('2023-09-01','23:59:59')";

Thank you,
Palani

Thanks @palanikumar 

This works perfectly fine if we pass the static date/time values in the filter qualification. But i have two date/time fields on the form as below and it should run dynamically

 

When fields are selected, i hit the search button and it should pass those 2 values in the filter

InnusMulani_0-1694966479250.png

 

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

@palanikumarI am using the same script but its not working for me could you help.

 

<?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 = "incident";
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);
}
</script>

<style>
    .filter-container {
      margin: 10px;
      display: flex;
      flex-direction: column;
      align-items: start;
    }
    .filter-container label {
      font-weight: bold;
      margin-bottom: 5px;
    }
</style>

<div class="filter-container">
    <label for="start-date">Start Date:</label>
    <input type="date" id="start-date" name="start-date" onchange="publishFilter()" />
   
    <label for="end-date" style="margin-top: 10px;">End Date:</label>
    <input type="date" id="end-date" name="end-date" onchange="publishFilter()" />
    <button onclick="publishFilter()">Apply Filter</button>
</div>

</j:jelly>