Name

sn_chg_soc.SoC

Description

Change Schedules base class

Script

var SoC = Class.create();

SoC.CHANGE_REQUEST = "change_request";
SoC.DEFINITION = "chg_soc_definition";
SoC.DEFINITION_CHILD = "chg_soc_definition_child";
SoC.STYLE_RULE = "chg_soc_style_rule";
SoC.DEFINITION_STYLE_RULE = "chg_soc_definition_style_rule";
SoC.DEFINITION_CHILD_STYLE_RULE = "chg_soc_def_child_style_rule";
SoC.EVENT_COLOR = "event_color";
SoC.NAME = "name";
SoC.TABLE_NAME = "table_name";
SoC.CONDITION = "condition";
SoC.ORDER = "order";
SoC.ORDERBY = "ORDERBY";
SoC.PINNED = "pinned";
SoC.OWN_BELONG = "own_belong";
SoC.OWNER = "owner";
SoC.GROUP_OWNER = "group_owner";
SoC.USER = "user";
SoC.LIMIT = parseInt(gs.getProperty("sn_chg_soc.change_soc_scroll_load_limit", "20"), 10);
SoC.LANDING_MIN_LIMIT = 40;
SoC.LANDING_LIMIT = parseInt(gs.getProperty("sn_chg_soc.landing_page.schedule_limit", "40"), 10);
SoC.LANDING_MAX_SCHEDULES = parseInt(gs.getProperty("sn_chg_soc.landing_page.max_schedules", "300"), 10);
SoC.PROP_SUGGESTION_LIMIT  = "sn_chg_soc.max_suggestions.type.limit";
SoC.SUGGESTION_LIMIT = 10;
SoC.SYS_USER = "sys_user";
SoC.GROUP = "sys_user_group";
SoC.ROLE = "sys_user_role";

SoC.DEFAULT_EVENT_COLOR = "#278EFC";
SoC.DEFAULT_ORDER = 1000000;

SoC.LOG_PROP = "com.snc.change_management.soc.log";

SoC.DATE_ELEMENT_TYPE = {
  "glide_date_time": true,
  "glide_date": true,
  "due_date": true,
  "date": true,
  "datetime": true
};

SoC.JS_EXCLUDE = {
  "sys_scope" : true,
  "sys_replace_on_upgrade" : true,
  "sys_policy" : true,
  "sys_package" : true,
  "sys_customer_update" : true,
  "sys_update_name" : true,
  "sys_mod_count" : true
};

SoC.JS_INCLUDE = {
  "cmdb_ci": true,
  "number": true,
  "short_description": true,
  "sys_class_name": true,
  "sys_id": true
};

SoC.prototype = {
  initialize: function(_gr,_gs) {
  	this._gr = _gr || current;
  	this._gs = _gs || gs;
  	this._log = new global.GSLog(SoC.LOG_PROP, this.type).setLog4J();
  },

  /**
   * Converts a i18n'd GlideRecord to a JS object taking into account credentials
   */
  toJS: function() {
  	return this._toJS(this._gr);
  },

  _toJS: function(_gr, requiredFields) {
  	if (typeof _gr === "undefined" || !_gr.canRead())
  		return null;

  	var obj = {};
  	var el = _gr.getElements();
  	for (var i = 0; i < el.length; i++) {
  		var elName = el[i].getName() + "";

  		if (this._ignoreElement(el[i], elName, requiredFields))
  			continue;

  		this._toJSAddToObject(_gr, el[i], elName, obj);
  	}

  	return obj;
  },

  _toJSFields: function(_gr, requiredFields) {
  	if (typeof _gr === "undefined" || !_gr.canRead())
  		return null;

  	var obj = {};

  	for (var elName in requiredFields) {
  		var el = _gr.getElement(elName);

  		if (null === el || null === el.toString() || this._ignoreElement(el, elName, requiredFields))
  			continue;

  		this._toJSAddToObject(_gr, el, elName, obj);
  	}

  	return obj;
  },

  _toJSAddToObject: function(_gr, el, elName, obj) {
  	var fieldType = el.getED().getInternalType() + "";
  	var fieldValue = el.toString();

  	fieldValue = this._correctFieldValue(fieldType, fieldValue);
  	fieldDisplayValue = GlideStringUtil.escapeHTML(el.getDisplayValue());

  	obj[elName] = {
  		'display_value' : fieldDisplayValue,
  		'value' : fieldValue
  	};

  	//Augment object for date types
  	if (SoC.DATE_ELEMENT_TYPE[fieldType]) {
  		gdt = new GlideDateTime();
  		gdt.setValue(el.toString());
  		obj[elName].display_value_internal = gdt.getDisplayValueInternal();
  	}

  	// Security
  	obj.__security = {
  		canCreate: _gr.canCreate(),
  		canRead: _gr.canRead(),
  		canWrite: _gr.canWrite(),
  		canDelete: _gr.canDelete()
  	};

  	return obj;
  },

  metadataJS: function() {
  	return this._metadataJS(this._gr);
  },

  _metadataJS: function(_gr) {
  	if (typeof _gr === "undefined" || !_gr.canRead())
  		return null;

  	var obj = {};
  	obj.__label = _gr.getLabel();
  	var tableName = _gr.getTableName();
  	var el = _gr.getElements();
  	for (var i = 0; i < el.length; i++) {
  		var elem = el[i];
  		var elName = elem.getName() + "";

  		if (!el[i].canRead() || SoC.JS_EXCLUDE[elName])
  			continue;

  		this._metadataJSAddToObject(elem, elName, obj, tableName);
  	}

  	return obj;
  },

  _metadataJSFields: function(_gr, requiredFields) {
  	if (typeof _gr === "undefined" || !_gr.canRead())
  		return null;

  	var obj = {};
  	obj.__label = _gr.getLabel();
  	var tableName = _gr.getTableName();

  	for (var elName in requiredFields) {
  		var elem = _gr.getElement(elName);

  		if (null === elem || null === elem.toString() || !elem.canRead() || SoC.JS_EXCLUDE[elName])
  			continue;

  		this._metadataJSAddToObject(elem, elName, obj, tableName);
  	}

  	return obj;
  },

  _metadataJSAddToObject: function(elem, elName, obj, tableName) {
  	obj[elName] = {
  		"column_name" : elName,
  		"label" : elem.getLabel(),
  		"field_type" : elem.getED().getInternalType()
  	};

  	return obj;
  },

  _ignoreElement: function(el, elName, requiredFields) {
  	return (requiredFields && !requiredFields[elName]) || SoC.JS_EXCLUDE[elName] || !el.canRead();
  },

  _correctFieldValue: function(fieldType, fieldValue) {
  	if (fieldType === "boolean")
  		fieldValue = fieldValue === "true" ? true : false;
  	else if (fieldType === "integer" || fieldType === "decimal")
  		fieldValue = !fieldValue ? fieldValue : fieldValue - 0;
  	else
  		return GlideStringUtil.escapeHTML(fieldValue);
  	return fieldValue;
  },

  type: 'SoC'
};

Sys ID

0d38e7a557230300b41069202d94f9c7

Offical Documentation

Official Docs: