What is spUtil
spUtil is a really useful utility class, the problem is I can never seem
to find it when I need to look it up as it's not on
developer.servicenow.com, but is instead on
docs.servicenow.com.
So I'm making a list of their functions for my reference as it's coded
here or
more readable
here.
First I'll go over the documented methods, then the undocumented
methods, as there always seems to be some.
Method | Documented |
---|---|
addErrorMessage | Yes |
addInfoMessage | Yes |
addTrivialMessage | Yes |
createUid | No |
format | Yes |
getAccelerator | No |
getHeaders | No |
getHost | No |
getPageUri | No |
getPreference | No |
getURL | No |
getWidgetURL | No |
get | Yes |
parseAttributes | No |
recordWatch | Yes |
refresh | Yes |
scrollTo | No |
setBreadCrumb | No |
setPreference | No |
setSearchPage | No |
update | Yes |
Documented
addErrorMessage
[addErrorMessage(string)]
[record]
.service-now.com/sp_widget_list.do?sysparm_query=id=widget-sc-cat-item
// source: SC Catalog Item[widget-sc-cat-item] line 42
spUtil.addErrorMessage($scope.m.largeAttachmentMsg);
addInfoMessage
addInfoMessage(string)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=widget-sc-cat-item
// source: SC Catalog Item[widget-sc-cat-item] line 210
spUtil.addInfoMessage(t);//t is just a string
addTrivialMessage
addTrivialMessage(string)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=widget-form
// source: Form[widget-form] line 110
spUtil.addTrivialMessage(message);
format
format(string template, object
data)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=widget-sc-cat-item
// source: SC Catalog Item[widget-sc-cat-item] line 198
var url = spUtil.format(
c.options.url,
{
page: page,
table: table,
sys_id: sys_id
}
);
get
get(string
widgetid)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=sqanda-create-question
// source: SQANDA Create Question[sqanda-create-question] line 32
spUtil.get($scope, x).then(function(response) {
var newURL = $location.search({id: 'kb_social_qa_question', sys_id: response.data.sys_id});
spAriaFocusManager.navigateToLink(newURL.url());
});
refresh
refresh(object
$scope)
update
update(object
$scope)
[record]
service-now.com/sp_widget_list.do?sysparm_query=sys_id=f37aa302cb70020000f8d856634c9cfc
// source: Approvals[] line 14
function get() {
spUtil.update($scope);
}
recordWatch
recordWatch(object $scope, string table, string filter, function
callback)
[record]
service-now.com/sp_widget_list.do?sysparm_query=sys_id=f37aa302cb70020000f8d856634c9cfc
// source: Approvals[] line 12
spUtil.recordWatch(
$scope,
"sysapproval_approver",
"state=requested^approverIN" + $scope.data.myApprovals.toString()
);
Also, there's a number of tables that are blocked from being watched,
you can see this list in your instance by running;
gs.info(gs.getProperty("glide.record_watcher.table.blacklist"))
//this property is non-editable
clone_preserved_data
clone_token
digest_properties
instance
license_details
pa_job_logs
role_has_license
saml2_update1_properties
sp_log
sso_federation
sso_properties
sys_audit_delete
sys_audit_relation
sys_broadcast_message
sys_broadcast_message_m2m
sys_cache_flush
sys_cluster_message
sys_cluster_state
sys_db_cache
sys_dictionary_override
sys_email
sys_email_account
sys_email_log
sys_event_processor
sys_glide_object
sys_import_set
sys_import_set_row
sys_import_set_row_error
sys_import_set_run
sys_progress_worker
sys_progress_worker_domain
sys_report_summary
sys_report_summary_line
sys_rw_action
sys_rw_amb_action
sys_status
sys_trigger
sys_ui_navigator_history
sys_update_set
sys_update_set_log
sys_update_version
sys_update_xml
sys_upgrade_history
sys_upgrade_history_log
sys_user_preference
sys_user_session
sys_user_token
ua_app_metadata
ua_app_usage
usageanalytics_count
usageanalytics_count_cfg
wf_command
wf_context
wf_executing
wf_history
wf_transition_history
wf_workflow_execution
Undocumented
getHeaders
getHeaders()
directive.spReferenceField.js#40
var headers = spUtil.getHeaders();
// returns something like so
// {
// 'Accept': 'application/json',
// 'x-portal': $rootScope.portal_id
// };
getWidgetURL
getWidgetURL(string widgetid or string
object)
directive.spReferenceField.js#36
var widgetUrl = spUtil.getWidgetURL('sys_id');
// returns something like so
// '/api/now/sp/widget/sys_id';
setBreadCrumb
setBreadCrumb(object $scope,
list)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=tagged-question-list
// source: Tagged Question List[] line 3
spUtil.setBreadCrumb($scope, [
{
label: c.data.community.Breadcrumb,
url: '#'
}
])
setSearchPage
setSearchPage(searchPage)
[record]
service-now.com/sp_widget_list.do?sysparm_query=sys_id=b8c57073cb10020000f8d856634c9cfc
// source: Search Page[] line 2
spUtil.setSearchPage($scope.data.t);//t is a string passed via url here
getURL
getURL(type)
[record]service-now.com/sp_widget_list.do?sysparm_query=id=widget-login
// source: Login[widget-login] line 21
var url = spUtil.getURL({sysparm_type: 'view_form.login'});
// I assume this returns a string, I'll have to check
scrollTo
scrollTo(id,
time)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=widget-sc-order-guide
// source: SC Order Guide[widget-sc-order-guide] line 28
spUtil.scrollTo("#" + item.sys_id);
getAccelerator
getAccelerator(char)
[record]
service-now.com/sp_widget_list.do?sysparm_query=id=widget-form
// source: Form[widget-form] line 5
spUtil.getAccelerator('s');
// returns for mac '⌘ + ' + char;
// returns for otherwise 'Ctrl + ' + char;
createUid
createUid(str)
if (scope.widget.update) {
name += spUtil.createUid('xxxxx');
}
parseAttributes
parseAttributes(strAttributes)
function isRefQualElement(fieldName) {
var refQualElements = [];
if (field.attributes && field.attributes.indexOf('ref_qual_elements') > -1) {
var attributes = spUtil.parseAttributes(field.attributes);
refQualElements = attributes['ref_qual_elements'].split(',');
}
return field.reference_qual.indexOf(fieldName) != -1 || refQualElements.indexOf(fieldName) != -1;
}
getHost
setPreference
getPreference
getPageUri
getPageUri()