On Portal – "My Requests" Search Bar Not Returning Incidents, Only Request Items

Paulo Machado
Kilo Sage

Hello everyone,

I'm having an issue with the "My Requests" widget on the portal. When I try to search using the search bar:

PauloMachado_0-1751800825666.png



I tryed:

// Incidents disappear from the list, and only request items remain.
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);
        else
            task.addQuery('active', 1);
        var userID = gs.getUserID();
var orQuery = task.addQuery('sys_class_name', 'sc_request');
orQuery.addCondition('requested_for', userID);

orQuery = task.addQuery('sys_class_name', 'incident');
orQuery.addCondition('caller_id', userID);
        task.query();

 

//My items appear correctly, but the search returns all incidents across the instance, not just mine.
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);
        else
            task.addQuery('active', 1);
        var userID = gs.getUserID();
        var taskFilter = task.addQuery('sys_class_name', 'IN', ['sc_request', 'incident']);
        taskFilter.addOrCondition('caller', userID);
        task.query();

 

//It returns all incidents again, and when searching by short description, it brings back the incident number instead.
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);
        else
            task.addQuery('active', 1);
        var userID = gs.getUserID();
        task.addEncodedQuery("(sys_class_name=sc_request^requested_for=" + userID + ")^OR(sys_class_name=incident^caller_id=" + userID + ")");
        //task.addQuery('sys_id', taskIDs);
        task.query();



Could anyone please help me figure this out?

HTML

<div class="panel panel-default b" ng-init="c.trackPage()">
 <div class="panel-heading" ng-show="::!data.is_associated_ticket_tab">
    <h2 class="panel-title">{{::data.messages.myRequestsTitle}}</h2>
  </div> 	
  
  <uib-tabset role="tablist" ng-hide="::c.data.hide_draft_tab">
    <uib-tab role="tab" active="c.data.isRequestsTabActive" select="c.changeSelectedTab('requests')" index="requests" class="uib-vis-tab" heading="${Submitted requests}">
        <div ng-include="'myRequests'"></div>
    </uib-tab>
    <uib-tab role="tab" active="c.data.isDraftsTabActive" select="c.changeSelectedTab('drafts')" index="drafts" class="uib-vis-tab" heading="${Drafts}">
        <div ng-include="'draftItemsTemplate'"></div>
    </uib-tab>
  </uib-tabset>

<div ng-include="'myRequests'" ng-show="::c.data.hide_draft_tab"></div>

<script type="text/ng-template" id="draftItemsTemplate">
  <div class="panels-container list-group">
   <div ng-show="::c.data.draftItems.length > 0" class="list-group-item row requests-header-container">
          <div class="col-md-4 col-xs-12 padding-left-large fit-content">
            <div class="input-group" style="width:100%">
              <input ng-model="c.data.draftSearchText" ng-change="c.updateFilteredDraftItems()" class="form-control" style="width:100%" placeholder="{{c.data.draftFilterMsg}}" aria-label="{{c.data.draftFilterMsg}}">
              <span class="input-group-btn">
                <button class="btn btn-default align-icon" type="button" data-original-title="{{c.data.draftFilterMsg }}" aria-label="{{c.data.draftFilterMsg }}" data-toggle="tooltip" data-placement="bottom">
                	<i class="fa fa-search"></i>
                </button>
              </span>
            </div><!-- /input-group -->
          </div>
    	</div>
      <div ng-if="c.data.draftItems.length > 0 && (!c.filteredDraftItems || c.filteredDraftItems.length == 0)" class="panel-body panels-container">
        ${Search didn't match any draft items} 
      </div> 
  
   <div ng-if="c.data.draftItems.length == 0" class="panel-body panels-container">
        ${You do not have any draft items} 
   </div>
      <div role="table" ng-if="(c.filteredDraftItems && c.filteredDraftItems.length > 0)" class="table" aria-label="{{::c.data.draftItemsMsg}}">
      <div role="rowgroup" class="column-headers">
        <div role="row" class="list-group-item table-responsive">
          <span role="columnheader" class="col-xs-4 padder-r-none padder-l-none">${Draft name}</span>
          <span role="columnheader" class="col-xs-4 padder-r-none padder-l-none">short_description</span>
          <span role="columnheader" class="col-xs-2 padder-md">${Item name}</span>
          <span role="columnheader" class="col-xs-1 padder-r-none padder-l-none">${updated_capital}</span>
          <span role="columnheader" class="col-xs-1 padder-r-none padder-l-none"></span>
        </div>
   	  </div>
      <ul role="rowgroup" class="padder-l-none padder-r-none">
        <li role="row" ng-repeat="item in c.filteredDraftItems" class="list-group-item draft-item-row table-responsive" style="margin:0px" >
          <div role="cell" class="draft-item-cell col-xs-4 padder-l-none padder-r-none main-column">
            <div class="primary-display text-wrap">
              <a href="?id={{'sc_cat_item'}}&{{'edit=draft'}}&sys_id={{::item.sys_id}}" aria-label="{{::item.cart_item_name}}"> {{::item.cart_item_name}} </a>
            </div>
          </div>
          <div role="cell" class="draft-item-cell col-xs-4 padder-md">
            <div class="text-wrap">
              <span> {{::item.name}}</span>
            </div>
          </div>
           <div role="cell" class="draft-item-cell col-xs-2 padder-l-none padder-r-none description-column">
           ${Short_description}
          </div>
          <div role="cell" class="draft-item-cell col-xs-2 padder-l-none padder-r-none updated-column">
            <div class="updated">
              <i class="fa fa-clock-o" aria-hidden="true" title="${Updated}"></i>
              <sn-time-ago timestamp="::item.sys_updated_on"/>
            </div>
          </div>
          <div  role="cell" class="draft-item-cell col-xs-1 padder-l-none padder-r-none">
            <div class="btn-group btn-group-sm">
              <button type="button" class="btn btn-clear" ng-click="c.removeDraftItem(item)" data-toggle="tooltip" data-placement="top"  data-container="body" title="${Remove Draft Item}">
              	<i class=" icon-trash btn-remove" aria-hidden="true"></i>
              </button>
            </div>
          </td>
        </li>
        
      </ul>
       </div>
       </div>
       <div class="col-sm-12 pull-none" ng-if="c.data.hasMoreDrafts" style="padding-bottom:15px">
          <div class="text-a-c" ng-if="c.fetchingDrafts">
			  <i class="fa fa-spinner fa-pulse fa-2x fa-fw"></i>
			  <span class="sr-only">${Loading more draft items}</span>
          </div>
          <button class="btn btn-default btn-show-more" ng-click="c.loadMoreDrafts()">${Show more drafts}</button>
      </div>
</script>

<script type="text/ng-template" id="myRequests">
    <div class="panels-container list-group">
			<div ng-show="::!data.is_associated_ticket_tab" class="list-group-item row requests-header-container">
          <div class="col-md-3 col-xs-12 m-b-sm fit-content">
            <div class="form-inline control-view" ng-if="c.options.show_view == 'true'">
            	<label class="control-label hidden-xs wrapper-xs " id="label_view" for="view">${View}</label>
              <select ng-model="c.viewFilter" id="view" class="form-control adjust-width" ng-change="c.changeView()" style="width:80%"
                      ng-options="item.key as item.value for item in c.filterOptions">
              </select>
            </div>
          </div>
          <div class="col-md-4 col-xs-12 padding-left-large fit-content">
            <div class="input-group" style="width:100%">
              <input ng-model="c.filterText" ng-keypress="c.checkEnter($event)"class="form-control" style="width:100%" placeholder="{{data.filterMsg}}" aria-label="{{data.filterMsg}}">
              <span class="input-group-btn">
                <button class="btn btn-default align-icon" type="button" ng-click="c.search()" data-original-title="{{data.filterMsg}}" aria-label="{{data.filterMsg}}" data-toggle="tooltip" data-placement="bottom">
                	<i class="fa fa-search"></i>
                </button>
              </span>
            </div><!-- /input-group -->
              
          </div>
    	</div>
 
    	<div ng-if="c.data.request.req_list.length == 0 && !c.filterText" class="panel-body panels-container">
        ${You do not have any requests} 
      </div>
    	<div ng-if="c.data.request.req_list.length == 0 && c.filterText" class="panel-body panels-container">
        ${Search didn't match any requests} 
      </div>
      <div role="table" ng-if="c.data.request.req_list.length > 0" class="table" aria-label="{{::data.messages.myRequestsTitle}}">
      <div ng-show="::!data.is_associated_ticket_tab" role="rowgroup" class="column-headers">
        <div role="row" class="list-group-item table-responsive">
          <span role="columnheader" class="col-xs-2 padder-r-none padder-l-none">${Request}</span>
          <span role="columnheader" class="col-xs-6 padder-r-none padder-l-none">Short Description</span>
          <span role="columnheader" class="col-xs-2 padder-r-none padder-l-none">${State}</span>
          <span role="columnheader" class="col-xs-2 padder-r-none padder-l-none">${updated_capital}</span>
        </div>
   	  </div>
      <ul role="rowgroup" class="padder-l-none padder-r-none">
        <li role="row" class="list-group-item table-responsive" ng-repeat="item in c.data.request.req_list | limitTo: c.data.lastLimit track by item.sys_id" style="margin:0px" >
          <div role="cell" class="col-xs-2 padder-l-none padder-r-none main-column">
            <div class="primary-display">
              <a href="?id={{::item.url.id}}&table={{::item.url.table}}&sys_id={{::item.url.sys_id}}" sn-focus="{{::item.highlight}}"> {{::item.display_number}} </a>
            </div>
            <!-- <small class="text-muted">
              <div ng-repeat="f in item.secondary_displays" class="secondary-display">
                <span >{{::f.display_value}}</span>
                <pre>{{item.secondary_displays}}</pre>
              </div>
            </small> -->
          </div>
          <div role="cell" class="col-xs-6 padder-l-none padder-r-none state-column">
            <div class="description" ng-if="item.display_field_shortReq.display_value">
              <span>
  {{::item.display_field_shortReq.display_value}}
</span>
            </div>
            <div class="description" ng-if="!item.display_field_shortReq.display_value">
              <span>
  {{::item.display_field}}
</span>
            </div>
          </div>
          <div role="cell" class="col-xs-2 padder-l-none padder-r-none state-column">
            <div class="state">
              <span> {{::item.state}}</span>
            </div>
          </div>
          <div role="cell" class="col-xs-2 padder-l-none padder-r-none updated-column">
            <div class="updated">
              <i class="fa fa-clock-o" aria-hidden="true" title="${Updated}"></i>
              <sn-time-ago timestamp="::item.updated_on"/>
            </div>
          </div>
        </li>
      </ul>
    </div>

      <div class="col-sm-12 pull-none" ng-if="c.data.hasMore" style="padding-bottom:15px">
					<div class="text-a-c" ng-if="c.fetching">
          	<i class="fa fa-spinner fa-pulse fa-2x fa-fw"></i>
						<span class="sr-only">${Loading more requests}</span>  
  	      </div>
          <button class="btn btn-default btn-show-more" ng-click="c.loadMore()"> {{::data.messages.showMoreRequests}} </button>  
      </div>
    
</script>


Client

(function() {

    var localInput = input; //to safeguard pullution of "input" via BR or other scripts
    var itemsObj;
    if (localInput && localInput.action === "remove_item") {
        var cartRecord = new sn_sc.CartJS('draft_items');
        cartRecord.remove(localInput.removeItemID);
        itemsObj = getDraftItems(localInput.prevLimit);
        data.draftItems = itemsObj.items;
        data.hasMoreDrafts = itemsObj.hasMore;
        if (!gs.nil(localInput.attachmentTable))
            new global.GlobalServiceCatalogUtil().deleteAttachments(localInput.attachmentTable, localInput.removeItemID);

        return;
    }

    if (localInput && localInput.action == "fetch_more_draft_items") {
        itemsObj = getDraftItems(localInput.prevLimit + 100);
        data.draftItems = itemsObj.items;
        data.hasMoreDrafts = itemsObj.hasMore;
        return;
    }

    var alsoRequest = false;

    var msg = data.messages = {};
    msg.myRequestsTitle = options.title ? gs.getMessage(options.title) : gs.getMessage('My Requests');
    msg.openRequests = gs.getMessage('Open requests');
    msg.closedRequests = gs.getMessage('Closed requests');
    msg.showMoreRequests = gs.getMessage('Show More Requests');
    msg.requestsTabLabel = gs.getMessage("Submitted requests");
    msg.draftsTabLabel = gs.getMessage("Drafts");
    data.filterMsg = gs.getMessage("Search open requests");
    data.draftFilterMsg = gs.getMessage("Search draft items");
    data.draftItemsMsg = gs.getMessage("Draft Items");
    data.deleteDraftItemMsg = gs.getMessage("Are you sure you want to delete the draft item?");
    data.dialogCancel = gs.getMessage('Cancel');
    data.dialogDelete = gs.getMessage('Delete draft');
    data.draftSearchText = $sp.getParameter("draftSearchText");
    var selectDraftTab = $sp.getParameter('selectDraftTab');
    //localInput will be undefined only on the first load.
    if (gs.nil(localInput)) {
        data.isRequestsTabActive = !data.draftSearchText && !selectDraftTab;
        data.isDraftsTabActive = !!data.draftSearchText || selectDraftTab;
    } else {
        data.isRequestsTabActive = true;
        data.isDraftsTabActive = false;
    }
    if (gs.nil(data.draftSearchText))
        data.draftSearchText = "";
    else
        data.draftSearchText = decodeURIComponent(data.draftSearchText);

    data.hide_draft_tab = (gs.getProperty('glide.sc.disable.save_as_draft') == 'true') || (gs.getProperty('glide.sc.enable.save_as_draft.portal.' + $sp.getPortalRecord().getValue("url_suffix")) != 'true');

    var recordTable = options.record_table || $sp.getParameter("table");
    var recordId = options.record_id || $sp.getParameter("sys_id");

    data.is_associated_ticket_tab = options.is_associated_ticket_tab;

    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");

    data.is_new_order = (($sp.getParameter("is_new_order") + '') === "true");
    data.requestSubmitMsg = gs.getMessage('Thank You. Your request has been submitted');
    var draftItemsObj = getDraftItems(100);
    data.draftItems = draftItemsObj.items;
    data.hasMoreDrafts = draftItemsObj.hasMore;

    function getDraftItems(limit) {
        var userID = gs.getUser().getID();
        var cart = new SPCart("draft_items", userID);

        if (!gs.nil(cart) && typeof cart.getItemsWithPagination === "function")
            itemsObj = cart.getItemsWithPagination('sys_updated_on', limit);
        else {
            gs.info("Drafts tab is hidden as we are either unable to fetch the draft cart or the SPCart script include is customized.");
            data.hide_draft_tab = true;
            itemsObj = {};
        }

        return itemsObj;
    }

    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 gr = new GlideRecord(tableName);
            if (!gr.isValid())
                continue;

            gr.addQuery(rq_filter.filter);
            gr.enableSecurityFeature('data_filter');
            gr.query();
            if (tableName == 'sc_request')
                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;
            }
        }
        return ids;
    }

    // retrieve the request's
    var myRequestMap = getMyRequestSysIds();
    var taskIDs = Object.keys(myRequestMap);

    var gr = new GlideRecordSecure('task');

    if (!data.is_associated_ticket_tab) {
        if (localInput && localInput.view === 'open')
            gr.addActiveQuery();
        else if (localInput && localInput.view === 'close')
            gr.addQuery('active', 0);
        else
            gr.addActiveQuery();
    } else {
        if (recordTable != 'universal_request') {
            //Check if universal_request field is present and it is a universal request
            var taskRecord = new GlideRecordSecure('task');
            taskRecord.get(recordId);
            if (taskRecord.isValid() && !taskRecord.universal_request.nil()) {
                var qc = gr.addQuery('parent', taskRecord.universal_request);
                qc.addOrCondition('parent', 'IN', new sn_uni_req.UniversalRequestUtilsSNC().getChildRequests(taskRecord.universal_request));
            } else
                gr.addQuery('parent', recordId);
        } else {
            var qc = gr.addQuery('parent', recordId);
            qc.addOrCondition('parent', 'IN', new sn_uni_req.UniversalRequestUtilsSNC().getChildRequests(recordId));
        }
    }

    gr.orderByDesc('sys_updated_on');
    if (localInput && localInput.search_text) {
        var req = [];
		var userID = gs.getUserID();
        var task = new GlideRecordSecure('task');
        task.addQuery('123TEXTQUERY321', localInput.search_text);
		task.addEncodedQuery("(sys_class_name=sc_request^requested_for=" + userID + ")^OR(sys_class_name=incident^caller_id=" + userID + ")");
        if (localInput && localInput.view === 'open')
            task.addQuery('active', 1);
        else if (localInput && localInput.view === 'close')
            task.addQuery('active', 0);
        else
            task.addQuery('active', 1);
        //task.addQuery('sys_id', taskIDs);
        task.query();

        while (task.next())
            req.push(task.getUniqueValue());

        var ritmGR = new GlideRecord('sc_req_item');
        if (alsoRequest && ritmGR.isValid()) {
            if (localInput && localInput.view === 'open')
                ritmGR.addQuery('request.active', 1);
            else if (localInput && localInput.view === 'close')
                ritmGR.addQuery('request.active', 0);
            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.enableSecurityFeature('data_filter');
    gr.query();

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

        if (gr.getRecordClassName() == 'sc_request') {
            record.display_field_shortReq = getField(gr, 'short_description');
            var ritm = new GlideRecord("sc_req_item");
            if (!ritm.isValid())
                continue;

            ritm.addQuery("request", gr.getUniqueValue());
            ritm.query();
            if (ritm.getRowCount() == 0)
                continue;
            if (ritm.getRowCount() > 1)
                record.display_field = gs.getMessage("{0} requested items", ritm.getRowCount());
            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_request',
                sys_id: record.sys_id
            };
        } 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
            };
        }
        record.display_number = getField(gr, 'number').display_value || '';
        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;

})();


 Server:

