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

Offical Documentation

Official Docs: