- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2025 04:32 AM
Hello everyone,
I'm having an issue with the "My Requests" widget on the portal. When I try to search using the search bar:
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
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-07-2025 05:14 AM
then check the My Request Filter configurations
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2025 04:42 AM
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! */
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2025 03:21 PM
Hi @GlideFather.
There is an incident for which I am the caller and was opened by me, and its status is "In Progress".
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2025 06:40 AM
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?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2025 07:01 AM
My thoughts exactly 👍
/* If my response wasn’t a total disaster ↙️ ⭐ drop a Kudos or Accept as Solution ✅ ↘️ Cheers! */