function($scope, spAriaUtil, i18n, spModal) {

    var c = this;

	c.translateDeleteDraftMsg = function(draftItemName) {
        return i18n.getMessage('Delete {0}').withValues([draftItemName]);
    }
    c.trackPage = function() {
        window.GlideWebAnalytics.trackEvent("Service Catalog", "Catalog My Requests", "My Requests Widget Loaded");
    }

    if (c.data.is_new_order)
        spAriaUtil.sendLiveMessage(c.data.requestSubmitMsg);

    c.viewFilter = 'open';
    c.filterOptions = [{key:'open',value:c.data.messages.openRequests},{key:'close',value:c.data.messages.closedRequests}];
	c.tabs = [{id : 'requests', template : 'myRequestsTemplate', heading : c.data.messages.requestsTabLabel, active: c.data.isRequestsTabActive}, {id : 'drafts', template : 'draftItemsTemplate', heading : c.data.messages.draftsTabLabel, active: c.data.isDraftsTabActive}];
	
    c.changeView = function() {
        window.GlideWebAnalytics.trackEvent("Service Catalog", "Catalog My Requests", "Open/Close Filter Toggled");
        c.server.get({
            action: "change_view",
            view: c.viewFilter,
            search_text: c.filterText
        }).then(function(response) {
            c.data = response.data;
            var resultMsg = (c.data.request.req_list.length == 1 ? 'result' : 'results') + ' returned';
            spAriaUtil.sendLiveMessage(i18n.getMessage('{0} ' + resultMsg).withValues([c.data.request.req_list.length]));
        });
    }

    c.search = function() {
        c.server.get({
            action: 'search',
            search_text: c.filterText,
            view: c.viewFilter
        }).then(function(response) {
            c.data = response.data;
            var resultMsg = (c.data.request.req_list.length == 1 ? 'result' : 'results') + ' returned';
            spAriaUtil.sendLiveMessage(i18n.getMessage('{0} ' + resultMsg).withValues([c.data.request.req_list.length]));
        });
    }

    c.checkEnter = function(event) {
        if (event.which === 13)
            c.search();
    }


    c.filterDraftItem = function(item) {
        if (!c.data.draftSearchText)
            return true; // If no searchText, return true to show all items

        var searchText = c.data.draftSearchText.toLowerCase();

        // Perform the filtering based on item.name or item.displayName
        return (
            (item.name && item.name.toLowerCase().includes(searchText)) ||
            (item.cart_item_name && item.cart_item_name.toLowerCase().includes(searchText))
        );
    };

    c.updateFilteredDraftItems = function() {
        if (!c.data.draftItems)
            return;

        if (!c.data.draftSearchText)
            c.filteredDraftItems = c.data.draftItems;
        else {
            c.filteredDraftItems = c.data.draftItems.filter(function(item) {
                return c.filterDraftItem(item)
            });
        }
    }

    c.filteredDraftItems = [];
    c.updateFilteredDraftItems();

    c.removeDraftItem = function(cartItem) {
        var options = {
            title: c.data.deleteDraftItemMsg,
            headerStyle: {
                border: 'none',
                'padding-bottom': 0
            },
            footerStyle: {
                border: 'none',
                'padding-top': 0
            },
            messageOnly: true,
            buttons: [{
                label: c.data.dialogCancel,
                primary: false
            }, {
                label: c.data.dialogDelete,
                'class': 'btn-danger',
                primary: true
            }],
        };

        spModal.open(options).then(function(actionButton) {
            if (actionButton) {
                if (!actionButton.primary)
                    return;

                c.fetchingDrafts = true;
                c.server.get({
                    action: "remove_item",
                    removeItemID: cartItem.sys_id,
                    prevLimit : c.data.draftItems && c.data.draftItems.length ? c.data.draftItems.length : 100,
                    attachmentTable: cartItem.attachment_table
                }).then(function(response) {
                    c.data.draftItems = response.data.draftItems;
                    c.data.hasMoreDrafts = response.data.hasMoreDrafts;
                    c.updateFilteredDraftItems();
                    c.fetchingDrafts = false;
                });
            }
        });
    }

    c.loadMore = function() {
        window.GlideWebAnalytics.trackEvent("Service Catalog", "Catalog My Requests", "Show More Clicked");
        var currentRequests = c.data.request.req_list.length;
        spAriaUtil.sendLiveMessage("${Loading more requests}");
        c.fetching = true;
        c.server.get({
            action: 'fetch_more',
            lastLimit: c.data.lastLimit,
            view: c.viewFilter,
            search_text: c.filterText
        }).then(function(response) {
            var addedRequests = response.data.request.req_list.length - currentRequests;
            var resultMsg = (addedRequests == 1 ? 'request' : 'requests') + ' added';
            spAriaUtil.sendLiveMessage(i18n.getMessage('{0} ' + resultMsg).withValues([addedRequests]));
            c.data = response.data;
            c.fetching = false;
        });
    }

    c.loadMoreDrafts = function() {
            c.fetchingDrafts = true;

            c.server.get({
                action : 'fetch_more_draft_items',
                prevLimit: c.data.draftItems && c.data.draftItems.length ? c.data.draftItems.length : 100,
            }).then(function(response){
                c.data.draftItems = response.data.draftItems;
                c.data.hasMoreDrafts = response.data.hasMoreDrafts;
                c.updateFilteredDraftItems();
                c.fetchingDrafts = false;
        });
    }

    c.changeSelectedTab = function(selectedTab) {
        c.data.isRequestsTabActive = selectedTab == "requests";
        c.data.isDraftsTabActive = selectedTab == "drafts";
    }
}


