Name
sn_docs.DocSlashAPI
Description
No description available
Script
var DocSlashAPI = Class.create();
DocSlashAPI.prototype = {
initialize: function() {
this.recordSearchLimit = 5;
},
accessParam: function(param) {
if (param?.length > 0)
return param[0];
return param;
},
isValidTable: function(tableName) {
return (new GlideRecord(tableName)).isValid();
},
getRecordDropdown: function(queryParams, pathParams) {
const {
table
} = pathParams;
let {
pattern,
fields,
filterCondition
} = queryParams;
pattern = decodeURIComponent(this.accessParam(pattern));
fields = this.accessParam(fields)?.split(',');
filterCondition = this.accessParam(filterCondition) || '';
if (!this.isValidTable(table)) {
return {
isValid: false,
msg: gs.getMessage("Selected table was not found"),
dropdownOptions: []
};
}
if (global.JSUtil.nil(fields)) {
return {
isValid: false,
msg: gs.getMessage("Field config is missing"),
dropdownOptions: []
};
}
const recordsGr = new GlideRecordSecure(table);
const displayField = recordsGr.getDisplayName();
const query = recordsGr.addQuery(fields[0], 'CONTAINS', pattern);
for (let i = 1; i < fields.length; i++) {
query.addOrCondition(fields[i], 'CONTAINS', pattern);
}
if (filterCondition)
recordsGr.addEncodedQuery(filterCondition);
if (this.recordSearchLimit)
recordsGr.setLimit(this.recordSearchLimit);
recordsGr.query();
const dropdownOptions = [];
while (recordsGr.next()) {
let number = '';
if (recordsGr.isValidField('number'))
number = recordsGr.getValue('number');
let description = '';
if (displayField !== 'number') {
description = recordsGr.getDisplayValue();
}
dropdownOptions.push({
id: recordsGr.getUniqueValue(),
desc: description,
number,
table
});
}
return {
isValid: true,
dropdownOptions
};
},
type: 'DocSlashAPI'
};
Sys ID
4327bd0b53222910409bddeeff7b129b