Name
global.ScrumAjaxDragUpdateHandler
Description
ScrumAjaxDragUpdateHandler
Script
var ScrumAjaxDragUpdateHandler = Class.create();
ScrumAjaxDragUpdateHandler.prototype = Object.extendsObject(AbstractAjaxListDragChecker, {
draft_state: -6,
ready_state: 1,
getSprintPercentage: function(){
var sprintID = this.getParameter("sysparm_sprint_id");
var percentage = "-1";
var storyPoints;
var teamPoints;
var gr = new GlideRecordSecure("rm_sprint");
gr.addQuery("sys_id", sprintID);
gr.query();
if (gr.next()) {
teamPoints = gr["team_points"];
storyPoints = gr["story_points"];
if (teamPoints)
percentage = (100 / teamPoints) * storyPoints;
}
var item = this.newItem("precentage_item");
item.setAttribute("percentage", percentage);
item.setAttribute("story_points", storyPoints);
item.setAttribute("team_points", teamPoints);
},
_decode: function(str){
if (str != null && str.startsWith("__ENC__")){
str = GlideStringUtil.base64Decode(str.substring("__ENC__".length));
str = str.substring(0, 32);
}
return str;
},
updateItems: function() {
var recordClass = this.getParameter('sysparm_record_class');
var action = this.getParameter('sysparm_action');
var idArray = this.getParameter('sysparm_drag_item_ids').split(",");
for (var i = 0; i < idArray.length; i++) {
var gr = new GlideRecordSecure(recordClass);
if(!gr.isValid())
return;
gr.addQuery("sys_id", this._decode(idArray[i]));
gr.query();
if (gr.next())
if (action == "set_progress_details") {
if (recordClass == "rm_story"){
gr.story_points = this.getParameter('sysparm_value');
gr.classification = this.getParameter('sysparm_classification');
if (this.getParameter('sysparm_acceptance_criteria') != "")
gr.acceptance_criteria = this.getParameter('sysparm_acceptance_criteria');
}
if (recordClass == "rm_scrum_task"){
if (this.getParameter('sysparm_value'))
gr.hours = this.getParameter('sysparm_value');
gr.planned_hours = this.getParameter('sysparm_value_planned');
gr.remaining_hours = this.getParameter('sysparm_value_remaining');
gr.test_result = this.getParameter('sysparm_test_result');
}
if (this.getParameter('sysparm_assigned_to') == "")
gr.setValue("assigned_to", "");
else
gr.assigned_to = this.getParameter('sysparm_assigned_to');
gr.short_description = this.getParameter('sysparm_short_description');
gr.state = this.getParameter('sysparm_state');
gr.blocked = this.getParameter('sysparm_blocked');
gr.blocked_reason = this.getParameter('sysparm_blocked_reason');
gr.type = this.getParameter('sysparm_type');
gr.update();
} else
this.transferItem(gr, action, this.getParameter('sysparm_parent_id'));
}
},
transferItem: function(gr, action, parentID){
var product;
var release;
var sprint;
if (action == "clear_and_set_product"){
product = parentID;
gr.product = product;
gr.release = "";
gr.sprint = "";
gr.parent = "";
gr.update();
}else if (action == "set_product"){
product = parentID;
if (gr.product == product)
return;
gr.product = product;
gr.release = "";
gr.sprint = "";
gr.parent = "";
gr.update();
} else if (action == "set_release"){
release = parentID;
if (gr.release == release)
return;
gr.release = release;
if (gr.state == this.draft_state)
gr.state = this.ready_state;
gr.sprint = "";
gr.parent = "";
gr.update();
} else if (action == "clear_release"){
gr.release = "";
gr.sprint = "";
gr.parent = "";
gr.update();
} else if (action == "set_sprint_and_release"){
sprint = parentID;
if (gr.sprint == sprint)
return;
if (!this.sprintRelease){
this.sprintRelease = "";
var sp = new GlideRecordSecure("rm_sprint");
sp.addQuery("sys_id", sprint);
sp.query();
if (sp.next())
this.sprintRelease = sp.release;
}
gr.release = this.sprintRelease;
gr.sprint = sprint;
gr.parent = sprint;
gr.update();
} else if (action == "set_sprint"){
sprint = parentID;
if (gr.sprint == sprint)
return;
gr.sprint = sprint;
gr.parent = sprint;
gr.update();
} else if (action == "clear_sprint"){
gr.sprint = "";
gr.parent = "";
gr.update();
}
},
getAJAXReleaseRecordsScriptBlock: function(){
var script = this.getReleaseRecordsScriptBlock(this.getParameter("sysparm_release_id"));
var item = this.newItem("script_block");
item.setAttribute("text", script);
},
getReleaseRecordsScriptBlock: function(){
var releases = {};
var rl = new GlideRecordSecure("rm_release_scrum");
rl.addActiveQuery();
rl.orderBy("start_date");
rl.query();
while (rl.next()){
releases[rl.sys_id] = { 'sys_id' : rl.getValue('sys_id'),
'short_description': escape(rl.getValue('short_description')),
'start_date' : rl.getValue('start_date')
};
var m2m = new GlideRecordSecure("m2m_product_release");
m2m.addQuery("release", rl.sys_id);
m2m.query();
var productsMap = {};
while(m2m.next()){
var pr = new GlideRecordSecure("cmdb_model");
pr.addQuery("sys_id", m2m.model.sys_id );
pr.query();
if (pr.next()){
productsMap[pr.sys_id] = { 'sys_id' : pr.getValue('sys_id'),
'name' : escape(pr.getValue('name')),
'release_sys_id': rl.getValue('sys_id')
};
}
}
releases[rl.sys_id]['productsMap'] = productsMap;
var sp = new GlideRecordSecure("rm_sprint");
sp.addActiveQuery();
sp.addQuery("release", rl.sys_id);
sp.orderBy("short_description");
sp.query();
var sprints = {};
while(sp.next()){
sprints[sp.sys_id] = { 'sys_id' : sp.getValue('sys_id'),
'short_description' : escape(sp.getValue('short_description')),
'release_sys_id' : rl.getValue('sys_id'),
'start_date' : sp.getValue('start_date')
};
}
releases[rl.sys_id]['sprints'] = sprints;
}
var jsonParser = new JSON();
return jsonParser.encode(releases);
}
});
Sys ID
d6158010ff111000dadaefff0efe1eeb