Pass the value from client script of widget to server script of same widget in service portal.
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-08-2023 04:16 AM - edited 05-09-2023 04:00 AM
Hi Experts,
Iam trying to pass the value accNm from client script of widget A to server script of same widget in service portal
Client script
$scope.showaccount = {};
$scope.$on('getaccount', function(event, accNm) {
$scope.showaccount.accNm = accNm;
// Call the server-side script with the accNm value
c.server.update({ accountNm: accNm }).then(function(response) {
// Handle the response from the server-side script
console.log(response.data);
});
});
Server script :
var accountNm= input.accountNm; ( accountNm is showing as undefined)
Please suggest
6 REPLIES 6

Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-09-2023 05:05 AM
this is just part of the script, can you post entire script here?
If I could help you with your Query then, please hit the Thumb Icon and mark my answer as Correct!!
Thank you,
Ali
Thank you,
Ali
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-09-2023 07:17 AM
Server script:----------
(function() {
var c = this;
if (!input) // asynch load list
return;
data.msg = {};
data.msg.sortingByAsc = gs.getMessage("Sorting by ascending");
data.msg.sortingByDesc = gs.getMessage("Sorting by descending");
data.searchMsg = gs.getMessage("Search");
var accNm= input.accNm;
var userlist = new GlideRecord('account_membership');
userlist.addQuery('accounts.account_name', 'LIKE', '%' + accNm + '%');
userlist.query();
var users = [];
while (userlist.next()) {
users.push(userlist.users);
}
options.table = "sys_user_has_role";
options.limit='20';
//data.fields = options.field_list;
options.fields = 'user,role,sys_created_on';
//data.o=options.o;
//data.d= options.d;
options.enable_filter= true;
options.filter= 'user.nameIN';
//options.filter='user=7317f6b3db6195902785e22913961919';
data.window_size=options.window_size;
data.view = options.view;
data.useInstanceTitle = true; // to make sure Data Table widget uses headerTitle always
//data.headerTitle = options.title;
data.show_breadcrumbs=true;
optCopy(['table', 'p', 'o', 'd', 'filter', 'fixed_query', 'filterACLs', 'fields', 'keywords', 'view']);
optCopy(['relationship_id', 'apply_to', 'apply_to_sys_id', 'window_size']);
if (!data.table) {
data.invalid_table = true;
data.table_label = "";
return;
}
if (!data.fields) {
if (data.view)
data.fields = $sp.getListColumns(data.table, data.view);
else
data.fields = $sp.getListColumns(data.table);
}
data.view = data.view || 'mobile';
data.table = data.table || $sp.getValue('table');
data.filter = data.filter || $sp.getValue('filter');
data.keywords = data.keywords || $sp.getValue('keywords');
data.p = data.p || $sp.getValue('p') || 1;
data.p = parseInt(data.p);
data.o = data.o || $sp.getValue('o') || $sp.getValue('order_by');
data.d = data.d || $sp.getValue('d') || $sp.getValue('order_direction') || 'asc';
data.useTinyUrl = gs.getProperty('glide.use_tiny_urls') === 'true';
data.tinyUrlMinLength = gs.getProperty('glide.tiny_url_min_length');
var grForMetaData = new GlideRecord(data.table);
if (input.setOrderUserPreferences) {
// update User Preferences on a manual sort for UI consistency
gs.getUser().savePreference(data.table + ".db.order", data.o);
gs.getUser().savePreference(data.table + ".db.order.direction", data.d == "asc" ? "" : "DESC");
data.setOrderUserPreferences = false;
}
// if no sort specified, find a default column for UI consistency
if (!data.o)
getOrderColumn();
data.page_index = data.p - 1;
data.show_new = data.show_new || options.show_new;
var windowSize = data.window_size || $sp.getValue('maximum_entries') || 20;
windowSize = parseInt(windowSize);
if (isNaN(windowSize) || windowSize < 1)
windowSize = 20;
data.window_size = windowSize;
var gr;
// FilteredGlideRecord is not supported in scoped apps, so GlideRecordSecure will always be used in an application scope
if (typeof FilteredGlideRecord != "undefined" && (gs.getProperty("glide.security.ui.filter") == "true" || grForMetaData.getAttribute("glide.security.ui.filter") != null)) {
gr = new FilteredGlideRecord(data.table);
gr.applyRowSecurity();
} else
gr = new GlideRecordSecure(data.table);
if (!gr.isValid()) {
data.invalid_table = true;
data.table_label = data.table;
return;
}
data.canCreate = gr.canCreate();
data.newButtonUnsupported = data.table == "sys_attachment";
data.table_label = gr.getLabel();
data.table_plural = gr.getPlural();
data.title = input.useInstanceTitle && input.headerTitle ? gs.getMessage(input.headerTitle) : data.table_plural;
data.hasTextIndex = $sp.hasTextIndex(data.table);
if (data.filter) {
if (data.filterACLs)
gr = $sp.addQueryString(gr, data.filter);
else
gr.addEncodedQuery(data.filter);
}
if (data.keywords) {
gr.addQuery('123TEXTQUERY321', data.keywords);
data.keywords = null;
}
data.filter = gr.getEncodedQuery();
if(!gs.nil(data.fixed_query)){
gr.addEncodedQuery(data.fixed_query);
}
if (data.relationship_id) {
var rel = GlideRelationship.get(data.relationship_id);
var target = new GlideRecord(data.table);
var applyTo = new GlideRecord(data.apply_to);
applyTo.get("sys_id", data.apply_to_sys_id);
rel.queryWith(applyTo, target); // put the relationship query into target
data.exportQuery = target.getEncodedQuery();
gr.addEncodedQuery(data.exportQuery); // get the query the relationship made for us
}
if (data.exportQuery)
data.exportQuery += '^' + data.filter;
else
data.exportQuery = data.filter;
data.exportQueryEncoded = encodeURIComponent(data.exportQuery + (!gs.nil(data.fixed_query) ? ('^' + data.fixed_query) : ''));
if (data.o){
if (data.d == "asc")
gr.orderBy(data.o);
else
gr.orderByDesc(data.o);
if (gs.getProperty("glide.secondary.query.sysid") == "true")
gr.orderBy("sys_id");
}
data.window_start = data.page_index * data.window_size;
data.window_end = (data.page_index + 1) * data.window_size;
gr.chooseWindow(data.window_start, data.window_end);
gr.setCategory("service_portal_list");
gr._query();
data.row_count = gr.getRowCount();
data.num_pages = Math.ceil(data.row_count / data.window_size);
data.column_labels = {};
data.column_types = {};
data.fields_array = data.fields.split(',');
// use GlideRecord to get field labels vs. GlideRecordSecure
for (var i in data.fields_array) {
var field = data.fields_array[i];
var ge = grForMetaData.getElement(field);
if (ge == null)
continue;
data.column_labels[field] = ge.getLabel();
data.column_types[field] = ge.getED().getInternalType();
}
data.list = [];
while (gr._next()) {
var record = {};
$sp.getRecordElements(record, gr, data.fields);
if (typeof FilteredGlideRecord != "undefined" && gr instanceof FilteredGlideRecord) {
// FilteredGlideRecord doesn't do field-level
// security, so take care of that here
for (var f in data.fields_array) {
var fld = data.fields_array[f];
if (!gr.isValidField(fld))
continue;
if (!gr[fld].canRead()) {
record[fld].value = null;
record[fld].display_value = null;
}
}
}
record.sys_id = gr.getValue('sys_id');
record.targetTable = gr.getRecordClassName();
data.list.push(record);
}
data.enable_filter = (input.enable_filter == true || input.enable_filter == "true" ||
options.enable_filter == true || options.enable_filter == "true");
var breadcrumbWidgetParams = {
table: data.table,
query: data.filter,
enable_filter: data.enable_filter
};
data.filterBreadcrumbs = $sp.getWidget('widget-filter-breadcrumbs', breadcrumbWidgetParams);
// copy to data from input or options
function optCopy(names) {
names.forEach(function(name) {
data[name] = input[name] || options[name];
})
}
// getOrderColumn logic mirrors that of Desktop UI when no sort column is specified
function getOrderColumn() {
// First check for user preference
var pref = gs.getUser().getPreference(data.table + ".db.order");
if (!global.JSUtil.nil(pref)) {
data.o = pref;
if (gs.getUser().getPreference(data.table + ".db.order.direction") == "DESC")
data.d = 'desc';
return;
}
// If no user pref, check for table default using same logic as Desktop UI:
// 1) if task, use number
// 2) if any field has isOrder attribute, use that
// 3) use order, number, name column if exists (in that priority)
if (grForMetaData.isValidField("sys_id") && grForMetaData.getElement("sys_id").getED().getFirstTableName() == "task") {
data.o = "number";
return;
}
// Next check for isOrder attribute on any column
var elements = grForMetaData.getElements();
// Global and scoped GlideRecord.getElements return two different things,
// so convert to Array if needed before looping through
if (typeof elements.size != "undefined") {
var elementArr = [];
for (var i = 0; i < elements.size(); i++)
elementArr.push(elements.get(i));
elements = elementArr;
}
// Now we can loop through
for (var j = 0; elements.length > j; j++) {
var element = elements[j];
if (element.getAttribute("isOrder") == "true") {
data.o = element.getName();
return;
}
}
// As last resort, sort on Order, Number, or Name column
if (grForMetaData.isValidField("order"))
data.o = "order";
else if (grForMetaData.isValidField("number"))
data.o = "number";
else if (grForMetaData.isValidField("name"))
data.o = "name";
}
})();
Client script ----------------------
function($scope, $rootScope) {
var c = this;
$scope.getAccountDetails = function(accNm) {
$scope.showTab1Info = true;
c.server.get({
accountNm: accNm
}).then(function(r) {
console.log("account details:" + r.data.accountDetails);
$scope.accountDetails = r.data.accountDetails;
$rootScope.$broadcast('getaccount', accNm);
});
};
/* From the account management Tab */
api.controller = function($scope, $location, cloudTabNavigationHelper) {
var c = this;
var s = {id: p, table: parms.table, sys_id: parms.sys_id, view: 'sp'};
c.setActiveTab = function(tab) {
$scope.$applyAsync(function() {
$location.search('tab', tab).replace();
});
};
c.isActiveTab = function(tab) {
return $location.search().tab == tab;
};
c.goTo = function(tab) {
$location.search('tab', tab).replace();
};
if (typeof $location.search().tab == 'undefined' && $location.search().id == "roles")
c.setActiveTab('rolesandpermission');
var tabListIds = [];
c.data.tabList.forEach(function(list) {
tabListIds.push(list.tab_id);
});
cloudTabNavigationHelper.setTabNavigationListener(tabListIds, 'cap_quota_tabs');
};
};