Name

global.ProjectRelationsValidator

Description

Project Relations Validator for Project Diagnosis

Script

var ProjectRelationsValidator = Class.create();
ProjectRelationsValidator.prototype = {
initialize: function(projectData) {
  this.projectData = projectData;
  this.invalidRelations = [];
  this.validateInvalidRelations();
},

validateInvalidRelations: function() {
  var arrayUtil = new ArrayUtil();
  var tasks = this.projectData.getTasks();
  var taskSysIdes = tasks['sys_ids'];
  var relations = this.projectData.getRelations();
  var relationSysIdes = relations['sys_ids'];
  for (var i = 0; i < relationSysIdes.length; i++) {
      var relation = relations[relationSysIdes[i]];
      if( JSUtil.nil(relation.parent) ) {
          relation.message = 'Empty predecessor';
          this.invalidRelations.push(relation);
      } else if(JSUtil.nil(relation.child)) {
          relation.message = 'Empty successor';
          this.invalidRelations.push(relation);
      } else {
          if(!arrayUtil.contains(taskSysIdes, relation.parent)) {
              relation.message = 'Invalid predecessor';
              this.invalidRelations.push(relation);
          } else if(!arrayUtil.contains(taskSysIdes, relation.child)) {
              relation.message = 'Invalid successor';
              this.invalidRelations.push(relation);
          } else if(relation.parent == relation.child) {
              relation.message = 'Cyclic Relation';
              this.invalidRelations.push(relation);
          } else if(JSUtil.nil(relation.sub_type)) {
              relation.message = 'Invalid Sub Type';
              this.invalidRelations.push(relation);
          }
      }
  }
},

getInvalidRelations: function() {
  return this.invalidRelations;
},
  
hasInvalidRelations: function() {
    if ( this.invalidRelations.length == 0 )
  	  return false;
    else
  	  return true;
},

type: 'ProjectRelationsValidator'
};

Sys ID

73f731db9f35220088265bb0657fcf70

Offical Documentation

Official Docs: