Name

global.ProjectTopTaskValidator

Description

Top Task Validator for Project Management Diagnosis

Script

var ProjectTopTaskValidator = Class.create();
ProjectTopTaskValidator.prototype = {
  initialize: function(projectData) {
  	this.projectData = projectData;
  	this.invalidTasksUnderThisTopTask = [];
  	this.tasksWithInvalidTopPortfolio = [];
  	this.tasksWithInvalidTopProgram = [];
  	this.validateThisTopTasksChildren();
  	this.tasksWithInvalidTopPortfolio = [];
  	this.validateTopPortfolio();
  	this.tasksWithInvalidTopProgram = [];
  	this.validateTopProgram();
  },
  
  validateThisTopTasksChildren: function() {
  	var tasks = this.projectData.getTasks();
  	var taskSysIdes = tasks['sys_ids'];
  	var topTaskId = this.projectData.getTopTaskId();
  	for (var i = 0; i < taskSysIdes.length; i++) {
  		if(tasks[taskSysIdes[i]].top_task != topTaskId) {
  			this.invalidTasksUnderThisTopTask.push(tasks[taskSysIdes[i]]);
  		}
  	}
  },
  
  validateTopPortfolio: function() {
  	var tasks = this.projectData.getTasks();
  	var taskSysIdes = tasks['sys_ids'];
  	var topPortfolioId = this.projectData.getTopPortfolioId();
  	for (var i = 0; i < taskSysIdes.length; i++) {
  		if(tasks[taskSysIdes[i]].top_portfolio != topPortfolioId) {
  			this.tasksWithInvalidTopPortfolio.push(tasks[taskSysIdes[i]]);
  		}
  	}
  },
  
  validateTopProgram: function() {
  	var tasks = this.projectData.getTasks();
  	var taskSysIdes = tasks['sys_ids'];
  	var topProgramId = this.projectData.getTopProgramId();
  	for (var i = 0; i < taskSysIdes.length; i++) {
  		if(tasks[taskSysIdes[i]].top_program != topProgramId) {
  			this.tasksWithInvalidTopProgram.push(tasks[taskSysIdes[i]]);
  		}
  	}
  },
  
  isTopTaskValid: function() {
  	var topTaskId = this.projectData.getTopTaskId();
  	var topTask = this.projectData.getTasks()[topTaskId];
  	if ( JSUtil.nil(topTask.parent) )
  		return true;
  	else
  		return false;
  },
  
  getInvalidTasksForThisTopTasks: function() {
  	return this.invalidTasksUnderThisTopTask;
  },
  
  getTasksWithInvalidTopPortfolio: function() {
  	return this.tasksWithInvalidTopPortfolio;
  },
  
  getTasksWithInvalidTopProgram: function() {
  	return this.tasksWithInvalidTopProgram;
  },
  
  invalidTasksPresent: function() {
  	if ( this.invalidTasksUnderThisTopTask.length > 0 )
  		return true;
  	else
  		return false;
  },
  
  tasksWithInvalidTopPortfolioPresent: function() {
  	if ( this.tasksWithInvalidTopPortfolio.length > 0 )
  		return true;
  	else
  		return false;
  },
  
  tasksWithInvalidTopProgramPresent: function() {
  	if ( this.tasksWithInvalidTopProgram.length > 0 )
  		return true;
  	else
  		return false;
  },
  
  type: 'ProjectTopTaskValidator'
};

Sys ID

c83e498f9f31220088265bb0657fcf90

Offical Documentation

Official Docs: