Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Display of the request number under RITM in the My requests widget

Navyaa
Tera Expert

Hi People,

I want to display the request number under the RITM, when I click on the 'My Requests' from the Header menu.

I have cloned the Request widget, but still I couldn't figure it out.

Please help.

 

5 REPLIES 5

harun_isakovic
Mega Guru

Do you mind posting the code of the my request widget?

Please find the code below.

(function() {
    
    var alsoRequest = false;
    
    var localInput = input; //to safeguard pollution of 'input' via BR or other scripts
    
    data.filterMsg = gs.getMessage("Search open requests");
    
    if (localInput && localInput.view === 'open')
        data.filterMsg = gs.getMessage("Search open requests");
    else if (localInput && localInput.view === 'close')
        data.filterMsg = gs.getMessage("Search closed requests");

    function getField(gr, name) {
            var f = {};
            var id = gr.getUniqueValue();
            gr = new GlideRecord(gr.getRecordClassName());
            gr.get(id);
            f.display_value = gr.getDisplayValue(name);
            f.value = gr.getValue(name);
            var ge = gr.getElement(name);
          if (ge) {
                var ed = ge.getED();
                if (ed)
                    f.type = ed.getInternalType();
                f.label = ge.getLabel();
            }
            return f;
    }

    function getMyRequestSysIds() {
        var ids = {};
        var rq_filter = new GlideRecord('request_filter');
        rq_filter.addActiveQuery();
        if (rq_filter.isValidField('applies_to'))
            rq_filter.addQuery('applies_to', 1).addOrCondition('applies_to', 10);
        rq_filter.query();
        while(rq_filter.next()) {
            var tableName = rq_filter.table_name;
            
            if (rq_filter.isValidField('table'))
                tableName = rq_filter.table;
            var filter= rq_filter.filter;
            //gs.addInfoMessage('tableName'+tableName);
            //gs.addInfoMessage('filter'+filter);
            var gr = new GlideRecord(tableName);
            gr.addQuery(filter);
            
//             var gr = new GlideRecord('sn_si_incident');
//             gr.addEncodedQuery('category=Risk Review^stateIN10,16,18,19,20,100^EQ');
            gr.query();
            //gs.addInfoMessage('++'+gr.getRowCount());
            //if (tableName == 'sc_request')
                    if (tableName == 'sc_request')
                alsoRequest = true;
            else if (tableName == 'sn_si_incident')
                alsoRequest = true;
            else if (tableName == 'dmn_demand')
                alsoRequest = true;
            while(gr.next()) {
                var portalSettings = {};
                portalSettings.page = rq_filter.portal_page.nil()? '' : rq_filter.portal_page.getDisplayValue() + '';
                portalSettings.primary_display = rq_filter.primary_display.nil()? '': rq_filter.primary_display + '';
                portalSettings.secondary_displays = rq_filter.secondary_display.nil()? '': rq_filter.secondary_display + '';
                ids[gr.sys_id + ''] = portalSettings;
            }
        }
    //    gs.addInfoMessage('ids'+ids);
        return ids;
        
    }
    
/**    function Getrequestnumber(number) {
  var gr = new GlideRecord('sc_request');
  gr.addQuery('number', number);
  gr.query();

  var res = [];
  while (gr.next()) {
    res.push(gr.getDisplayValue('number'));
  }

  return res;
} **/
    //gs.log('view'+localInput.view,'2pg');
    // retrieve the request's
    var myRequestMap = getMyRequestSysIds();
    var taskIDs = Object.keys(myRequestMap);
//gs.log('taskIDs'+taskIDs,'pgg');
    var gr = new GlideRecordSecure('task');
    if (localInput && localInput.view === 'open') 
    {
        gr.addActiveQuery();
        gr.addQuery('sys_class_name','sc_request');
        //gs.addInfoMessage("1");
        
    }
    else if (localInput && localInput.view === 'close')
        {
        gr.addQuery('state', 3);
            gr.addQuery('sys_class_name','sc_req_item');
            //gs.addInfoMessage("2");
        }
    
    else if (localInput && localInput.view === 'open_sec') 
        {
        gr.addActiveQuery();
    gr.addQuery('sys_class_name','sn_si_incident');
            //gs.addInfoMessage("3");
        }
    
    else if (localInput && localInput.view === 'close_sec') 
        {
        gr.addQuery('active', 0);
            var x=gs.getUserID();
            gr.addQuery('opened_by', x);
    gr.addQuery('sys_class_name','sn_si_incident');
            //gs.addInfoMessage("4");
        }
    else if (localInput && localInput.view === 'open_dmd') 
        {
            var xx=gs.getUserID();
            gr.addQuery('opened_by', xx);
            gr.addEncodedQuery('sys_class_name=dmn_demand^ref_dmn_demand.u_process_statusNOT INCompleted,Cancelled');
        //gr.addActiveQuery();
    //gr.addQuery('sys_class_name','dmn_demand');
            //gs.addInfoMessage("3");
        }
    
    else if (localInput && localInput.view === 'close_dmd') 
        {
            var xx=gs.getUserID();
            gr.addQuery('opened_by', xx);
    gr.addEncodedQuery('sys_class_name=dmn_demand^ref_dmn_demand.u_process_statusINCompleted,Cancelled');
        }
    else if (localInput && localInput.view === 'none') 
    {
            var x=gs.getUserID();
            gr.addQuery('opened_by', x);
        //gr.addQuery('active', 0);
            //gs.addInfoMessage("5");
            data.val='none';
        }
    else
        {
            var x=gs.getUserID();
            gr.addQuery('opened_by', x);
            //gs.addInfoMessage("6");
            //data.val='none';
        //gr.addQuery('active', 0);    
        }

    gr.orderByDesc('sys_updated_on');
    if (localInput && localInput.search_text) {
            var req = [];
            var task = new GlideRecordSecure('task');
            task.addQuery('123TEXTQUERY321', localInput.search_text);
            if (localInput && localInput.view === 'open') 
                task.addQuery('active', 1);
            else if (localInput && localInput.view === 'close')
                task.addQuery('active', 0);
                //task.addQuery('state', 3);
            else
                task.addQuery('active', 1);
            task.addQuery('sys_id', taskIDs);
            task.query();

            while(task.next())
                req.push(task.getUniqueValue());
        
            if (alsoRequest) {
                var ritmGR = new GlideRecord('sc_req_item');
                if (localInput && localInput.view === 'open') 
                    ritmGR.addQuery('request.active', 1);
                    
                else if (localInput && localInput.view === 'close')
                    ritmGR.addQuery('request.active', 0);
                //    ritmGR.addQuery('state', 3);
                else
                    ritmGR.addQuery('request.active', 1);
                ritmGR.addQuery('123TEXTQUERY321', localInput.search_text);
                ritmGR.addQuery('request.sys_id', taskIDs);
                ritmGR.query();
                while(ritmGR.next())
                    req.push(ritmGR.getValue('request'));
            }
            gr.addQuery('sys_id', req);
        }
        else 
            gr.addQuery('sys_id', taskIDs);
    gr.query();
gs.log('row count'+gr.getRowCount(),'1pg');
    data.request = {};

    data.request.req_list = [];
    var recordIdx = 0;    
    var limit = options.items_per_page? options.items_per_page : 15;
    if (localInput && localInput.action == 'fetch_more')
        data.lastLimit = localInput.lastLimit + limit;
    else
        data.lastLimit = limit;

    data.hasMore = false;
    while (recordIdx != data.lastLimit && gr.next()) {
        var portalSettings = myRequestMap[gr.getUniqueValue()];
        if (typeof portalSettings == 'undefined')
            portalSettings = {};

        var record = {};
        record.sys_id = gr.getValue('sys_id');
gs.log(gr.getRecordClassName(),'3pg');
        if (gr.getRecordClassName() == 'sc_request') {
            gs.log('inside request','pg');
                var ritm = new GlideRecord("sc_req_item");
                ritm.addQuery("number", gr.getUniqueValue());
                
                ritm.query();
                if (ritm.getRowCount() == 0)
                    continue;
                if (ritm.getRowCount() > 1){
                    gs.log('inside request12','pg');
                    //record.display_field = gs.getMessage("{0} requested items", ritm.getRowCount());
                    ritm.next();
                    record.display_field = ritm.cat_item.getDisplayValue() || ritm.getDisplayValue("short_description");
                        
                
                    gs.log('inside request3'+record.display_field,'pg');
                }
                else {
                    ritm.next();
                    record.display_field = ritm.cat_item.getDisplayValue() || ritm.getDisplayValue("short_description");
                        
                    
                }
                record.url = { id: portalSettings.page? portalSettings.page: 'sc_request', table: 'sc_req_item', sys_id: ritm.getValue('sys_id')};
        } 
    
//         //pg code starts
        
//         else if (gr.getRecordClassName() == 'sn_si_incident') {
//             gs.log('inside request','1pg');
//                 var sir = new GlideRecord("sn_si_incident");
//                 //sir.addQuery("caller", gs.getUserID());
//             sir.addQuery("sys_id", gr.getUniqueValue());
//                 sir.query();
//             //gs.addInfoMessage('count'+sir.getRowCount());
//                 if (sir.getRowCount() == 0)
//                     continue;
//                 if (sir.getRowCount() > 1){
//                     gs.log('inside request12','1pg');
//                     //record.display_field = gs.getMessage("{0} requested items", ritm.getRowCount());
//                     sir.next();
//                     record.display_field = sir.cat_item.getDisplayValue() || sir.getDisplayValue("short_description");
//                     gs.log('inside request3'+record.display_field,'1pg');
//                 }
//                 else {
//                     sir.next();
//                     record.display_field = sir.cat_item.getDisplayValue() || sir.getDisplayValue("short_description");
//                 }
//                 //record.url = { id: portalSettings.page? portalSettings.page: 'sc_request', table: 'sc_req_item', sys_id: ritm.getValue('sys_id')};
//         }
        
//     //pg ends
        
        
        else {
            
            
                record.display_field = portalSettings.primary_display ? getField(gr, portalSettings.primary_display).display_value : getField(gr, 'number').display_value;
            
                record.url = { id: portalSettings.page? portalSettings.page :'ticket', table: gr.getRecordClassName(), sys_id: record.sys_id};
        }
        if (portalSettings.secondary_displays) {
            record.secondary_displays = [];
        
            portalSettings.secondary_displays.split(",").forEach(function (sDisplay){
                record.secondary_displays.push(getField(gr, sDisplay));
            });
        }
        else 
            
            record.secondary_displays = getField(gr, 'short_description');
        
        
        record.updated_on = gr.getValue('sys_updated_on');
        record.state = gr.getDisplayValue('state');
        
        if((recordIdx !== 0) && (data.lastLimit - limit === recordIdx))
            record.highlight = true;

        data.request.req_list.push(record);
        recordIdx++;
    }

    if (gr.next())
            data.hasMore = true;
})();

snowuser yt
Tera Contributor

Hi Navyaa,

we too had the same requirement , after spending some time with script in the widget, I tried the below and got it working. 

These are the steps I followed:

Step 1: set entry for sc_request entry on "myrequest filter" page to false

find_real_file.png

Step 2: edit the filter for the below filter record and update the criteria  as per the second snap shot

find_real_file.png

find_real_file.png

-refresh Ticket Page.

find_real_file.png

this works but i am wondering how did you come up with the idea and also what else is being impacted by the change. do you know?

thanks for sharing!

-Maria