GlideAjax is not working in UI action

Ujjwal1
Tera Contributor

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 
    }
}

 

 

1 ACCEPTED SOLUTION

@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'
});

View solution in original post

4 REPLIES 4

Karan Chhabra6
Mega Sage
Mega Sage

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!

 

 

Thanks  for quick response. But this did not resolve issue

@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'
});

Sandeep Rajput
Tera Patron
Tera Patron

@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.