UNPKG

jira-sprints

Version:
68 lines (61 loc) 2.06 kB
// Generated by CoffeeScript 1.9.3 (function() { var Q, request, sprintqueryUri, sprintreportUri; request = require('superagent'); Q = require('q'); sprintqueryUri = function(rapidViewId) { return '/rest/greenhopper/1.0/sprintquery/' + rapidViewId; }; sprintreportUri = '/rest/greenhopper/1.0/rapid/charts/sprintreport'; module.exports = function(params) { var sprintqueryRequest, sprintreportRequest; params.onTotal = params.onTotal || function() {}; params.mapCallback = params.mapCallback || function(report) { return report; }; sprintqueryRequest = function() { var query; query = request.get(params.serverRoot + sprintqueryUri(params.rapidView)).query({ includeHistoricSprints: true, includeFutureSprints: true }); if (params.user) { query.auth(params.user, params.pass); } return query; }; sprintreportRequest = function(sprintId) { var query; query = request.get(params.serverRoot + sprintreportUri).query({ rapidViewId: params.rapidView, sprintId: sprintId }); if (params.user) { query.auth(params.user, params.pass); } return query; }; return Q().then(function() { return Q.ninvoke(sprintqueryRequest(), 'end'); }).then(function(response) { var data, remaining, reportPromise, reportPromiseCalls, total; data = response.body; total = data.sprints.length; params.onTotal(total); remaining = total; reportPromise = function(sprintId, array) { return Q.ninvoke(sprintreportRequest(sprintId), 'end').then(function(response) { data = response.body; array.push(params.mapCallback(data)); return array; }); }; reportPromiseCalls = data.sprints.map(function(sprint) { return reportPromise.bind(null, sprint.id); }); return reportPromiseCalls.reduce(function(soFar, f) { return soFar.then(f); }, Q([])); }); }; }).call(this);