Name
sn_mab_api.ConfigKeyFactory
Description
No description available
Script
var ConfigKeyFactory = Class.create();
ConfigKeyFactory.prototype = {
initialize: function() {
},
/**
*
* @param tableName {String}
* @return {ConfigKeyGenerator}
*/
getGenerator: function(tableName) {
if (tableName === 'sys_sg_button') {
return new ConfigKeyButtonGenerator();
} else if (tableName === 'sys_sg_native_client') {
return new ConfigKeyNativeClientGenerator();
} else {
return new ConfigKeyGenerator(tableName);
}
},
type: 'ConfigKeyFactory'
};
function ConfigKeyGenerator(tableName) {
this.tableName = tableName;
this.typeMap = {
// screens
sys_sg_applet_launcher: 'Launcher screen',
sys_sg_list_screen: 'List screen',
sys_sg_form_screen: 'Record screen',
sys_sg_browser_screen: 'Mobile web screen',
sys_sg_parameter_screen: 'Input form screen',
sys_sg_map_screen: 'Map screen',
sys_sg_calendar_screen: 'Calendar screen',
sys_sg_chart_screen: 'Chart screen',
// Icons and Cards
sys_sg_view_config: 'Card',
sys_sg_view_template: 'Card template',
sys_sg_item_view: 'Legacy card',
sys_sg_icon: 'Icon',
// Data Items and Relationship Data Items
sys_sg_data_item: 'Data item',
sys_sg_relationship_data_item: 'Relationship data item'
};
this.configKeyCache = new sn_mab_api.ConfigKeyCache();
}
/**
*
* @param gr {GlideRecord}
* @param node {{}}
* @return {TreeConfigurationNode}
*/
ConfigKeyGenerator.prototype.getTreeConfiguration = function(gr, node) {
var classNameOverride = this.getOverrideField(node,'sys_class_name');
var configKey = classNameOverride ? classNameOverride : gr.getValue('sys_class_name');
return this.configKeyCache.getTreeConfigByConfigKeys([configKey]);
};
/**
*
* @param sysId {String}
* @return {TreeConfigurationNode}
*/
ConfigKeyGenerator.prototype.getTreeConfigurationViaSysId = function(sysId) {
var gr = new GlideRecord(this.tableName);
if (!gr.get(sysId))
return undefined;
var configKey = gr.getValue('sys_class_name') || this.tableName;
return this.configKeyCache.getTreeConfigByConfigKeys([configKey]);
};
/**
*
* @param gr {GlideRecord}
* @return {String}
*/
ConfigKeyGenerator.prototype.getType = function(gr) {
var className = gr.getValue('sys_class_name');
return this.typeMap[className] ? this.typeMap[className] : gr.getClassDisplayValue();
};
ConfigKeyGenerator.prototype.getTypeForRecord = function(record, table) {
var className = record.sys_class_name ? record.sys_class_name.value : table;
if (this.typeMap[className])
return this.typeMap[className];
return ClassLabelGetterFactory.getInstance().getLabel(record, table);
}
ConfigKeyGenerator.prototype.getOverrideField = function(node, field) {
if (node && node[field])
return node[field];
return undefined;
}
function ConfigKeyButtonGenerator() {
this.tableName = 'sys_sg_button';
}
// extend ConfigKeyGenerator
ConfigKeyButtonGenerator.prototype = new ConfigKeyGenerator();
/**
*
* @param sysId {String}
* @return {TreeConfigurationNode}
*/
ConfigKeyButtonGenerator.prototype.getTreeConfigurationViaSysId = function(sysId) {
var gr = new GlideRecord(this.tableName);
if (!gr.get(sysId))
return;
return this.getTreeConfiguration(gr, {});
};
/**
*
* @param gr {GlideRecord}
* @param node {{}}
* @return {TreeConfigurationNode}
*/
ConfigKeyButtonGenerator.prototype.getTreeConfiguration = function(gr, node) {
var typeOverride = this.getOverrideField(node,'type');
var contextOverride = this.getOverrideField(node,'context');
var type = typeOverride ? typeOverride : gr.getValue('type');
var context = contextOverride ? contextOverride : gr.getValue('context');
var possibleConfigKeys = [
this.tableName + '_' + type + '_' + context,
this.tableName + '_' + type,
this.tableName
];
return this.configKeyCache.getTreeConfigByConfigKeys(possibleConfigKeys);
};
/**
*
* @param gr {GlideRecord}
* @return {String}
*/
ConfigKeyButtonGenerator.prototype.getType = function(gr) {
var type = gr.getValue('type');
if (type === 'write_back') {
return 'Action';
} else if (type === 'redirection') {
return 'Navigation';
} else {
return 'Smart button';
}
};
ConfigKeyButtonGenerator.prototype.getTypeForRecord = function(record) {
return record.type.displayValue;
}
function ConfigKeyNativeClientGenerator() {
this.tableName = 'sys_sg_native_client';
}
// extend ConfigKeyGenerator
ConfigKeyNativeClientGenerator.prototype = new ConfigKeyGenerator();
/**
*
* @param gr {GlideRecord}
* @return {String}
*/
ConfigKeyNativeClientGenerator.prototype.getType = function(gr) {
var type = gr.getValue('type');
// Capitalize First Letter
if (type) {
return type.charAt(0).toUpperCase() + type.slice(1);
}
return 'Unknown Native Client';
}
ConfigKeyNativeClientGenerator.prototype.getTypeForRecord = function(record) {
var type = record.type.value;
// Capitalize First Letter
if (type) {
return type.charAt(0).toUpperCase() + type.slice(1);
}
return 'Unknown Native Client';
}
var ClassLabelGetterFactory = (function(){
function ClassLabelGetter() {}
var displayValueCache = {};
var instance;
function getLabel(record, table) {
var sysId = record.sys_id.value;
var className = record.sys_class_name ? record.sys_class_name.value : table;
if (displayValueCache[className])
return displayValueCache[className];
var gr = new GlideRecord(table);
if (!gr.isValid())
throw new ErrorHandler().getNotFoundError('Does not exist for table: ' + table);
gr.addQuery('sys_id', sysId);
gr.query();
displayValueCache[className] = gr.getClassDisplayValue();
return displayValueCache[className];
}
return {
getInstance: function() {
if (!instance) {
instance = new ClassLabelGetter();
instance.getLabel = this.getLabel;
delete instance.constructor;
}
return instance;
},
getLabel: getLabel
};
})();
Sys ID
48f53a89b75620108223e126de11a99c