Name
global.cxs_WizardConfig
Description
Creates and configures fields that have contextual search attached.
Script
var cxs_WizardConfig = Class.create();
cxs_WizardConfig.prototype = {
EXCLUDE_FIELDS_FROM_OBJECT: {
"sys_created_by": true,
"sys_created_on": true,
"sys_domain": true,
"sys_mod_count": true,
"sys_updated_by": true,
"sys_updated_on": true,
"sys_package": true,
"sys_update_name": true
},
WIZARD_MACRO: "cxs_wizard_search",
initialize: function(gr) {
this._gr = gr;
this._gru = new GlideRecordUtil();
},
setName: function(configName) {
if (!this._gr || !this._gr.getUniqueValue())
return false;
if (configName) {
this._gr.name = configName;
return true;
}
this._gr.name = this._gr.expert.getDisplayValue();
return true;
},
isDuplicate: function() {
if (!this._gr)
return false;
// If this record is being updated and sc_cat_item has not changed
// we don't need to check if we're creating a duplicate
if (!this._gr.isNewRecord() && (!this._gr.expert.changes() && !this._gr.active.changes()))
return false;
// Search for an existing record that matches the one we're trying to create/update
var wizardConfigGr = new GlideRecord("cxs_wizard_config");
wizardConfigGr.addQuery("sys_id", "!=", this._gr.getUniqueValue());
wizardConfigGr.addQuery("expert", this._gr.expert);
wizardConfigGr.addActiveQuery();
wizardConfigGr.query();
return wizardConfigGr.hasNext();
},
getWizardVariableIds: function() {
var sysIds = [];
if (!this._gr)
return sysIds;
var wizardId = this._gr.expert + "";
if (!wizardId)
return sysIds;
var wizardGr = new GlideRecord("expert");
if (!wizardGr.get(wizardId))
return sysIds;
var searchableTypes = new cxs_WizardVarTypes().getTypeMap();
var varsGr = new GlideRecord("expert_variable");
varsGr.addQuery('expert',wizardId);
varsGr.query();
while (varsGr.next())
if (searchableTypes[varsGr.type])
sysIds.push(varsGr.getUniqueValue());
return sysIds;
},
getWizardConfigObject: function() {
var wizardConfig = {};
this._gru.populateFromGR(wizardConfig, this._gr, this.EXCLUDE_FIELDS_FROM_OBJECT);
wizardConfig.resultsHeaderText = this._gr.getDisplayValue("results_header_text");
wizardConfig.configURL = this._gr.getLink(true);
wizardConfig.configDisplayValue = this._gr.getDisplayValue();
wizardConfig.search_field = {};
this._gru.populateFromGR(wizardConfig.search_field, this._gr.search_variable.getRefRecord(), this.EXCLUDE_FIELDS_FROM_OBJECT);
return wizardConfig;
},
isOnWizard: function() {
var varGr = new GlideRecord("expert_variable");
varGr.addQuery("expert", this._gr.expert);
varGr.addQuery("macro.name", this.WIZARD_MACRO);
varGr.query();
return varGr.hasNext();
},
addToWizard: function() {
if (this.isOnWizard())
return false;
var varGr = new GlideRecord("expert_variable");
varGr.type = 14 // Macro;
varGr.expert = this._gr.expert;
varGr.macro.setDisplayValue(this.WIZARD_MACRO);
varGr.question_text = "Contextual Search Results";
varGr.name = "contextual_search_results";
varGr.insert();
this.addToWizardPanel(varGr);
return true;
},
addToWizardPanel: function(exp_var) {
var varGr = new GlideRecord('expert_panel_variable');
varGr.addQuery('expert_variable',this._gr.search_variable);
varGr.addQuery('expert_panel.expert',this._gr.expert);
varGr.query();
if (varGr.next()) {
var varPan = new GlideRecord('expert_panel_variable');
varPan.expert_panel = varGr.expert_panel;
varPan.expert_variable = exp_var.getUniqueValue();
varPan.order = varGr.order + 1;
varPan.insert();
}
return true;
},
removeFromWizard: function() {
if (!this.isOnWizard())
return false;
var varGr = new GlideRecord("expert_variable");
varGr.addQuery("expert", this._gr.expert);
varGr.addQuery("macro.name", this.WIZARD_MACRO);
varGr.query();
if (varGr.next()) {
this.removeFromWizardPanel(varGr);
return varGr.deleteRecord();
}
return false;
},
removeFromWizardPanel: function(exp_var) {
var varGr = new GlideRecord('expert_panel_variable');
varGr.addQuery('expert_variable', exp_var.getUniqueValue());
varGr.addQuery('expert_panel.expert',this._gr.expert);
varGr.query();
if (varGr.next())
return varGr.deleteRecord();
return false;
},
type: 'cxs_WizardConfig'
}
Sys ID
36c27631ef132100438236caa5c0fbe9