Name

global.SkillsCategoryTreeBuilder

Description

No description available

Script

var SkillsCategoryTreeBuilder = Class.create();
SkillsCategoryTreeBuilder.prototype = Object.extendsObject(AbstractAjaxProcessor, {

  getChildCategories: function() {
  	var id = this.getParameter('category_id');
  	var expanded_nodes = this.getParameter('expanded_nodes');
  	var expanded_nodes_arr = expanded_nodes.split(',');
  	var expanded_nodes_map = {};
  	
  	for (var e_node in expanded_nodes_arr) {
  		expanded_nodes_map[expanded_nodes_arr[e_node]] = true;
  	}
  	var gr = new GlideRecord('cmn_skill_category');
  	gr.addQuery('parent', id);
  	gr.orderBy('code');
  	gr.query();
  	
  	var categoryItems = [];
  	var childrenCounts = {};
  	
  	while(gr.next()) {
  		var categoryItem = {};
  		categoryItem.sys_id = gr.getValue('sys_id');
  		categoryItem.label = gr.getValue('name');
  		categoryItems.push(categoryItem);
  		childrenCounts[gr.getValue('sys_id')] = -1;
  	}
  			
  	var countgr = new GlideAggregate('cmn_skill_category');
  	countgr.addAggregate('COUNT', 'parent');
  	countgr.addQuery('parent', 'IN', Object.keys(childrenCounts).join());
  	countgr.query();
  	
  	while(countgr.next()) {
  		childrenCounts[countgr.getValue('parent')] = countgr.getAggregate('COUNT', 'parent');
  	}
  	
  	for(var i = 0; i < categoryItems.length; i++) {
  		this._getChildCategories(categoryItems[i], childrenCounts);
  	}
  },
  
  _getChildCategories: function(categoryItem, childrenCounts) {
  	item = this.newItem();
  	item.setAttribute('sys_id',  categoryItem.sys_id);
  	item.setAttribute('label', categoryItem.label);
  	item.setAttribute('has_children', childrenCounts[categoryItem.sys_id] > 0);
  },

  type: 'SkillsCategoryTreeBuilder'
});

Sys ID

dd35a312b3b723001e18a7e4c6a8dc81

Offical Documentation

Official Docs: