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