spUtil

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.

MethodDocumented
addErrorMessageYes
addInfoMessageYes
addTrivialMessageYes
createUidNo
formatYes
getAcceleratorNo
getHeadersNo
getHostNo
getPageUriNo
getPreferenceNo
getURLNo
getWidgetURLNo
getYes
parseAttributesNo
recordWatchYes
refreshYes
scrollToNo
setBreadCrumbNo
setPreferenceNo
setSearchPageNo
updateYes

Documented

addErrorMessage

[addErrorMessage(string)]

[record]

.service-now.com/sp_widget_list.do?sysparm_query=id=widget-sc-cat-item

docs

// 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

docs

// 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

docs

// source: Form[widget-form] line 110
spUtil.addTrivialMessage(message);

format

[format(string template, object

data)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L5)

[record]

service-now.com/sp_widget_list.do?sysparm_query=id=widget-sc-cat-item

docs

// 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)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L30)

[record]

service-now.com/sp_widget_list.do?sysparm_query=id=sqanda-create-question

docs

// 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)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L22)

docs

update

[update(object

\$scope)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L13)

[record]

service-now.com/sp_widget_list.do?sysparm_query=sys_id=f37aa302cb70020000f8d856634c9cfc

docs

// source: Approvals[] line 14
function get() {
spUtil.update($scope);
}

recordWatch

[recordWatch(object \$scope, string table, string filter, function

callback)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L129)

[record]

service-now.com/sp_widget_list.do?sysparm_query=sys_id=f37aa302cb70020000f8d856634c9cfc

docs

// 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)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L60)

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)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L68)

[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)](https://github.com/jacebenson/sndocs/blob/master/sources/jakarta/4/scripts/app.$sp/service.spUtil.js#L112)

[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)

directive.spWidget.js#14

if (scope.widget.update) {
name += spUtil.createUid('xxxxx');
}

parseAttributes

parseAttributes(strAttributes)

directive.spChoiceList.js#37

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

getHost()

setPreference

setPreference(pref,value)

getPreference

getPreference(pref,value)

getPageUri

getPageUri()