Name
global.ScrumUtils
Description
Provides a range of services which can be used by the Scrum application.
Script
var ScrumUtils = Class.create();
ScrumUtils.getSprints = function () {
var refQual = "sys_class_nameINrm_sprint";
if (current.release) {
refQual += "^parent=";
refQual += current.getValue('release');
}
return refQual;
};
ScrumUtils.getReleaseDotPoints = function (strReleaseSysId) {
var cancelledStates = new ScrumStatesUtil('rm_story').getCancelledStates();
var recRmStory = new GlideAggregate("rm_story");
recRmStory.addQuery("release", strReleaseSysId);
recRmStory.addQuery("state", "NOT IN", cancelledStates).addOrCondition("state", "NULL");
recRmStory.addAggregate("SUM", "story_points");
recRmStory.setGroup(false);
recRmStory.query ();
return recRmStory.next() ? recRmStory.getAggregate("SUM", "story_points") : 0;
};
ScrumUtils.getSprintDotActualPoints = function (strSprintSysId) {
var completedStates = new ScrumStatesUtil('rm_story').getCompletedStates();
var recRmStory = new GlideAggregate("rm_story");
recRmStory.addQuery("sprint", strSprintSysId);
recRmStory.addQuery("state", "IN", completedStates);
recRmStory.addAggregate("SUM", "story_points");
recRmStory.setGroup(false);
recRmStory.query ();
return recRmStory.next() ? recRmStory.getAggregate("SUM", "story_points") : 0;
};
ScrumUtils.getSprintDotStoryPoints = function (strSprintSysId) {
var cancelledStates = new ScrumStatesUtil('rm_story').getCancelledStates();
var recRmStory = new GlideAggregate("rm_story");
recRmStory.addQuery("sprint", strSprintSysId);
recRmStory.addQuery("state", "NOT IN", cancelledStates).addOrCondition("state", "NULL");
recRmStory.addAggregate("SUM", "story_points");
recRmStory.setGroup(false);
recRmStory.query();
return recRmStory.next() ? recRmStory.getAggregate("SUM", "story_points") : 0;
};
ScrumUtils.handleSprintChanged = function (recOldSprint, recNewSprint) {
if (recOldSprint && recOldSprint.release) {
var recOldRelease = new GlideRecord ("rm_release_scrum");
if (recOldRelease.get (recOldSprint.getValue('release'))) {
recOldRelease.points = ScrumUtils.getReleaseDotPoints (recOldRelease.sys_id);
recOldRelease.update ();
}
}
if (recNewSprint && recNewSprint.release) {
var recNewRelease = new GlideRecord ("rm_release_scrum");
if (recNewRelease.get (recNewSprint.getValue('release'))) {
recNewRelease.points = ScrumUtils.getReleaseDotPoints (recNewRelease.sys_id);
recNewRelease.update ();
}
}
};
ScrumUtils.handleStoryChanged = function (recOldStory, recNewStory) {
var recOldSprint;
if (recOldStory && recOldStory.sprint) {
recOldSprint = new GlideRecord ("rm_sprint");
if (recOldSprint.get(recOldStory.getValue('sprint'))) {
recOldSprint.story_points = ScrumUtils.getSprintDotStoryPoints (recOldSprint.sys_id);
recOldSprint.actual_points = ScrumUtils.getSprintDotActualPoints (recOldSprint.sys_id);
recOldSprint.update ();
}
}
var recNewSprint;
if (recNewStory && recNewStory.sprint) {
recNewSprint = new GlideRecord ("rm_sprint");
if (recNewSprint.get(recNewStory.getValue('sprint'))) {
recNewSprint.story_points = ScrumUtils.getSprintDotStoryPoints (recNewSprint.sys_id);
recNewSprint.actual_points = ScrumUtils.getSprintDotActualPoints (recNewSprint.sys_id);
recNewSprint.update ();
}
}
if (recOldStory && recOldStory.release) {
var recOldRelease = new GlideRecord ("rm_release_scrum");
if (recOldRelease.get(recOldStory.getValue('release'))) {
recOldRelease.points = ScrumUtils.getReleaseDotPoints (recOldRelease.sys_id);
recOldRelease.update ();
}
}
if (recNewStory && recNewStory.release) {
var recNewRelease = new GlideRecord ("rm_release_scrum");
if (recNewRelease.get(recNewStory.getValue('release'))) {
recNewRelease.points = ScrumUtils.getReleaseDotPoints (recNewRelease.sys_id);
recNewRelease.update ();
}
}
};
Sys ID
adc2777eef330000a7450fa3f8225625