Name

global.sc_ic_Section

Description

Wrapper class for Item Creator question layout sections

Script

var sc_ic_Section = Class.create();
sc_ic_Section.prototype = Object.extendsObject(sc_ic_Base, {
  initialize: function(_gr,_gs) {
  	sc_ic_Base.prototype.initialize.call(this,_gr,_gs);

  	this._defnChgFld = {
  		"index": true,
  		"label":true
  	};
  },
  
  sectionChanged: function() {
  	for (var key in this._defnChgFld)
  		if (this._defnChgFld[key] && this._gr[key].changes()) {
  			this._log.debug("[sectionChanged] Section has changed");
  			return true;
  		}
  	
  	return false;
  },

  setLayoutChangedOnItem: function() {
  	var iGr = new GlideRecord(sc_ic.ITEM_STAGING);
  	if (iGr.get(this._gr[sc_ic.ITEM_STAGING])) {
  		this._log.debug("[setLayoutChangedOnItem] Changed Item " + this._gr[sc_ic.ITEM_STAGING]);
  		sc_ic_Factory.wrap(iGr).layoutChanged();
  	}
  },
  
  createDefaultColumns: function() {
  	var columnGr = new GlideRecord(sc_ic.COLUMN);
  	columnGr[sc_ic.SECTION] = this._gr.getUniqueValue();
  	columnGr.name = "Left column";
  	columnGr[sc_ic.INDEX] = 0;
  	columnGr.insert();
  		
  	columnGr.initialize();
  	columnGr[sc_ic.SECTION] = this._gr.getUniqueValue();
  	columnGr.name = "Right column";
  	columnGr[sc_ic.INDEX] = 1;
  	columnGr.insert();
  },
  
  isDuplicate: function() {
  	if (JSUtil.nil(this._gr[sc_ic.ITEM_STAGING]) || JSUtil.nil(this._gr[sc_ic.INDEX]))
  		return false;
  	
  	var sectionGr = new GlideRecord(sc_ic.SECTION);
  	sectionGr.addQuery(sc_ic.ITEM_STAGING, this._gr[sc_ic.ITEM_STAGING]);
  	sectionGr.addQuery(sc_ic.INDEX, this._gr[sc_ic.INDEX]);
  	sectionGr.query();
  			
  	if (sectionGr.hasNext())
  		return true;
  	
  	return false;
  },
  
  getNextQuestionOrderNumber: function() {
  	var questionGr = new GlideAggregate(sc_ic.QUESTION);
  	questionGr.addAggregate("MAX", "order");
  	questionGr.addNotNullQuery("order");
  	questionGr.addQuery(sc_ic.SECTION, this._gr.getUniqueValue());
  	questionGr.groupBy(sc_ic.SECTION);
  	questionGr.query();
  
  	if (questionGr.next()) {
  		return "" + (1 + parseInt(questionGr.getAggregate("MAX", "order"), 10));
  	}
  
  	return 1;
  },
  
  isProducerServiceItem: function() {
  	return JSUtil.nil(this._gr[sc_ic.ITEM_STAGING][sc_ic.ITEM_TYPE]) || this._gr[sc_ic.ITEM_STAGING][sc_ic.ITEM_TYPE] == "sc_cat_item_producer_service";	
  },
  
  isUsedByQuestions: function() {
  	var questionGr = new GlideAggregate(sc_ic.QUESTION);
  	questionGr.addQuery(sc_ic.SECTION, this._gr.getUniqueValue());
  	questionGr.addAggregate("COUNT");
  	questionGr.query();
  	
  	if (questionGr.next() & questionGr.getAggregate("COUNT") > 0)
  		return true;
  		
  	return false;
  },

  type: 'sc_ic_Section'
});

sc_ic_Section.getNextPosition = function(itemSysId, returnDisplayValue) {
  var nextPosition = (returnDisplayValue ? 1 : 0);

  if (JSUtil.nil(itemSysId))
  	return nextPosition;
  
  var sectionGr = new GlideAggregate(sc_ic.SECTION);
  sectionGr.addAggregate("MAX", "index");
  sectionGr.addQuery(sc_ic.ITEM_STAGING, itemSysId);
  sectionGr.groupBy(sc_ic.ITEM_STAGING);
  sectionGr.query();
  
  if (sectionGr.next()) {
  	return "" + (nextPosition + 1 + parseInt(sectionGr.getAggregate("MAX", "index"), 10));
  }
  
  return nextPosition;
};

Sys ID

0582ee58c33111003d2ae219cdba8fa8

Offical Documentation

Official Docs: