Name
global.AgileStoryRankingAPI
Description
Story Ranking API
Script
var AgileStoryRankingAPI = Class.create();
AgileStoryRankingAPI.prototype = {
initialize: function() {
},
getOverallRankObject: function() {
var overallRank = [];
var overallRankRecord = new GlideRecord('rm_story');
overallRankRecord.addActiveQuery();
overallRankRecord.addQuery('rank','!=','NULL');
overallRankRecord.query();
while(overallRankRecord.next()){
overallRank.push({"key":overallRankRecord.getValue("sys_id"), "rank":parseInt(overallRankRecord.getValue("rank")), "isDirty":false});
}
return overallRank;
},
getProductRankObject: function(product) {
var productRank = [];
var productRankRecord = new GlideRecord('rm_story');
productRankRecord.addActiveQuery();
productRankRecord.addQuery('product',product);
productRankRecord.addQuery('product_rank','!=','NULL');
productRankRecord.query();
while(productRankRecord.next()){
productRank.push({"key":productRankRecord.getValue("sys_id"), "rank":parseInt(productRankRecord.getValue("product_rank")), "isDirty":false});
}
return productRank;
},
getGroupRankObject: function(group) {
var groupRank = [];
var groupRankRecord = new GlideRecord('rm_story');
groupRankRecord.addActiveQuery();
groupRankRecord.addQuery('assignment_group',group);
groupRankRecord.addQuery('group_rank','!=','NULL');
groupRankRecord.query();
while(groupRankRecord.next()){
groupRank.push({"key":groupRankRecord.getValue("sys_id"), "rank":parseInt(groupRankRecord.getValue("group_rank")), "isDirty":false});
}
return groupRank;
},
updateRanks: function(allStories,currentStoryId,newRank,fieldName) {
var rankingApi = new RankingAPI(allStories);
rankingApi.updateRank(currentStoryId,newRank);
var updatedStories = rankingApi.getDirtyTasks();
var storyRecord;
for(var i = 0;i<updatedStories.length;i++){
if(updatedStories[i].key != currentStoryId){
storyRecord = new GlideRecord('rm_story');
if(storyRecord.get(updatedStories[i].key)){
storyRecord.setValue(fieldName,updatedStories[i].rank);
storyRecord.update();
}
}
}
},
compactStoryRanks: function(allStories,fieldName){
var rankingApi = new RankingAPI(allStories);
rankingApi.compact();
var updatedStories = rankingApi.tasks;
var storyRecord;
for(var i = 0;i<updatedStories.length;i++){
storyRecord = new GlideRecord('rm_story');
if(storyRecord.get(updatedStories[i].key)){
storyRecord.setValue(fieldName,updatedStories[i].rank);
storyRecord.update();
}
}
return 'true';
},
type: 'AgileStoryRankingAPI'
};
Sys ID
544104a20b132200a6acc93563673a12