Name

global.ConditionUtilsAjax

Description

AJAX utilities for parsing queries into human readable format

Script

var ConditionUtilsAjax = Class.create();
ConditionUtilsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  getQueryDisplay: function() {
  	var query = this.getParameter('sysparm_query');
  	var tableName = this.getParameter('sysparm_table_name');
  	var info = (new SNC.ConditionUtils()).getQueryTerms(query, tableName);
  	info = (new JSONParser()).parse(info);
  	var queryDisplay = info.queryDisplay;
  	var item = this.newItem('result');
  	item.setAttribute('queryDisplay', queryDisplay);
  },
  
  getRelationshipQueryDisplay: function() {
  	var query = this.getParameter('sysparm_query');
  	var relTypeTable = this.getParameter('sysparm_rel_type_table');
  	var relTargetTable = this.getParameter('sysparm_rel_target_table');
  	var info = (new SNC.ConditionUtils()).getRelationshipQueryTerms(query, relTypeTable, relTargetTable);
  	info = (new JSONParser()).parse(info);
  	var queryDisplay = info.queryDisplay;
  	var item = this.newItem('result');
  	item.setAttribute('queryDisplay', queryDisplay);
  },

  validateField: function () {
  	var table_name = this.getParameter('sysparm_table_name');
  	var field = this.getParameter('sysparm_field');
  	var gr = new GlideRecordSecure(table_name);
  	var valid = gr.canRead() && gr.getElement(field) != null;
  	var item = this.newItem('result');
  	item.setAttribute('valid', valid);
  },

  // copied from AddRelationshipAjax to use Relationship related lists
  getRelatedLists: function() {
  	var dependentTable = this.getParameter('sysparm_dependent_table');
  	var gr = new GlideRecordSecure(dependentTable);
  	if (!gr.canRead()) {
  		var result = this.newItem("result");
  		result.setAttribute("relatedList", {});
  		return result;
  	}
  	var map = gr.getRelatedLists();
  	var iterator = map.keySet().iterator();
  	var relatedListsArry = new Array();
  	var relatedLists = {};

  	while (iterator.hasNext()) {
  		var key = iterator.next();
  		relatedListsArry.push({
  			'key': key,
  			'label': map.get(key)
  		});
  	}

  	// add customized relationships
  	// code hinted from SlushbucketRelatedList.get
  	var cls = new GlideChoiceListSet();
  	var util = new GlideRelationshipUtil();
  	util.addChoices(dependentTable, cls);
  	var iterChoice = cls.getColumns().iterator();
  	while (iterChoice.hasNext()) {
  	    var choice = iterChoice.next();
  	    relatedListsArry.push({
  			'key': choice.getValue(),
  			'label': choice.getLabel()
  	    });
  	}

  	// sort by label
  	relatedListsArry.sort(function(objA, objB) {
  		if (objA.label < objB.label)
  			return -1;
  		else if (objA.label == objB.label)
  			return 0;
  		else
  			return 1;
  	});

  	relatedLists['relatedLists'] = relatedListsArry;

  	var json = new JSON();

  	var result = this.newItem("result");
  	result.setAttribute("relatedList", json.encode(relatedLists));
  },

  type: 'ConditionUtilsAjax'
});

Sys ID

a46e6961df733000cd7da5f59bf26321

Offical Documentation

Official Docs: