Hide the Related List if the manager don't have users.

LaraReddy
Tera Guru

Hi All,
Can anyone please us on the below script:

We wrote one script include and client script to hide the Related list, If the user/manager don't have any direct reporters. But some reasons it's not wokring for us, can anyone please check and let us know where we went wrong.

Script include:

var getManagerDirectReports = Class.create();
getManagerDirectReports.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getActiveUsers: function(managerSysID) {
     var usr = new GlideRecord('sys_user');
        usr.addQuery('sys_id', current.manager);
       usr.query();
var userCount = 0;
        while (usr.next()) {
           userCount++;
            }
return userCount++;
},
type: 'getManagerDirectReports'
});


Client script:

function onLoad() {
 var usrs = new GlideAjax('getManagerDirectReports');
 usrs.addParam('sysparm_name','getActiveUsers');
usrs.getXML(callbackfunction);

 function callbackfunction(response)
 {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    alert(answer);  // Example: If one user have two reporting users but in alert we're getting zero

    if(answer == 0)
    {
        g_form.hideRelatedList('direct_reports');
    }
    else{
        g_form.showRelatedList('direct_reports');

    }
 }
}


Advance thanks.


1 ACCEPTED SOLUTION

Sorry my bad,

Please update script include like this:

var getManagerDirectReports = Class.create();
getManagerDirectReports.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getActiveUsers: function(managerSysID) {
var manId = this.getParameter('manager_id');
     var usr = new GlideRecord('sys_user');
        usr.addQuery('manager', manId);  // updated query
       usr.query();
return usr.getRowCount();
},
type: 'getManagerDirectReports'
});
Please appreciate the efforts of community contributors by marking appropriate response as correct answer and helpful, this may help other community users to follow correct solution in future.
Thanks
Anil Lande

View solution in original post

11 REPLIES 11

Shamma Negi
Kilo Sage
Kilo Sage

Can you correct this in script include:

 

ar getManagerDirectReports = Class.create();
getManagerDirectReports.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

    getActiveUsers: function(managerSysID) {
     var usr = new GlideRecord('sys_user');
        usr.addQuery('sys_id', current.manager);
       usr.query();
var userCount = 0;
        while (usr.next()) {
           userCount++;
            }
return userCount; //return only the variable do not add ++
},
type: 'getManagerDirectReports'
});
 
Also please confirm if you are getting anything in answer in client script and also check if script include is client callable checkbox checked.
 
 
Regards,
Shamma
Regards,Shamma Negi

HI Shamma,
Thanks for the response.
We tried your suggestion but in alert we're getting null.

Advance thanks.

try this pls:

 

r getManagerDirectReports = Class.create();
getManagerDirectReports.prototype = Object.extendsObject(AbstractAjaxProcessor, {

 

    getActiveUsers: function(managerSysID) {
     var usr = new GlideRecord('sys_user');
        usr.addQuery('sys_id', current.manager);
       usr.query();
var userCount = 0;
        while (usr.next()) {
        return userCount; //return only the variable do not add ++
            }

},
 
check the below url. you need to pass the sys_id of he related list
 
 
 
type: 'getManagerDirectReports'
});
Regards,Shamma Negi

Right click on list. Configure -> List Layout check the REL sys_id from there.

 

Hope it helps.

 

Regards,

Shamma

Regards,Shamma Negi