Name

global.TaskPlanningBoardService

Description

No description available

Script

var TaskPlanningBoardService = Class.create();
TaskPlanningBoardService.prototype = {
  initialize: function(gRequest) {
  	this.gRequest = gRequest;
  	this.assignmentGroupId = gRequest.getParameter("sysparm_assignment_group_id");
  	this.filterSearchKey = gRequest.getParameter("sysparm_search_key");
  	this.filterPageLimit = parseInt(gRequest.getParameter('sysparm_page_limit'));
  	this.filterPageNumber = parseInt(gRequest.getParameter('sysparm_page_number'));
  },
  
  getAssignmentGroups: function(){
  	var glideRecord = new GlideRecord('sys_user_group');
  	glideRecord.addNotNullQuery('sys_id');
  	glideRecord.addQuery("type",'CONTAINS',"1bff3b1493030200ea933007f67ffb6d"); //Agile Team
  	glideRecord = this._addFilterPageCondition(glideRecord, 'name');
  	glideRecord.query();
  	return this._encodeFilterReturnDataForAssignmentGroup(glideRecord,'sys_id','name');
  },
  
  getSprintsByAssignmentGroup: function(){
  	var glideRecord = new GlideRecord('rm_sprint');
  	glideRecord.addNotNullQuery('sys_id');
  	glideRecord.addQuery('assignment_group',this.assignmentGroupId);
  	glideRecord = this._addFilterPageCondition(glideRecord, 'short_description');
  	glideRecord.query();
  	return this._encodeFilterReturnData(glideRecord,'sys_id','short_description');
  },
  
  _addFilterPageCondition: function(glideRecord, searchField) {
  	if (this.filterSearchKey)
  		glideRecord.addQuery(searchField,'CONTAINS',this.filterSearchKey);
  	if (this.filterPageLimit && this.filterPageNumber)
  		glideRecord.chooseWindow((this.filterPageNumber - 1)*this.filterPageLimit, this.filterPageNumber*this.filterPageLimit);
  	glideRecord.orderBy(searchField);
  	return glideRecord;
  },
  
  _encodeFilterReturnDataForAssignmentGroup: function(glideRecord, idField, displayField) {
  	var data = [];
  	while(glideRecord.next()) {
  		var d = {};
  		d.id = glideRecord.getValue(idField);
  		d.text = glideRecord[displayField].getDisplayValue();
  		var sprint = new GlideRecord('rm_sprint');
  		sprint.addNotNullQuery('sys_id');
  		sprint.addQuery('assignment_group',d.id);
  		sprint.addQuery('state',"2"); // 'Current' status
  		sprint.orderBy('start_date');
  		sprint.query();
  		if(sprint.next()){
  			d.sprintId = sprint.getValue('sys_id');
  			d.sprintText = sprint.getValue('short_description');
  		}
  		else{
  			sprint = new GlideRecord('rm_sprint');
  			sprint.addNotNullQuery('sys_id');
  			sprint.addQuery('assignment_group',d.id);
  			sprint.addQuery('active','true');
  			sprint.orderBy('start_date');
  			sprint.query();
  			if(sprint.next()){
  				d.sprintId = sprint.getValue('sys_id');
  				d.sprintText = sprint.getValue('short_description');
  			}
  		}
  		data.push(d);
  	}
  	var count = glideRecord.getRowCount();
  	return (new JSON()).encode({
  		data: data,
  		total: count
  	});	
  },
  
  _encodeFilterReturnData: function(glideRecord, idField, displayField) {
  	var data = [];
  	while(glideRecord.next()) {
  		var d = {};
  		d.id = glideRecord.getValue(idField);
  		d.text = glideRecord[displayField].getDisplayValue();
  		data.push(d);
  	}
  	var count = glideRecord.getRowCount();
  	return (new JSON()).encode({
  		data: data,
  		total: count,
  		searchKey : this.filterSearchKey
  	});	
  },
  type: 'TaskPlanningBoardService'
};

Sys ID

a90ad4c60bbe2200d3fced3ab4673a98

Offical Documentation

Official Docs: