Name

global.AgileBoardVTBHelper

Description

No description available

Script

var AgileBoardVTBHelper = Class.create();
AgileBoardVTBHelper.prototype = {
  initialize: function() {
  },
  
  getBoardConfiguration: function(config, owner) {
  	var vtbBoard = GlideVTBBoardBuilder.guided(config.tableName, config.laneField)
  	.withOwner(owner)
  	.withFilter(config.filter)
  	.withName(config.name)
  	.withExcludeChildTableLanes(true);
  	
  	
  	if (JSUtil.notNil(config.swimLaneField))
  		vtbBoard.withSwimLaneField(config.swimLaneField)
  				.withSwimLaneFilter(config.swimLaneFilter);
  	
  	if (!gs.nil(config.showEmptyLane))
  		vtbBoard.showEmptyValueLane();
  	if (!gs.nil(config.laneFilter))
  		vtbBoard.withLaneFilter(config.laneFilter);
  	
  	return vtbBoard;
  },
  
  createBoard: function(config, owner) {
  	var vtbBoard = this.getBoardConfiguration(config, owner);
  	
  	if(config.hidePicker)
  		vtbBoard.hideBoardPicker();
  	
  	for(var i = 0; i< config.members.length;i++) {
  		vtbBoard.addMember(config.members[i]);
  	}
  	var boardId = vtbBoard.create();
  	return boardId;
  },
  
  getSysChoices : function(tableName, column) {
  	var choices = new GlideSysChoice(tableName, column);
  	var recChoices = choices.getChoices();
  	return recChoices;
  },
  
  trimBoardNameForGroup: function(groupName) {
  	var name = gs.getMessage("{0}: {1}", [groupName, 'Current Sprint']);
  	return this.trimBoardName(name);
  },
  
  trimBoardName: function(name) {
  	var tableDescriptor = new GlideTableDescriptor('vtb_board');
  	var elementDecriptor = tableDescriptor.getElementDescriptor('name');
  	var maxLength = elementDecriptor.getLength();
  	if(maxLength < name.length) {
  		name = name.substring(0, maxLength - 3) + '...';
  	}
  	return name;
  },
  
  findBoardOwner: function(groupId, members, roleNames) {
  	if(members.length === 0)
  		return gs.getUserID();
  	
  	for (var j = 0; j < roleNames.length; j++) {
  		if(gs.hasRole(roleNames[j]))
  			return gs.getUserID();
  	}
  	
  	var roleMap = {};
  	
  	var roleGr = new GlideRecord('sys_user_role');
  	roleGr.addQuery('name', 'IN', roleNames.join(','));
  	roleGr.query();
  	while(roleGr.next()){
  		roleMap[roleGr.getValue('name')] = roleGr.getValue('sys_id');
  	}
  	
  	for(var i = 0; i < roleNames.length; i++) {
  		var member = this._findRoleMember(roleNames[i], members, roleMap);
  		if(JSUtil.notNil(member))
  			return member;
  	}
  	return members[0];
  },
  
  _findRoleMember: function(role, members, roleMap) {
  	var member = new GlideRecord("sys_user_has_role");
  	member.orderBy('user');
  	member.addQuery('user', 'IN', members.join(','));
  	member.addQuery('role', roleMap[role]);
  	member.setLimit(1);
  	member.query();
  	if(member.next()) {
  		return member.user;
  	}
  	return null;
  },
  
  type: 'AgileBoardVTBHelper'
};

AgileBoardVTBHelper.isGroupMember = function(groupId, userId) {
  var gr = new GlideRecord('sys_user_grmember');
  gr.addQuery('group', groupId);
  gr.addQuery('user', userId);
  gr.query();
  return (gr.hasNext());
};

Sys ID

22793aa55b20130036c32c1cf0f91af0

Offical Documentation

Official Docs: