diff --git a/src/main/js/charts.js b/src/main/js/charts.js
index b2caa61..fc33ac9 100644
--- a/src/main/js/charts.js
+++ b/src/main/js/charts.js
@@ -275,27 +275,18 @@ function requestData(url) {
});
}
-function getSingleUrl(pkg, fromDate, toDate) {
- return '/downloads/range/' + dateToDayKey(fromDate) + ':' + dateToDayKey(toDate) + '/' + encodeURIComponent(pkg);
-}
-
-function getDownloadsUrl(pkg, fromDate, toDate) {
- var upperLimit = moment(fromDate).add(18, 'months');
-
- var allUrls = [ ];
+function getDownloadsUrl(packageNames, fromDate, untilDate) {
- var startFrom = fromDate;
- var startTo = upperLimit;
-
- while (startTo < toDate) {
- allUrls.push(getSingleUrl(pkg, startFrom, startTo));
- startFrom = moment(startTo).add(1, 'day').toDate();
- startTo = moment(startTo).add(18, 'months').toDate();
- }
+ console.dir(packageNames);
- allUrls.push(getSingleUrl(pkg, startFrom, toDate));
+ var packageNamesQueryString = '';
+ $.each(packageNames, function (i, packageName) {
+ packageNamesQueryString += 'package=' + encodeURIComponent(packageName) + '&';
+ });
- return allUrls;
+ return '/api/download-counts?' + packageNamesQueryString
+ + 'from=' + dateToDayKey(fromDate)
+ + '&until=' + dateToDayKey(untilDate);
}
function sumUpDownloadCounts(downloadData) {
@@ -313,9 +304,9 @@ function sumUpDownloadCounts(downloadData) {
return {total: summedUpDownloads};
}
-function drawCharts(downloadData, fromDate, toDate) {
+function drawCharts(downloadData, fromDate, untilDate) {
- var dateRange = getDateRange(fromDate, toDate);
+ var dateRange = getDateRange(fromDate, untilDate);
var dailyDownloadData = getDailyDownloadData(downloadData, dateRange);
showChart('days', 'Downloads per day', dailyDownloadData, 'datetime', 'Date');
@@ -334,7 +325,7 @@ function drawCharts(downloadData, fromDate, toDate) {
}
-function showTotalDownloads(sanitizedData, fromDate, toDate, showSum) {
+function showTotalDownloads(sanitizedData, fromDate, untilDate, showSum) {
var sum = 0;
var $table = $('');
@@ -359,7 +350,7 @@ function showTotalDownloads(sanitizedData, fromDate, toDate, showSum) {
if (showSum) {
packageHtml = ''
+ + '&from=' + dateToDayKey(fromDate) + '&to=' + dateToDayKey(untilDate) + '">'
+ total.packageName + '';
} else {
packageHtml = total.packageName;
@@ -376,60 +367,22 @@ function showTotalDownloads(sanitizedData, fromDate, toDate, showSum) {
.after($table)
.after('Total number of downloads between '
+ dateToDayKey(fromDate) + ' and '
- + dateToDayKey(toDate) + ':');
+ + dateToDayKey(untilDate) + ':');
}
-function getDownloadData(packageNames, fromDate, toDate) {
+function getDownloadData(packageNames, fromDate, untilDate) {
return new Promise(function (accept, reject) {
- var requestArray = [];
- var packageNameToRequestIndex = [ ];
- $.each(packageNames, function (index, packageName) {
- var allUrls = getDownloadsUrl(packageName, fromDate, toDate);
+ var downloadsUrl = getDownloadsUrl(packageNames, fromDate, untilDate);
- var allDataReqs = allUrls.map(function (url) {
- return requestData(url)
- });
+ var downloadData = requestData(downloadsUrl);
- $.merge(requestArray, allDataReqs);
- allUrls.map(function () {
- packageNameToRequestIndex.push(packageName);
- });
-
- });
-
- $.when.apply(this, requestArray).then(function () {
-
- var requestResults = {};
- if (requestArray.length === 1) {
- // required: a single request needs to be handled differently,
- // as compared to when multiple requests are made
- requestResults[packageNameToRequestIndex[0]] = [ arguments[0] ];
- } else {
- $.each(arguments, function (index, response) {
- var packageName = packageNameToRequestIndex[index];
- if (requestResults[packageName] === undefined) {
- requestResults[packageName] = [];
- }
- requestResults[packageName].push(response[0]);
- });
- }
-
- var sanitizedData = {};
- $.each(requestResults, function (packageName, result) {
- sanitizedData[packageName] = {};
- result.forEach(function (res) {
- objectAssign(sanitizedData[packageName], sanitizeData(res));
- });
- });
-
- return accept(sanitizedData);
- });
+ return accept(downloadData);
});
}
-function showPackageStats(packageNames, fromDate, toDate) {
+function showPackageStats(packageNames, fromDate, untilDate) {
var joinedPackageNames = packageNames.join(', ');
@@ -451,21 +404,21 @@ function showPackageStats(packageNames, fromDate, toDate) {
$npmStat.after('

');
if (packageNames.length === 1) {
- $npmStat.after('View package on npm
');
+ $npmStat.after('View package on npm
');
}
- getDownloadData(packageNames, fromDate, toDate).then(function (sanitizedData) {
+ getDownloadData(packageNames, fromDate, untilDate).then(function (downloadData) {
$('#loading').remove();
- showTotalDownloads(sanitizedData, fromDate, toDate, false);
+ showTotalDownloads(downloadData, fromDate, untilDate, false);
- drawCharts(sanitizedData, fromDate, toDate);
+ drawCharts(downloadData, fromDate, untilDate);
});
}
-function showAuthorStats(authorName, fromDate, toDate) {
+function showAuthorStats(authorName, fromDate, untilDate) {
$('h2').html('Downloads for author ' + authorName + '');
$nameType.val('author');
$('#name')
@@ -479,15 +432,15 @@ function showAuthorStats(authorName, fromDate, toDate) {
getPackagesForAuthor(authorName).then(function (response) {
var packageNames = getPackageList(response);
- getDownloadData(packageNames, fromDate, toDate).then(function (sanitizedData) {
+ getDownloadData(packageNames, fromDate, untilDate).then(function (sanitizedData) {
$('#loading').remove();
- showTotalDownloads(sanitizedData, fromDate, toDate, true);
+ showTotalDownloads(sanitizedData, fromDate, untilDate, true);
var summedUpDownloadCounts = sumUpDownloadCounts(sanitizedData);
- drawCharts(summedUpDownloadCounts, fromDate, toDate);
+ drawCharts(summedUpDownloadCounts, fromDate, untilDate);
});
@@ -532,8 +485,8 @@ $(function () {
return;
}
- var toDate = initDate(urlParams, 'to');
- var fromDate = initDate(urlParams, 'from', toDate);
+ var untilDate = initDate(urlParams, 'to');
+ var fromDate = initDate(urlParams, 'from', untilDate);
if (packageNames) {
if (!(packageNames instanceof Array)) {
@@ -545,10 +498,10 @@ $(function () {
});
$('title').html('npm-stat: ' + packageNames.join(', '));
- showPackageStats(packageNames, fromDate, toDate);
+ showPackageStats(packageNames, fromDate, untilDate);
} else if (authorName) {
$('title').html('npm-stat: ' + authorName);
- showAuthorStats(authorName, fromDate, toDate);
+ showAuthorStats(authorName, fromDate, untilDate);
}
});