- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2023 03:54 AM
i have written UI action , which calls script include( client callable), to show how many ticket current assignment group have.
but UI action button is not working. Please suggest.
Script include code
//Script include - client callable
var fetchAssignmedGroupCountUI = Class.create();
fetchAssignmedGroupCountUI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getGroupCount: function() {
var assigned_group_name = this.getParameter('assigned_group_incident');
var OpenCount;
var ticketDetailsnew = [];
var assignedGroup = new GlideAggregate("incident");
assignedGroup.addAggregate('COUNT');
assignedGroup.groupBy("state");
assignedGroup.groupBy("assignment_group");
assignedGroup.addQuery("assignment_group", assigned_group_name);
assignedGroup.query();
while (assignedGroup.next()) {
ticketDetails = {};
OpenCount = assignedGroup.getAggregate("COUNT");
ticketDetails.state = assignedGroup.getDisplayValue("state");
ticketDetails.group = assignedGroup.getDisplayValue("assignment_group");
ticketDetails.count = assignedGroup.getAggregate("COUNT", "state");
ticketDetailsnew.push(ticketDetails);
}
return ticketDetailsnew;
},
type: 'fetchAssignmedGroupCountUI'
});
and UI action:
function checkstatus() {
var groupID= current.assignment_group;
var groupTicketStatus = new GlideAjax('global.fetchAssignmedGroupCountUI');
groupTicketStatus.addParam('sysparm_name', 'getGroupCount');
groupTicketStatus.addParm('sysparam_assigned_group_incident', groupID);
groupTicketStatus.getXML(responseForTicket);
}
function responseForTicket(response) {
var answer = response.responseXML.documentElement.getAttribute("ticketDetailsnew");
for (var i = 0; i < answer.length; i++) {
alert("count of ticket assigned to {0} group in {1} status is : {2} ", answer[i].group, answer[i].state, answer[i].count);
//alert logic to show ticket count for current assignment group each state
}
}
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2023 04:46 AM
@Ujjwal1 - I noticed a few more issues, please try with this UI action and script include
UI action:
function checkstatus() {
var groupID= current.assignment_group;
var groupTicketStatus = new GlideAjax('global.fetchAssignmedGroupCountUI');
groupTicketStatus.addParam('sysparm_name', 'getGroupCount');
groupTicketStatus.addParm('sysparm_assigned_group_incident', groupID);
groupTicketStatus.getXML(responseForTicket);
}
function responseForTicket(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
for (var i = 0; i < answer.length; i++) {
alert("count of ticket assigned to {0} group in {1} status is : {2} ", answer[i].group, answer[i].state, answer[i].count);
//alert logic to show ticket count for current assignment group each state
}
}
Script include:
//Script include - client callable
var fetchAssignmedGroupCountUI = Class.create();
fetchAssignmedGroupCountUI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getGroupCount: function() {
var assigned_group_name = this.getParameter('sysparm_assigned_group_incident');
var OpenCount;
var ticketDetailsnew = [];
var assignedGroup = new GlideAggregate("incident");
assignedGroup.addAggregate('COUNT');
assignedGroup.groupBy("state");
assignedGroup.groupBy("assignment_group");
assignedGroup.addQuery("assignment_group", assigned_group_name);
assignedGroup.query();
while (assignedGroup.next()) {
ticketDetails = {};
OpenCount = assignedGroup.getAggregate("COUNT");
ticketDetails.state = assignedGroup.getDisplayValue("state");
ticketDetails.group = assignedGroup.getDisplayValue("assignment_group");
ticketDetails.count = assignedGroup.getAggregate("COUNT", "state");
ticketDetailsnew.push(ticketDetails);
}
return ticketDetailsnew;
},
type: 'fetchAssignmedGroupCountUI'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2023 04:09 AM - edited 05-14-2023 04:10 AM
Hi @Ujjwal1 ,
Since checkstatus is the onClick function, it will only accepts client side API's hence, current will not work here, please replace current with g_form.getValue('assignment_group')
function checkstatus() {
var groupID= g_form.getValue('assignment_group');
var groupTicketStatus = new GlideAjax('global.fetchAssignmedGroupCountUI');
groupTicketStatus.addParam('sysparm_name', 'getGroupCount');
groupTicketStatus.addParm('sysparam_assigned_group_incident', groupID);
groupTicketStatus.getXML(responseForTicket);
}
function responseForTicket(response) {
var answer = response.responseXML.documentElement.getAttribute("ticketDetailsnew");
for (var i = 0; i < answer.length; i++) {
alert("count of ticket assigned to {0} group in {1} status is : {2} ", answer[i].group, answer[i].state, answer[i].count);
//alert logic to show ticket count for current assignment group each state
}
}
If my answer has helped with your question, please mark it as correct and helpful
Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2023 04:29 AM
Thanks for quick response. But this did not resolve issue
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2023 04:46 AM
@Ujjwal1 - I noticed a few more issues, please try with this UI action and script include
UI action:
function checkstatus() {
var groupID= current.assignment_group;
var groupTicketStatus = new GlideAjax('global.fetchAssignmedGroupCountUI');
groupTicketStatus.addParam('sysparm_name', 'getGroupCount');
groupTicketStatus.addParm('sysparm_assigned_group_incident', groupID);
groupTicketStatus.getXML(responseForTicket);
}
function responseForTicket(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
for (var i = 0; i < answer.length; i++) {
alert("count of ticket assigned to {0} group in {1} status is : {2} ", answer[i].group, answer[i].state, answer[i].count);
//alert logic to show ticket count for current assignment group each state
}
}
Script include:
//Script include - client callable
var fetchAssignmedGroupCountUI = Class.create();
fetchAssignmedGroupCountUI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getGroupCount: function() {
var assigned_group_name = this.getParameter('sysparm_assigned_group_incident');
var OpenCount;
var ticketDetailsnew = [];
var assignedGroup = new GlideAggregate("incident");
assignedGroup.addAggregate('COUNT');
assignedGroup.groupBy("state");
assignedGroup.groupBy("assignment_group");
assignedGroup.addQuery("assignment_group", assigned_group_name);
assignedGroup.query();
while (assignedGroup.next()) {
ticketDetails = {};
OpenCount = assignedGroup.getAggregate("COUNT");
ticketDetails.state = assignedGroup.getDisplayValue("state");
ticketDetails.group = assignedGroup.getDisplayValue("assignment_group");
ticketDetails.count = assignedGroup.getAggregate("COUNT", "state");
ticketDetailsnew.push(ticketDetails);
}
return ticketDetailsnew;
},
type: 'fetchAssignmedGroupCountUI'
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2023 06:28 AM
@Ujjwal1 Here are my two cents, apart from the changes suggested by Karan.
Client script function should be updated as follows.
function checkstatus() {
var groupID = g_form.getValue('assignment_group');
var groupTicketStatus = new GlideAjax('fetchAssignmedGroupCountUI');
groupTicketStatus.addParam('sysparm_name', 'getGroupCount');
groupTicketStatus.addParam('sysparam_assigned_group_incident', groupID);
groupTicketStatus.getXML(responseForTicket);
}
function responseForTicket(response) {
var answer = JSON.parse(response.responseXML.documentElement.getAttribute("answer"));
for (var i = 0; i < answer.length; i++) {
alert("Count of tickets " + answer[i].count + ' assigned to group ' + answer[i].group + ' in state ' + answer[i].state);
//alert logic to show ticket count for current assignment group each state
}
}
Server side script include should be updated as follows.
var fetchAssignmedGroupCountUI = Class.create();
fetchAssignmedGroupCountUI.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getGroupCount: function() {
var assigned_group_name = this.getParameter('sysparam_assigned_group_incident');
var glideGroup = new GlideRecord('sys_user_group');
if (glideGroup.get(assigned_group_name)) {
var ticketDetailsnew = [];
var assignedGroup = new GlideAggregate("incident");
assignedGroup.addQuery("assignment_group", assigned_group_name);
assignedGroup.addAggregate('COUNT', 'state');
assignedGroup.query();
while (assignedGroup.next()) {
ticketDetails = {};
ticketDetails.state = assignedGroup.getDisplayValue("state");
ticketDetails.count = assignedGroup.getAggregate("COUNT", "state");
ticketDetails.group = glideGroup.getValue('name');
ticketDetailsnew.push(ticketDetails);
}
return JSON.stringify(ticketDetailsnew);
}
},
type: 'fetchAssignmedGroupCountUI'
});
I found many mistakes not only at syntactical level but the way you are trying to access group name from GlideAggregate. Updated the code from my side to get the desired result for you.
Hope this helps.