Steps:
Create Ui macro using below code:
Name: interactive_date_filter
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<j:if test="${RP.isPreview()}">
<center>${gs.getMessage('No preview available')}</center>
</j:if>
<style>
#GwtDateTimePicker.drag_section_part .drag_section_picker .drag_section_header .drag_section_movearea {
line-height: 1.42857;
}
.interactive_date_filter {
margin: 4px 0px;
}
.interactive_date_filter .select2-container {
min-width: 180px;
margin: 0 10px;
}
</style>
<!-- Its just an demo widget which we are building, so all code is in one file, but for proper code separate out this in separate macros -->
<g:evaluate var="jvar_fields" jelly="true">
var fields = "";
var td = new GlideTableDescriptor("${jvar_table}");
var result = [];
if("${jvar_field}" === "") {
result = [{"id": "all",
"text": "All"
}];
}
var iterator = td.getSchemaList().iterator();
while(iterator.hasNext()) {
var current = iterator.next();
var compElm = new GlideCompositeElement(current.getName(), '${jvar_table}');
var ed = compElm.getTargetED();
if(ed.isDateType()){
if("${jvar_field}" !== "" && "${jvar_field}" == current.getName()) {
result = [{"id": current.getName(),
"text": current.getLabel()
}];
}
if("${jvar_field}" === "") {
result.push({"id": current.getName(),
"text": current.getLabel()
});
}
}
}
fields = JSON.stringify(result);
fields;
</g:evaluate>
<j:if test="${!RP.isPreview()}">
<form id="${jvar_uid}" class="form-inline interactive_date_filter">
<input type="hidden" id="interactive_date_filter_feilds" value="${jvar_fields}" />
<div class="form-group">
<div class="fields-select form-control" title="From date">
</div>
<label class="control-label fields-select-label" style="padding: 7px;font-weight: 800;display:none;">
</label>
</div>
<span class="filter-block">
<div class="form-group">
<select id="filerTableSelect" class="form-control" title="${gs.getMessage('Operator')}">
<option value="ON">${gs.getMessage('on')}</option>
<option value="NOTON">${gs.getMessage('not on')}</option>
<option val = "<" value="lt">${gs.getMessage('before')}</option>
<option val = "<=" value="lteq">${gs.getMessage('at or before')}</option>
<option val = ">" value="gt">${gs.getMessage('after')}</option>
<option val = ">=" value="gteq">${gs.getMessage('at or after')}</option>
<option value="BETWEEN">${gs.getMessage('between')}</option>
<option value="ISEMPTY">${gs.getMessage('is empty')}</option>
<option value="ISNOTEMPTY">${gs.getMessage('is not empty')}</option>
<option value="ANYTHING">${gs.getMessage('is anything')}</option>
</select>
</div>
<div class="form-group" other-block="">
<div class="fromSelect form-control" title="${gs.getMessage('Select Date')}" >
</div>
</div>
<div class="form-group" other-block="">
<input id="${jvar_uid}-fromSelectDate" type="hidden" name="fromSelectDate" />
<button type="button" onclick="new GwtDateTimePicker('${jvar_uid}-fromSelectDate', '$[gs.getDateFormat()]', false);" title="Choose date..." class="btn btn-default icon-calendar" style="margin-right: 1px; vertical-align: top;"></button>
</div>
<div class="form-group" between-block="" style="margin-left: 10px;display: none;">
<label class="control-label" style="padding: 7px;font-weight: 800;">${gs.getMessage('and')}</label>
</div>
<div class="form-group" between-block="" style="display: none;">
<div class="toSelect form-control" title="${gs.getMessage('To date')}">
</div>
<input id="${jvar_uid}-toSelectDate" type="hidden" name="toSelectDate" />
<button type="button" onclick="new GwtDateTimePicker('${jvar_uid}-toSelectDate', '$[gs.getDateFormat()]', false);" title="Choose date..." class="btn btn-default icon-calendar" style="margin-right: 1px; vertical-align: top;"></button>
</div>
</span>
</form>
</j:if>
<script>
(function() {
var optionValues = {
"ON_NOT_ON": [{
"text": "${gs.getMessage('Today')}",
"id": "Today@javascript:gs.daysAgoStart(0)@javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "Yesterday@javascript:gs.daysAgoStart(1)@javascript:gs.daysAgoEnd(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "Tomorrow@javascript:gs.daysAgoStart(-1)@javascript:gs.daysAgoEnd(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "This week@javascript:gs.beginningOfThisWeek()@javascript:gs.endOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "Last week@javascript:gs.beginningOfLastWeek()@javascript:gs.endOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "Next week@javascript:gs.beginningOfNextWeek()@javascript:gs.endOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "This month@javascript:gs.beginningOfThisMonth()@javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "Last month@javascript:gs.beginningOfLastMonth()@javascript:gs.endOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "Next month@javascript:gs.beginningOfNextMonth()@javascript:gs.endOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "Last 3 months@javascript:gs.monthsAgoStart(3)@javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "Last 6 months@javascript:gs.monthsAgoStart(6)@javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "Last 9 months@javascript:gs.monthsAgoStart(9)@javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "Last 12 months@javascript:gs.monthsAgoStart(12)@javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "This quarter@javascript:gs.beginningOfThisQuarter()@javascript:gs.endOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "Last quarter@javascript:gs.quartersAgoStart(1)@javascript:gs.quartersAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 quarters')}",
"id": "Last 2 quarters@javascript:gs.quartersAgoStart(1)@javascript:gs.endOfThisQuarter()"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "Next quarter@javascript:gs.quartersAgoStart(-1)@javascript:gs.quartersAgoEnd(-1)"
}, {
"text": "${gs.getMessage('Next 2 quarters')}",
"id": "Next 2 quarters@javascript:gs.quartersAgoStart(-1)@javascript:gs.quartersAgoEnd(-2)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "This year@javascript:gs.beginningOfThisYear()@javascript:gs.endOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "Next year@javascript:gs.beginningOfNextYear()@javascript:gs.endOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "Last year@javascript:gs.beginningOfLastYear()@javascript:gs.endOfLastYear()"
}, {
"text": "${gs.getMessage('Last 2 years')}",
"id": "Last 2 years@javascript:gs.beginningOfLastYear()@javascript:gs.endOfThisYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "Last 7 days@javascript:gs.daysAgoStart(7)@javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "Last 30 days@javascript:gs.daysAgoStart(30)@javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "Last 60 days@javascript:gs.daysAgoStart(60)@javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "Last 90 days@javascript:gs.daysAgoStart(90)@javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "Last 120 days@javascript:gs.daysAgoStart(120)@javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "Current hour@javascript:gs.hoursAgoStart(0)@javascript:gs.hoursAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "Last hour@javascript:gs.hoursAgoStart(1)@javascript:gs.hoursAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "Last 2 hours@javascript:gs.hoursAgo(2)@javascript:gs.hoursAgo(0)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "Current minute@javascript:gs.minutesAgoStart(0)@javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "Last minute@javascript:gs.minutesAgoStart(1)@javascript:gs.minutesAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "Last 15 minutes@javascript:gs.minutesAgoStart(15)@javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "Last 30 minutes@javascript:gs.minutesAgoStart(30)@javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "Last 45 minutes@javascript:gs.minutesAgoStart(45)@javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "One year ago@javascript:gs.monthsAgo(12)@javascript:gs.endOfThisMonth()"
}],
"BEFORE": [{
"text": "${gs.getMessage('Today')}",
"id": "javascript:gs.daysAgoStart(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "javascript:gs.daysAgoStart(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "javascript:gs.daysAgoStart(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "javascript:gs.beginningOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "javascript:gs.beginningOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "javascript:gs.beginningOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "javascript:gs.beginningOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "javascript:gs.beginningOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "javascript:gs.beginningOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "javascript:gs.monthsAgoStart(3)"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "javascript:gs.monthsAgoStart(6)"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "javascript:gs.monthsAgoStart(9)"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "javascript:gs.monthsAgoStart(12)"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "javascript:gs.beginningOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "javascript:gs.quartersAgoStart(1)"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "javascript:gs.quartersAgoStart(-1)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "javascript:gs.beginningOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "javascript:gs.beginningOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "javascript:gs.beginningOfLastYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "javascript:gs.daysAgoStart(7)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "javascript:gs.daysAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "javascript:gs.daysAgoStart(60)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "javascript:gs.daysAgoStart(90)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "javascript:gs.daysAgoStart(120)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "javascript:gs.hoursAgoStart(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "javascript:gs.hoursAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "javascript:gs.hoursAgo(2)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "javascript:gs.minutesAgoStart(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "javascript:gs.minutesAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "javascript:gs.minutesAgoStart(15)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "javascript:gs.minutesAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "javascript:gs.minutesAgoStart(45)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "javascript:gs.monthsAgo(12)"
}],
"AT_OR_BEFORE": [{
"text": "${gs.getMessage('Today')}",
"id": "javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "javascript:gs.daysAgoEnd(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "javascript:gs.daysAgoEnd(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "javascript:gs.endOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "javascript:gs.endOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "javascript:gs.endOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "javascript:gs.endOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "javascript:gs.endOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "javascript:gs.monthsAgoStart(3)"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "javascript:gs.monthsAgoStart(6)"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "javascript:gs.monthsAgoStart(9)"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "javascript:gs.monthsAgoStart(12)"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "javascript:gs.endOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "javascript:gs.quartersAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 quarters')}",
"id": "javascript:gs.quartersAgoEnd(2)"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "javascript:gs.quartersAgoEnd(-1)"
}, {
"text": "${gs.getMessage('Next 2 quarters')}",
"id": "javascript:gs.quartersAgoEnd(-2)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "javascript:gs.endOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "javascript:gs.endOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "javascript:gs.endOfLastYear()"
}, {
"text": "${gs.getMessage('Last 2 years')}",
"id": "javascript:gs.beginningOfLastYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "javascript:gs.daysAgoStart(7)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "javascript:gs.daysAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "javascript:gs.daysAgoStart(60)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "javascript:gs.daysAgoStart(90)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "javascript:gs.daysAgoStart(120)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "javascript:gs.hoursAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "javascript:gs.hoursAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "javascript:gs.hoursAgo(2)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "javascript:gs.minutesAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "javascript:gs.minutesAgoStart(15)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "javascript:gs.minutesAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "javascript:gs.minutesAgoStart(45)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "javascript:gs.monthsAgo(12)"
}],
"AFTER": [{
"text": "${gs.getMessage('Today')}",
"id": "javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "javascript:gs.daysAgoEnd(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "javascript:gs.daysAgoEnd(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "javascript:gs.endOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "javascript:gs.endOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "javascript:gs.endOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "javascript:gs.endOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "javascript:gs.endOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "javascript:gs.monthsAgoStart(3)"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "javascript:gs.monthsAgoStart(6)"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "javascript:gs.monthsAgoStart(9)"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "javascript:gs.monthsAgoStart(12)"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "javascript:gs.endOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "javascript:gs.quartersAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 quarters')}",
"id": "javascript:gs.quartersAgoEnd(2)"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "javascript:gs.quartersAgoEnd(-1)"
}, {
"text": "${gs.getMessage('Next 2 quarters')}",
"id": "javascript:gs.quartersAgoEnd(-2)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "javascript:gs.endOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "javascript:gs.endOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "javascript:gs.endOfLastYear()"
}, {
"text": "${gs.getMessage('Last 2 years')}",
"id": "javascript:gs.beginningOfLastYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "javascript:gs.daysAgoStart(7)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "javascript:gs.daysAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "javascript:gs.daysAgoStart(60)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "javascript:gs.daysAgoStart(90)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "javascript:gs.daysAgoStart(120)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "javascript:gs.hoursAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "javascript:gs.hoursAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "javascript:gs.hoursAgo(2)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "javascript:gs.minutesAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "javascript:gs.minutesAgoStart(15)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "javascript:gs.minutesAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "javascript:gs.minutesAgoStart(45)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "javascript:gs.monthsAgo(12)"
}],
"AT_OR_AFTER": [{
"text": "${gs.getMessage('Today')}",
"id": "javascript:gs.daysAgoStart(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "javascript:gs.daysAgoStart(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "javascript:gs.daysAgoStart(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "javascript:gs.beginningOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "javascript:gs.beginningOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "javascript:gs.beginningOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "javascript:gs.beginningOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "javascript:gs.beginningOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "javascript:gs.beginningOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "javascript:gs.monthsAgoStart(3)"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "javascript:gs.monthsAgoStart(6)"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "javascript:gs.monthsAgoStart(9)"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "javascript:gs.monthsAgoStart(12)"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "javascript:gs.beginningOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "javascript:gs.quartersAgoStart(1)"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "javascript:gs.quartersAgoStart(-1)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "javascript:gs.beginningOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "javascript:gs.beginningOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "javascript:gs.beginningOfLastYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "javascript:gs.daysAgoStart(7)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "javascript:gs.daysAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "javascript:gs.daysAgoStart(60)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "javascript:gs.daysAgoStart(90)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "javascript:gs.daysAgoStart(120)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "javascript:gs.hoursAgoStart(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "javascript:gs.hoursAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "javascript:gs.hoursAgo(2)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "javascript:gs.minutesAgoStart(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "javascript:gs.minutesAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "javascript:gs.minutesAgoStart(15)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "javascript:gs.minutesAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "javascript:gs.minutesAgoStart(45)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "javascript:gs.monthsAgo(12)"
}],
"BETWEEN_FROM": [{
"text": "${gs.getMessage('Today')}",
"id": "javascript:gs.daysAgoStart(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "javascript:gs.daysAgoStart(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "javascript:gs.daysAgoStart(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "javascript:gs.beginningOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "javascript:gs.beginningOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "javascript:gs.beginningOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "javascript:gs.beginningOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "javascript:gs.beginningOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "javascript:gs.beginningOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "javascript:gs.monthsAgoStart(3)"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "javascript:gs.monthsAgoStart(6)"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "javascript:gs.monthsAgoStart(9)"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "javascript:gs.monthsAgoStart(12)"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "javascript:gs.beginningOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "javascript:gs.quartersAgoStart(1)"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "javascript:gs.quartersAgoStart(-1)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "javascript:gs.beginningOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "javascript:gs.beginningOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "javascript:gs.beginningOfLastYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "javascript:gs.daysAgoStart(7)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "javascript:gs.daysAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "javascript:gs.daysAgoStart(60)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "javascript:gs.daysAgoStart(90)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "javascript:gs.daysAgoStart(120)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "javascript:gs.hoursAgoStart(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "javascript:gs.hoursAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "javascript:gs.hoursAgo(2)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "javascript:gs.minutesAgoStart(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "javascript:gs.minutesAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "javascript:gs.minutesAgoStart(15)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "javascript:gs.minutesAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "javascript:gs.minutesAgoStart(45)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "javascript:gs.monthsAgo(12)"
}],
"BETWEEN_TO": [{
"text": "${gs.getMessage('Today')}",
"id": "javascript:gs.daysAgoEnd(0)"
}, {
"text": "${gs.getMessage('Yesterday')}",
"id": "javascript:gs.daysAgoEnd(1)"
}, {
"text": "${gs.getMessage('Tomorrow')}",
"id": "javascript:gs.daysAgoEnd(-1)"
}, {
"text": "${gs.getMessage('This week')}",
"id": "javascript:gs.endOfThisWeek()"
}, {
"text": "${gs.getMessage('Last week')}",
"id": "javascript:gs.endOfLastWeek()"
}, {
"text": "${gs.getMessage('Next week')}",
"id": "javascript:gs.endOfNextWeek()"
}, {
"text": "${gs.getMessage('This month')}",
"id": "javascript:gs.endOfThisMonth()"
}, {
"text": "${gs.getMessage('Last month')}",
"id": "javascript:gs.endOfLastMonth()"
}, {
"text": "${gs.getMessage('Next month')}",
"id": "javascript:gs.endOfNextMonth()"
}, {
"text": "${gs.getMessage('Last 3 months')}",
"id": "javascript:gs.monthsAgoStart(3)"
}, {
"text": "${gs.getMessage('Last 6 months')}",
"id": "javascript:gs.monthsAgoStart(6)"
}, {
"text": "${gs.getMessage('Last 9 months')}",
"id": "javascript:gs.monthsAgoStart(9)"
}, {
"text": "${gs.getMessage('Last 12 months')}",
"id": "javascript:gs.monthsAgoStart(12)"
}, {
"text": "${gs.getMessage('This quarter')}",
"id": "javascript:gs.endOfThisQuarter()"
}, {
"text": "${gs.getMessage('Last quarter')}",
"id": "javascript:gs.quartersAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 quarters')}",
"id": "javascript:gs.quartersAgoEnd(2)"
}, {
"text": "${gs.getMessage('Next quarter')}",
"id": "javascript:gs.quartersAgoEnd(-1)"
}, {
"text": "${gs.getMessage('Next 2 quarters')}",
"id": "javascript:gs.quartersAgoEnd(-2)"
}, {
"text": "${gs.getMessage('This year')}",
"id": "javascript:gs.endOfThisYear()"
}, {
"text": "${gs.getMessage('Next year')}",
"id": "javascript:gs.endOfNextYear()"
}, {
"text": "${gs.getMessage('Last year')}",
"id": "javascript:gs.endOfLastYear()"
}, {
"text": "${gs.getMessage('Last 2 years')}",
"id": "javascript:gs.beginningOfLastYear()"
}, {
"text": "${gs.getMessage('Last 7 days')}",
"id": "javascript:gs.daysAgoStart(7)"
}, {
"text": "${gs.getMessage('Last 30 days')}",
"id": "javascript:gs.daysAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 60 days')}",
"id": "javascript:gs.daysAgoStart(60)"
}, {
"text": "${gs.getMessage('Last 90 days')}",
"id": "javascript:gs.daysAgoStart(90)"
}, {
"text": "${gs.getMessage('Last 120 days')}",
"id": "javascript:gs.daysAgoStart(120)"
}, {
"text": "${gs.getMessage('Current hour')}",
"id": "javascript:gs.hoursAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last hour')}",
"id": "javascript:gs.hoursAgoEnd(1)"
}, {
"text": "${gs.getMessage('Last 2 hours')}",
"id": "javascript:gs.hoursAgo(2)"
}, {
"text": "${gs.getMessage('Current minute')}",
"id": "javascript:gs.minutesAgoEnd(0)"
}, {
"text": "${gs.getMessage('Last minute')}",
"id": "javascript:gs.minutesAgoStart(1)"
}, {
"text": "${gs.getMessage('Last 15 minutes')}",
"id": "javascript:gs.minutesAgoStart(15)"
}, {
"text": "${gs.getMessage('Last 30 minutes')}",
"id": "javascript:gs.minutesAgoStart(30)"
}, {
"text": "${gs.getMessage('Last 45 minutes')}",
"id": "javascript:gs.minutesAgoStart(45)"
}, {
"text": "${gs.getMessage('One year ago')}",
"id": "javascript:gs.monthsAgo(12)"
}]
};
var uuid = "${jvar_uid}";
var fields = JSON.parse($j("#" + uuid + " #interactive_date_filter_feilds").val());
var fieldsSelect = $j("#" + uuid + " .fields-select");
var canvasId = fieldsSelect.closest("[data-uuid]")? fieldsSelect.closest("[data-uuid]").attr("data-uuid") : "";
var fromSelectBox = $j("#" + uuid + " .fromSelect");
var toSelectBox = $j("#" + uuid + " .toSelect");
var operatorSelectBox = $j("#" + uuid + " #filerTableSelect");
var dashboardMessageHandler = new DashboardMessageHandler("select_custom_interactive-" + canvasId);
var isInCanvas = typeof window.SNC !== "undefined" ? ( typeof window.SNC.canvas !== "undefined" ? ( typeof window.SNC.canvas.isGridCanvasActive !== "undefined" ? ( typeof window.SNC.canvas.interactiveFilters !== "undefined") : false ): false ) : false ;
if(isInCanvas) {
SNC.canvas.eventbus.subscribe(canvasId , function(data) {
if(data.action === "destroy")
dashboardMessageHandler.removeFilter();
})
}
operatorSelectBox.select2();
fromSelectBox.select2({data: optionValues["ON_NOT_ON"]});
toSelectBox.select2({data: optionValues["BETWEEN_TO"]});
if(fields.length > 1) {
fieldsSelect.select2({data: fields});
fieldsSelect.select2("val", "all");
} else {
fieldsSelect.hide();
fieldsSelect = $j("#" + uuid + " .fields-select-label");
fieldsSelect.show();
fieldsSelect.html(fields[0].text);
}
function handleChangeSelection() {
if(fieldsSelect.val() === 'all') {
$j("#" + uuid + " .filter-block").hide();
dashboardMessageHandler.removeFilter();
} else {
$j("#" + uuid + " .filter-block").show();
// To publish filter
var value = operatorSelectBox.val();
var fieldSelected = fieldsSelect.val();
if(fieldSelected === "") {
fieldSelected = fields[0].id;
}
if(value === "ISEMPTY" || value === "ISNOTEMPTY" || value === "ANYTHING") {
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + value);
} else if(fromSelectBox.val() !== "") {
if(value === "BETWEEN") {
if(toSelectBox.val() !== "")
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + value +fromSelectBox.val() + "@" + toSelectBox.val());
} else if(value === "ON" || value === "NOTON") {
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + value + fromSelectBox.val());
} else if(value === "lt") {
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + $j("#" + uuid + " #filerTableSelect > option[value='" + value + "']").attr("val") + fromSelectBox.val());
} else if(value === "lteq") {
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + $j("#" + uuid + " #filerTableSelect > option[value='" + value + "']").attr("val") + fromSelectBox.val());
} else if(value === "gt") {
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + $j("#" + uuid + " #filerTableSelect > option[value='" + value + "']").attr("val") + fromSelectBox.val());
} else if(value === "gteq") {
dashboardMessageHandler.publishFilter("${jvar_table}",fieldSelected + $j("#" + uuid + " #filerTableSelect > option[value='" + value + "']").attr("val") + fromSelectBox.val());
}
}
}
}
fieldsSelect.change(handleChangeSelection);
fromSelectBox.change(handleChangeSelection);
toSelectBox.change(handleChangeSelection);
$j("#" + uuid + "-toSelectDate")[0].onchange = function() {
var optionDate = {"text": this.value, "id": "javascript:gs.dateGenerate('" + this.value + "','23:59:59')"};
optionValues["BETWEEN_TO"].push(optionDate);
toSelectBox.select2("val", optionValues["BETWEEN_TO"]);
toSelectBox.select2("val", optionDate.id);
handleChangeSelection();
};
// Chane handler for date calender widget
$j("#" + uuid + "-fromSelectDate")[0].onchange = function() {
var optionDate;
var value = operatorSelectBox.val();
var data;
if(value === "BETWEEN") {
optionDate = {"text": this.value, "id": "javascript:gs.dateGenerate('" + this.value + "','00:00:00')"};
data = optionValues["BETWEEN_FROM"];
} else if(value === "ON" || value === "NOTON") {
optionDate = {"text": this.value, "id": this.value + "@javascript:gs.dateGenerate('" + this.value + "','start')@javascript:gs.dateGenerate('" + this.value + "','end"};
data = optionValues["ON_NOT_ON"];
} else if(value === "lt") {
optionDate = {"text": this.value, "id": "javascript:gs.dateGenerate('" + this.value + "','00:00:00')"};
data = optionValues["BEFORE"];
} else if(value === "lteq") {
optionDate = {"text": this.value, "id": "javascript:gs.dateGenerate('" + this.value + "','23:59:59')"};
data = optionValues["AT_OR_BEFORE"];
} else if(value === "gt") {
optionDate = {"text": this.value, "id": "javascript:gs.dateGenerate('" + this.value + "','23:59:59')"};
data = optionValues["AFTER"];
} else if(value === "gteq") {
optionDate = {"text": this.value, "id": "javascript:gs.dateGenerate('" + this.value + "','00:00:00')"};
data = optionValues["AT_OR_AFTER"];
}
if(optionDate){
data.push(optionDate);
fromSelectBox.select2("val", data);
fromSelectBox.select2("val", optionDate.id);
}
handleChangeSelection();
};
// Chane handler for operators
operatorSelectBox.change(function() {
var value = operatorSelectBox.val();
if(value === "BETWEEN") {
fromSelectBox.select2({data: optionValues["BETWEEN_FROM"]});
toSelectBox.select2({data: optionValues["BETWEEN_TO"]});
toSelectBox.val("");
$j("#" + uuid + " [between-block]").show();
$j("#" + uuid + " [other-block]").show();
} else if(value === "ISEMPTY" || value === "ISNOTEMPTY" || value === "ANYTHING") {
$j("#" + uuid + " [other-block]").hide();
$j("#" + uuid + " [between-block]").hide();
} else {
$j("#" + uuid + " [between-block]").hide();
$j("#" + uuid + " [other-block]").show();
if(value === "ON" || value === "NOTON") {
fromSelectBox.select2({data: []});
setTimeout(
function() {
fromSelectBox.select2({data: optionValues["ON_NOT_ON"]});
}, 100);
} else if(value === "lt") {
fromSelectBox.select2({data: optionValues["BEFORE"]});
} else if(value === "lteq") {
fromSelectBox.select2({data: optionValues["AT_OR_BEFORE"]});
} else if(value === "gt") {
fromSelectBox.select2({data: optionValues["AFTER"]});
} else if(value === "gteq") {
fromSelectBox.select2({data: optionValues["AT_OR_AFTER"]});
}
}
fromSelectBox.val("");
dashboardMessageHandler.removeFilter();
handleChangeSelection();
});
setTimeout(handleChangeSelection,1000);
})();
</script>
</j:jelly>
Step 2.
Go to sys_widgets.LIST
Click on create new:
Name: Custom Interactive Filters
function sections() {
return {
'Incident Date Filter' : {
'table' : 'incident'
},
'Incident Closed Date Filter' : {
'table' : 'incident',
'field': 'closed_at'
},
'Problem Opened Date Filter' : {
'table' : 'problem',
'field': 'opened_at'
}
};
}
function render() {
var table = renderer.getPreferences().get("table");
var field = renderer.getPreferences().get("field");
if(table) {
var jr = new GlideJellyRunner();
renderer.getRenderProperties().setDeferInlineScripts(false);
jr.setRenderProperties(renderer.getRenderProperties());
jr.setTwoPhase(true);
jr.setVariable('jvar_uid', randInt(100000, 999999) + '' + randInt(100000, 999999));
if(field)
jr.setVariable('jvar_field',field);
jr.setVariable('jvar_table',table);
return jr.runFromTemplate('interactive_date_filter.xml');
}
else {
// Default to NOOP
return 'Invalid widget type';
}
}
function getEditLink() {
if (!gs.hasRole('admin'))
return '';
return "sys_ui_page.do?sysparm_query=name=" + renderer.getPreferences().get("name");
}
function randInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
Output:

How to create a date range interactive filter for dashboards ServiceNow?
Working Code Asked question July 28, 2023
Sorry, you do not have permission to read comments.