- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-24-2024 03:41 AM
Hi,
I found an on load script to highlight fields which are recommended on a CI.
However the load script did not work and the user is no longer active on this forum.
Can anybody advise an issue in the script, or a way to highlight a recommended field on a CI form view.
Thanks
function onLoad() {
if(g_form.getTableName().indexOf('cmdb_ci')==0){
var gr = new GlideRecord('cmdb_recommended_fields');
gr.addQuery('active','true');
gr.addQuery('table',g_form.getTableName());
gr.query(displayResults);
}
function displayResults(response){
response.rows.forEach(function(thisRow){
thisRow.forEach(function(thisColumn){
if(thisColumn.name=='recommended'){
var thisField = jQuery('input[id="sys_display.'+g_form.getTableName()+'.'+thisColumn.value+'"]').length ==0 ? jQuery('input[id="'+g_form.getTableName()+'.'+thisColumn.value+'"]'): jQuery('input[id="sys_display.'+g_form.getTableName()+'.'+thisColumn.value+'"]');
thisField.css('background','lightyellow');
}
});
});
}
}
CI Class Manager - Recommended Fields - ServiceNow Community
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-24-2024 06:21 AM - edited 09-25-2024 03:40 AM
Here is a slightly better way to do the same, at least eliminating the Client Script GlideRecord. This will work in the native UI.
function onLoad() {
var tableName = g_form.getTableName();
if (tableName.indexOf('cmdb_ci') == 0) {
var ga = new GlideAjax('CMDBUtils');
ga.addParam('sysparm_name','checkRecFields');
ga.addParam('sysparm_tablename',tableName);
ga.getXML(getResponse);
}
function getResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var thisColumn = answer.split(',');
for (i=0; i<thisColumn.length; i++) {
var thisField = jQuery('input[id="sys_display.'+tableName+'.'+thisColumn[i]+'"]').length ==0 ? jQuery('input[id="'+tableName+'.'+thisColumn[i]+'"]'): jQuery('input[id="sys_display.'+tableName+'.'+thisColumn[i]+'"]');
thisField.css('background','lightyellow');
}
}
}
The Script Include, with Client callable box checked:
var CMDBUtils = Class.create();
CMDBUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
checkRecFields: function() {
var answer = 'none';
var tablename = this.getParameter('sysparm_tablename');
var gr = new GlideRecord('cmdb_recommended_fields');
gr.addActiveQuery();
gr.addQuery('table', tablename);
gr.query();
if (gr.next()) {
answer = gr.recommended;
}
return answer;
},
type: 'CMDBUtils'
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-24-2024 06:46 AM
This worked. Many many thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-24-2024 09:33 AM
You are welcome!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2024 12:10 AM
Hi Brad, thank you again. Adding more required fields. specifically reference fields like the user reference fields assigned to and owned by, we notice the highlight does not work. Do you have any thoughts?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2024 03:34 AM
I was able to get that, and other fields working using the jquery method. Since both are DOM manipulation, the better method is the one that works. There might be a way for getControl or similar to work with reference, but I just updated the original reply to prevent confusion for those that follow.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-25-2024 04:34 AM
Thank you again Brad. This works. Much appreciated.