Name

sn_sla_brkdwn.SLABreakdownDefinitionSourceFieldSNC

Description

No description available

Script

var SLABreakdownDefinitionSourceFieldSNC = Class.create();
SLABreakdownDefinitionSourceFieldSNC.prototype = {
  HANDLER_SUFFIX: "Handler",

  initialize: function() {
  },

  process: function(tableName, currentTableName, fieldNameData) {
  	var fieldNames = [];

  	if (!fieldNameData)
  		return fieldNames;

  	fieldNameData = new global.JSON().decode(fieldNameData);

  	if (!fieldNameData.sourceTable ||
  		!fieldNameData.breakdownTable ||
  		!fieldNameData.formBreakdownField)
  		return fieldNames;

  	return this.getSourceFields(fieldNameData.sourceTable,
  								 fieldNameData.breakdownTable,
  								 fieldNameData.formBreakdownField);
  },

  getSourceFields: function(sourceTable, targetTable, targetField) {
  	var fieldNames = [];

  	var sourceTableGr = new GlideRecord(sourceTable);
  	var targetTableGr = new GlideRecord(targetTable);

  	var sourceTableDescriptor = sourceTableGr.getED();

  	var targetTableDescriptor = targetTableGr.getED();
  	if (!gs.tableExists(targetTable))
  		return fieldNames;

  	var targetElementDescriptor = targetTableGr.getElement(targetField).getED();
  	if (targetElementDescriptor === null)
  		return fieldNames;

  	var elementType = targetElementDescriptor.getInternalType();

  	var handlerFunction = this["_" + elementType + this.HANDLER_SUFFIX];

  	if (typeof handlerFunction !== "function")
  		return fieldNames;

  	return handlerFunction(sourceTableDescriptor, targetElementDescriptor);
  },

  _referenceHandler: function(sourceTableDescriptor, targetElementDescriptor) {
  	var fieldNames = [];

  	if (!sourceTableDescriptor || !targetElementDescriptor)
  		return fieldNames;

  	var referenceTable = targetElementDescriptor.getReference();
  	if (!referenceTable)
  		return fieldNames;

  	var referenceTables = new GlideTableHierarchy(referenceTable).getAllExtensions();

  	var sourceElements = new GlideRecord(sourceTableDescriptor.getName()).getElements();
  	var sourceElementDescriptor;

  	for (var i = 0, n = sourceElements.length; i < n; i++) {
  		sourceElementDescriptor = sourceElements[i].getED();
  		if (sourceElementDescriptor.getInternalType() + "" !== "reference")
  			continue;

  		if (referenceTables.indexOf("" + sourceElementDescriptor.getReference()) < 0)
  			continue;

  		fieldNames.push(sourceElementDescriptor.getName());
  	}

  	return fieldNames;
  },

  _integerHandler: function(sourceTableDescriptor, targetElementDescriptor) {
  	var fieldNames = [];

  	if (!sourceTableDescriptor || !targetElementDescriptor)
  		return fieldNames;

  	var sourceElements = new GlideRecord(sourceTableDescriptor.getName()).getElements();
  	var sourceElementDescriptor;

  	for (var i = 0, n = sourceElements.length; i < n; i++) {
  		sourceElementDescriptor = sourceElements[i].getED();
  		if (sourceElementDescriptor.getInternalType() + "" !== "integer")
  			continue;

  		fieldNames.push(sourceElementDescriptor.getName());
  	}

  	return fieldNames;
  },

  type: 'SLABreakdownDefinitionSourceFieldSNC'
};

Sys ID

64e64216b1670300964f70364e00874e

Offical Documentation

Official Docs: