Name
global.AgileBoardEpicUtil
Description
No description available
Script
var AgileBoardEpicUtil = Class.create();
AgileBoardEpicUtil.prototype = {
initialize: function() {
this.EPIC_FILTER_SORT_FIELD = "short_description";
this.SORT_ORDER = "ASC"; // Keep "ASC" for ascending order and "DSC" for descending order.
},
getSortField: function(tableName, fieldName) {
var gr = new GlideRecord(tableName);
if (!gr.isValidField(fieldName)) {
this.EPIC_FILTER_SORT_FIELD = "short_description";
}
},
getEpicsWithTotal: function(storyFilterId, limit, offset) {
var epicData;
var epics;
var epicFilter;
var filterQuery;
var agFilter = new GlideRecord('backlog_definition');
var epicIds = [];
agFilter.get(storyFilterId);
filterQuery = agFilter.getValue('filter');
if (JSUtil.notNil(storyFilterId) && JSUtil.notNil(filterQuery)) {
epicFilter = new GlideAggregate('rm_story');
epicFilter.addNotNullQuery('epic.sys_id');
this.getSortField("rm_epic",this.EPIC_FILTER_SORT_FIELD);
var sortField = "epic." + this.EPIC_FILTER_SORT_FIELD;
if (this.SORT_ORDER === "ASC") {
epicFilter.orderBy(sortField);
} else if (this.SORT_ORDER === "DSC") {
epicFilter.orderByDesc(sortField);
}
epicFilter.addEncodedQuery(filterQuery);
epicFilter.groupBy('epic');
epicFilter.chooseWindow(offset, limit - 1, true);
epicFilter.query();
while (epicFilter.next()) {
epicIds.push(epicFilter.getValue('epic'));
}
} else {
epicFilter = new GlideRecord('rm_epic');
this.getSortField("rm_epic",this.EPIC_FILTER_SORT_FIELD);
if (this.SORT_ORDER === "ASC") {
epicFilter.orderBy(this.EPIC_FILTER_SORT_FIELD);
} else if (this.SORT_ORDER === "DSC") {
epicFilter.orderByDesc(this.EPIC_FILTER_SORT_FIELD);
}
epicFilter.chooseWindow(0, limit - 1, true);
epicFilter.query();
while (epicFilter.next()) {
epicIds.push(epicFilter.getValue('sys_id'));
}
}
epics = this.getFilterData("rm_epic", epicIds, this.EPIC_FILTER_SORT_FIELD, this.SORT_ORDER);
return {
epics: epics,
total: epicFilter.getRowCount()
};
},
getFilterData: function(filterTable, filterRecIds, sortField, sortOrder) {
var filterRecData;
var filterData = [];
var filterRecGr = new GlideRecord(filterTable);
filterRecGr.addQuery('sys_id', 'IN', filterRecIds.join(','));
if (sortOrder === "ASC") {
filterRecGr.orderBy(sortField);
} else if (sortOrder === "DSC") {
filterRecGr.orderByDesc(sortField);
}
filterRecGr.query();
while (filterRecGr.next()) {
filterRecData = {};
filterRecData.sys_id = filterRecGr.getValue('sys_id');
filterRecData.short_description = filterRecGr.getValue('short_description');
filterRecData.totalStoryCount = filterRecGr.getValue('total_story_count');
filterRecData.completedStoryPoints = filterRecGr.getValue('completed_count');
filterRecData.totalStoryPoints = filterRecGr.getValue('total_estimate');
filterRecData.percentCompleteByEstimate = filterRecGr.getValue('percent_complete_by_estimate');
filterData.push(filterRecData);
}
return filterData;
},
type: 'AgileBoardEpicUtil'
};
Sys ID
1736745753b33200d044ddeeff7b1227