Name
sn_prfrd_tables.PrefrdTableContextMapping
Description
No description available
Script
var PrefrdTableContextMapping = Class.create();
PrefrdTableContextMapping.prototype = {
initialize: function (options, additionalArgs) {
this.options = options;
this.gr = new GlideRecord('sn_preferred_table_context_mapping');
this.additionalArgs = additionalArgs || {};
},
_getContextSysId: function (contextName) {
var sysIds = [];
var context = new GlideRecord('sn_preferred_table_context');
context.addQuery('name', contextName);
context.query();
while (context.next()) {
sysIds.push(context.getValue('sys_id'));
}
return sysIds[0];
},
_getTableDetails: function (tableName) {
var tables = [];
var tableRec = new GlideRecord('sys_db_object');
tableRec.addQuery('name', tableName);
if (this.options.context && this.options.context.toLowerCase() === 'extension') {
tableRec.addQuery('is_extendable', 'true');
}
tableRec.query();
while (tableRec.next()) {
if(tableRec.isValid()) {
var table = {
sys_id: tableRec.getUniqueValue(),
is_extendable: tableRec.getDisplayValue('is_extendable'),
label: tableRec.getDisplayValue('label'),
};
tables.push(table);
}
}
return tables;
},
_getPreferredTableDetails: function (sysId) {
var prefrdTables = [];
var prTableRec = new GlideRecord('sn_preferred_table');
prTableRec.addQuery('sys_id', sysId);
prTableRec.query();
var inScopeTbSysIds = this.additionalArgs.inScopeTbSysIds ? this.additionalArgs.inScopeTbSysIds : [];
while (prTableRec.next()) {
var tbDetail = this._getTableDetails(
prTableRec.getValue('table')
)[0];
if(tbDetail && inScopeTbSysIds.indexOf(tbDetail.sys_id) < 0) {
var table = {
sys_id: tbDetail.sys_id,
name: prTableRec.getValue('table'),
label: tbDetail.label,
description: prTableRec.getDisplayValue('description'),
short_description: prTableRec.getDisplayValue('short_description'),
is_extendable: tbDetail.is_extendable,
};
prefrdTables.push(table);
}
}
return prefrdTables;
},
_addAdditionalQueries: function () {
var queryParams = this.options;
var gr = this.gr;
gr.orderBy('order'); //default sequence by order field
},
build: function () {
var preferred_table_list = [];
var preferred_table_names = [];
this.gr.addQuery(
'context',
this._getContextSysId(this.options.context)
);
this._addAdditionalQueries();
this.gr.query();
while (this.gr.next()) {
var prfrdTables = this._getPreferredTableDetails(
this.gr.getValue('preferred_table')
)[0];
if (prfrdTables) {
prfrdTables.order = this.gr.getValue('order');
preferred_table_list.push(prfrdTables);
preferred_table_names.push(prfrdTables.name);
}
}
return {'tables': preferred_table_list, 'names': preferred_table_names};
},
type: 'PrefrdTableContextMapping',
};
Sys ID
f8772fea77aa511031e3b3c64b5a994b