How to call a script include in dynamic content in servicenow
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-26-2022 03:08 AM
Hey, i have created one script include which i tried in background script that returns some value to me,
I have one dashboard then with dynamic content in it (ill attach screenshot of dashboard)
so in script of dynamic content i have to call below script include, so that value will be visible in place of 45345
But, im not getting how to call it in script of dynamic content at line 128, please have look at below things and help me out
script include---
var CompletedAssessments = Class.create();
CompletedAssessments.prototype = {
initialize: function() {},
averageCalculation: function(current) {
var arr_cat = [];
var count = 0;
var gr = new GlideRecord('x_ubte_ethics_an_0_ethics_compliance_risk_assessment_campaign');
gr.addEncodedQuery('state!=1');
gr.orderByDesc("sys_created_on");
gr.query();
while (gr.next()) {
var gi = new GlideRecord('asmt_assessment_instance');
gi.addEncodedQuery('task_id.sys_class_name=x_ubte_ethics_an_0_ethics_compliance_risk_assessment_campaign^state=complete');
gi.addQuery('task_id', gr.sys_id);
gi.orderByDesc("sys_updated_on");
gi.query();
while (gi.next()) {
//gs.print('Task -'+gr.number +' Assessment - '+gi.number);
var rec1 = new GlideRecord('asmt_assessment_instance_question');
rec1.addEncodedQuery('instance.number=AINST0020903');
rec1.orderBy('category');
rec1.query();
while (rec1.next()) {
if (arr_cat.indexOf('' + rec1.category) === -1) {
arr_cat.push('' + rec1.category);
count = count + 1;
}
}
//gs.print('arr_cat ---- '+arr_cat);
//gs.print('count '+count);
var total_sum = 0;
for (var i = 0; i < count; i++) {
var tempmult = 1;
var rec2 = new GlideRecord('asmt_assessment_instance_question');
rec2.addEncodedQuery('instance.number=AINST0020903');
rec2.addEncodedQuery('category=' + arr_cat[i]);
rec2.query();
while (rec2.next()) {
tempmult = parseInt(rec2.value) * parseInt(tempmult);
}
//gs.print('rec2.category - '+rec2.category.name+' and its tempmult - '+tempmult);
return total_sum;
}
}
}
gs.print("The total sum" + total_sum);
},
type: 'CompletedAssessments'
};
dynamic content---
<?xml version="1.0" encoding="UTF-8"?>
<j:jelly xmlns:j="jelly:core" xmlns:g="glide" xmlns:g2="null" xmlns:j2="null" trim="false">
<style>table {
width: 100%;
}
table tr td {
vertical-align: top;
padding-left: 20px;
}
table label {
font-weight: bold;
font-size: medium;
}
.table-col-1 {
width: 16%;
}
.select-box {
width:80%;
}
</style>
<g:evaluate var="jvar_res" jelly="true" object="false">
jvar_res = 45345;
</g:evaluate>
<script>
var my_dashboardMessageHandler = new DashboardMessageHandler("Location_category");
var finalFilter = [];
<!-- Function to build filter conditions based on selected values -->
function publishMultipleFilters(value) {
var finalFilter = '';
var authFilter = '';
var citationFilter = '';
var valArr = value.split(',');
<!-- Final Filter condition if Location is not - empty -->
if (valArr[0] != '') {
authFilter = "u_mega_region=" + valArr[0];
citationFilter = "document.ref_sn_compliance_authority_document.u_mega_region=" + valArr[0];
}
if (valArr[1] != '') {
if (citationFilter == '')
citationFilter = "u_level_1_category=" + valArr[1];
else
citationFilter = citationFilter + "^u_level_1_category=" + valArr[1];
}
if (valArr[2] != '') {
if (citationFilter == '')
citationFilter = "u_category=" + valArr[2];
else
citationFilter = citationFilter + "^u_category=" + valArr[2];
}
if (valArr[3] != '') {
if (citationFilter == '')
citationFilter = "u_sub_category=" + valArr[3];
else
citationFilter = citationFilter + "^u_sub_category=" + valArr[3];
}
if (valArr[4] != '') {
authFilter = "u_country=" + valArr[4];
if (citationFilter == '')
citationFilter = "document.ref_sn_compliance_authority_document.u_country=" + valArr[4];
else
citationFilter = citationFilter + "^document.ref_sn_compliance_authority_document.u_country=" + valArr[4];
}
if (valArr[5] != '') {
authFilter = "u_jurisdiction_level.state=" + valArr[5];
if (citationFilter == '')
citationFilter = "document.ref_sn_compliance_authority_document.u_jurisdiction_level.state=" + valArr[5];
else
citationFilter = citationFilter + "^document.ref_sn_compliance_authority_document.u_jurisdiction_level.state=" + valArr[5];
}
if(authFilter != ''){
finalFilter = [{
"table": "sn_compliance_authority_document",
"filter": authFilter
}, {
"table": "sn_compliance_citation",
"filter": citationFilter
}];
}
else{
finalFilter = [{
"table": "sn_compliance_citation",
"filter": citationFilter
}];
}
<!--call setDefaultValue first -->
SNC.canvas.interactiveFilters.setDefaultValue({
id: my_dashboardMessageHandler.Location_category,
filters: finalFilter,
}, false);
<!--then call Publishmessage to publish filters -->
my_dashboardMessageHandler.publishMessage(finalFilter);
}
<!-- Function to clear all filters -->
function clearFilters() {
SNC.canvas.interactiveFilters.removeDefaultValue(my_dashboardMessageHandler.Location_category, false);
my_dashboardMessageHandler.removeFilter();
}
<!-- Function to set and publish filters based on Location, Category and Sub-Category selections -->
function setFilters(){
var arrVal = [];
var locationVal = $j("#locationOptions").val();
var appliesToVal = $j("#appliesToOptions").val();
var categoryVal = $j("#categoryOptions").val();
var subCategoryVal = $j("#subcategoryOptions").val();
var countryVal = $j("#countryOptions").val();
var stateVal = $j("#stateOptions").val();
arrVal.push(locationVal);
arrVal.push(appliesToVal);
arrVal.push(categoryVal);
arrVal.push(subCategoryVal);
arrVal.push(countryVal);
arrVal.push(stateVal);
if(locationVal != "" || appliesToVal != "" || categoryVal != "" || subCategoryVal != "" || countryVal != "" || stateVal != ""){
publishMultipleFilters(arrVal.toString());
}
else{
clearFilters();
}
line 128-----$j("#itemsSelected").text(locationVal + " - " + countryVal);
}
<!-- Function to dynamically update category options onChange of Requirement Applies to -->
<!-- Function to dynamically update Countries options onChange of Mega Region -->
function setCountries(){
$j('#countryOptions').find('option').remove();
var megaRegion = $j("#locationOptions").val();
var countryRec = new GlideAjax('global.EthicsComplicanceRAGlobalAjax');
countryRec.addParam('sysparm_name','getLocationRef');
countryRec.addParam('sysparm_location', megaRegion);
countryRec.getXML(function(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var x = document.getElementById("countryOptions");
var optionAll = document.createElement("option");
optionAll.innerHTML = "-- All --";
optionAll.value = "";
x.appendChild(optionAll);
var countryArr = JSON.parse(answer);
//for(var i = 0; i < countryArr.length; i++){
for(var i = 0 in countryArr){
var option = document.createElement("option");
option.innerHTML = countryArr[i];
option.value = i;
x.appendChild(option);
}
});
}
</script>
<g:evaluate var="jvar_location" jelly="true" object="true">var loc = new GlideRecord('x_ubte_ethics_an_0_ethics_compliance_risk_assessment_campaign');
loc.addEncodedQuery('state!=1^ORstate=NULL^work_end!=NULL');
loc.orderBy('sys_created_on');
loc.query();
loc;</g:evaluate>
<g:evaluate var="jvar_country" jelly="true" object="true">
var loc1 = new GlideRecord('cmn_location');
loc1.addEncodedQuery('u_type_of_location=mega region');
loc1.orderBy('name');
loc1.query();
loc1;</g:evaluate>
<table>
<tr>
<td class="table-col-1">
<label>${gs.getMessage("Campaign")}</label>
</td>
<td class="table-col-1">
<label>${gs.getMessage("Mega Region")}</label>
</td>
</tr>
<tr>
<td class="table-col-1">
<select class="custom-select select-box" name="locationOptions" id="locationOptions" onchange="setCountries();setFilters();" >
<option value="">${gs.getMessage('-- All --')}</option>
<j:while test="${jvar_location.next()}">
<option value="${jvar_location.getValue('sys_id')}">${jvar_location.getValue('short_description')}</option>
</j:while>
</select>
</td>
<td class="table-col-1">
<select class="custom-select select-box" name="countryOptions" id="countryOptions" onchange="setFilters();" >
<option value="">${gs.getMessage('-- All --')}</option>
<j:while test="${jvar_country.next()}">
<option value="${jvar_country.getValue('sys_id')}">${jvar_country.getValue('name')}</option>
</j:while>
</select>
</td>
<tr>
<!--<td class="text-center"> -->
<td class="text-right">
<div id="itemsSelected">${jvar_res}</div>
</td>
</tr>
</tr>
</table>
</j:jelly>