Thanks in advanced

1 ACCEPTED SOLUTION

@Paulo Machado 

then check the My Request Filter configurations

AnkurBawiskar_0-1751890486121.png

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

View solution in original post

12 REPLIES 12

GlideFather
Tera Patron

Olá @Paulo Machado,

 

please try to check the records first, perhaps it doesn't returns any incidents because there is not any existing... first create some demo/testing data or impersonate for any other user and try to display it from the widget again

 

Let me know if the data exists..

 

TLDR - if no ACTIVE incident is created, then there is nothing to display - please review this and let me know

———
/* If my response wasn’t a total disaster ↙️ drop a Kudos or Accept as Solution ↘️ Cheers! */


Hi @GlideFather.

There is an incident for which I am the caller and was opened by me, and its status is "In Progress".


Ankur Bawiskar
Tera Patron
Tera Patron

@Paulo Machado 

It should show incidents as well.

Remember there is an OOTB query business rule on incident table which will restrict the search results.

It will show incident only when logged in user is caller or opened by or present in watch list.

I am able to search as an admin

The user you are using for searching does that satisfy any of the above conditions?

AnkurBawiskar_0-1751809242701.png

 

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

My thoughts exactly 👍

———
/* If my response wasn’t a total disaster ↙️ drop a Kudos or Accept as Solution ↘️ Cheers! */