Name
sn_rf.RFPillPickerUtils
Description
No description available
Script
var RFPillPickerUtils = Class.create();
RFPillPickerUtils.prototype = {
initialize: function(table, sysId, ruleOutputIdentifierTable) {
this.rfLogger = new RFLogger("RFPillPickerUtils");
if (!table || !sysId || table != RFConstants.tables.SN_RF_RECOMMENDATION_EXPERIENCE) {
return;
}
if (ruleOutputIdentifierTable && ruleOutputIdentifierTable != RFConstants.pillPickerVars.RULE_OUTPUT_IDENTIFIER_TABLE) {
return;
}
var experienceService = new RFExperienceService(sysId);
if (!experienceService.hasValidRecord()) {
return;
}
var ruleService = experienceService.getRule();
if (!ruleService) {
return;
}
var evaluationTypeService = ruleService.getEvaluationType();
if (!evaluationTypeService) {
return;
}
this.experienceService = experienceService;
this.ruleService = ruleService;
this.evaluationTypeService = evaluationTypeService;
this.table = table;
this.sysId = sysId;
},
isValidRequest: function() {
return this.experienceService && this.ruleService && this.evaluationTypeService;
},
getElements: function(elementLevel) {
var response = {};
if (!this.isValidRequest()) {
this.rfLogger.logError("Invalid pill picker request");
return response;
}
var elements;
switch (elementLevel) {
case RFConstants.pillPickerVars.BASE_ELEMENTS:
elements = this._getBaseElementsMetaData();
break;
case RFConstants.pillPickerVars.RULE_OUTPUT_ELEMENTS:
elements = this._getRuleOutputElementsMetaData();
break;
default:
elements = {};
}
this._setColumnContext(response);
this._setColumns(response, elements);
return response;
},
_getBaseElementsMetaData: function() {
var results = {};
results[RFConstants.pillPickerVars.CONTEXT_RECORD_KEY] = this._getContextRecordMetaData();
results[RFConstants.pillPickerVars.RULE_OUTPUT_KEY] = this._getRuleOutputMetaData();
return results;
},
_getContextRecordMetaData: function() {
var results = {};
var tableName = this.ruleService.getTable();
if (!tableName) {
return results;
}
this._setName(results, RFConstants.pillPickerVars.CONTEXT_RECORD_KEY);
this._setLabel(results, RFConstants.pillPickerVars.CONTEXT_RECORD_LABEL + ': ' + this._getTableDisplayValue(tableName));
this._setType(results, RFConstants.pillPickerVars.TABLE);
this._setFilterable(results, true);
this._setReference(results, tableName);
this._setReferenceTableLink(results, tableName);
return results;
},
_getRuleOutputMetaData: function() {
var results = {};
this._setName(results, RFConstants.pillPickerVars.RULE_OUTPUT_KEY);
this._setLabel(results, RFConstants.pillPickerVars.RULE_OUTPUT_LABEL);
this._setFilterable(results, true);
this._setReference(results, RFConstants.pillPickerVars.RULE_OUTPUT_IDENTIFIER_TABLE);
return results;
},
_getRuleOutputElementsMetaData: function() {
var response = {};
var evaluationOutputSchemaResult = this.evaluationTypeService.getEvaluationTypeOutputSchema(this.ruleService);
if (evaluationOutputSchemaResult && evaluationOutputSchemaResult[RFConstants.STATUS] == RFConstants.SUCCESS) {
var schema = evaluationOutputSchemaResult[RFConstants.evaluatorVariable.SCHEMA] || [];
var hiddenElements = evaluationOutputSchemaResult[RFConstants.evaluatorVariable.METADATA][RFConstants.evaluatorVariable.HIDDEN] || [];
for (var schemaIdx = 0; schemaIdx < schema.length; schemaIdx++) {
var elementDetail = schema[schemaIdx];
if (hiddenElements.indexOf(elementDetail[RFConstants.pillPickerVars.NAME]) == -1) {
var element = {};
this._setName(element, elementDetail[RFConstants.pillPickerVars.NAME]);
this._setType(element, elementDetail[RFConstants.pillPickerVars.TYPE]);
this._setFilterable(element, true);
var label = elementDetail[RFConstants.pillPickerVars.LABEL];
if (elementDetail[RFConstants.pillPickerVars.TYPE] == RFConstants.pillPickerVars.REFERENCE) {
var referenceTable = elementDetail[RFConstants.pillPickerVars.REFERENCE_TABLE];
label = label + ': ' + this._getTableDisplayValue(referenceTable);
this._setReferenceTableLink(element, referenceTable);
}
this._setLabel(element, label);
response[elementDetail[RFConstants.pillPickerVars.NAME]] = element;
}
}
} else {
var errorMessage = gs.getMessage('Error occured while fetching output schema for {0} evaluation type. Error Details: {1}',
[this.evaluationTypeService.getEvaluationTypeName(), evaluationOutputSchemaResult[RFConstants.ERROR_MESSAGE]]);
this.rfLogger.logError(errorMessage);
gs.addErrorMessage(errorMessage);
}
return response;
},
_setName: function(result, name) {
result[RFConstants.pillPickerVars.NAME] = name;
},
_setLabel: function(result, label) {
result[RFConstants.pillPickerVars.LABEL] = label;
},
_setType: function(result, type) {
result[RFConstants.pillPickerVars.TYPE] = type;
},
_setFilterable: function(result, filterable) {
result[RFConstants.pillPickerVars.FILTERABLE] = filterable;
},
_setDisabled: function(result, disabled) {
result[RFConstants.pillPickerVars.DISABLED] = disabled;
},
_setReference: function(result, referenceTable) {
result[RFConstants.pillPickerVars.REFERENCE] = referenceTable;
},
_setColumns: function(result, columns) {
result[RFConstants.pillPickerVars.COLUMNS] = columns;
},
_setColumnContext: function(result) {
result[RFConstants.pillPickerVars.TABLE] = this.table;
result[RFConstants.pillPickerVars.TABLE_LABEL] = this.table;
result[RFConstants.pillPickerVars.SYS_ID] = this.sysId;
},
_setReferenceTableLink: function(result, referenceTable) {
var referenceTableLink = {};
referenceTableLink[RFConstants.pillPickerVars.REFERENCE] = referenceTable;
referenceTableLink[RFConstants.pillPickerVars.LINK] = RFConstants.pillPickerVars.BASE_REFERENCE_LINK + referenceTable;
referenceTableLink[RFConstants.pillPickerVars.REFERENCE_DISPLAY_FIELD] = referenceTable;
result[RFConstants.pillPickerVars.DOT] = referenceTableLink;
},
_getTableDisplayValue: function(tableName) {
return new GlideRecord(tableName).getClassDisplayValue();
},
type: 'RFPillPickerUtils'
};
Sys ID
bbb9695b53033010e530ddeeff7b1205