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