From b465042a56f89eef8d2d5797ea14a1d91b4e79aa Mon Sep 17 00:00:00 2001 From: Laurent Cozic Date: Sat, 12 Jan 2019 00:01:58 +0000 Subject: [PATCH] Fixed stats page --- Tools/build-release-stats.js | 62 ++++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/Tools/build-release-stats.js b/Tools/build-release-stats.js index ef1a44319..fc2d3f082 100644 --- a/Tools/build-release-stats.js +++ b/Tools/build-release-stats.js @@ -54,9 +54,6 @@ function createChangeLog(releases) { } async function main() { - const response = await fetch('https://api.github.com/repos/laurent22/joplin/releases'); - //const response = await fetch('http://test.local/releases.json'); - const releases = await response.json(); const rows = []; const totals = { @@ -65,22 +62,38 @@ async function main() { linux_count: 0, }; - for (let i = 0; i < releases.length; i++) { - const release = releases[i]; - if (!release.tag_name.match(/^v\d+\.\d+\.\d+$/)) continue; - if (release.draft) continue; - - let row = {}; - row = Object.assign(row, downloadCounts(release)); - row.tag_name = '[' + release.tag_name + '](https://github.com/laurent22/joplin/releases/tag/' + release.tag_name + ')'; - row.published_at = release.published_at; - row.body = release.body; + const processReleases = (releases) => { + for (let i = 0; i < releases.length; i++) { + const release = releases[i]; + if (!release.tag_name.match(/^v\d+\.\d+\.\d+$/)) continue; + if (release.draft) continue; + + let row = {}; + row = Object.assign(row, downloadCounts(release)); + row.tag_name = '[' + release.tag_name + '](https://github.com/laurent22/joplin/releases/tag/' + release.tag_name + ')'; + row.published_at = release.published_at; + row.body = release.body; - totals.windows_count += row.windows_count; - totals.mac_count += row.mac_count; - totals.linux_count += row.linux_count; + totals.windows_count += row.windows_count; + totals.mac_count += row.mac_count; + totals.linux_count += row.linux_count; - rows.push(row); + rows.push(row); + } + } + + console.info('Build stats: Downloading releases info...'); + + const baseUrl = 'https://api.github.com/repos/laurent22/joplin/releases?page='; + // const baseUrl = 'http://test.local/releases.json?page=' + let pageNum = 1; + while (true) { + console.info('Build stats: Page ' + pageNum); + const response = await fetch(baseUrl + (pageNum + '')); + const releases = await response.json(); + if (!releases || !releases.length) break; + processReleases(releases); + pageNum++; } const changelogText = createChangeLog(rows); @@ -91,15 +104,24 @@ async function main() { totals.mac_percent = totals.mac_count / grandTotal; totals.linux_percent = totals.linux_count / grandTotal; + const formatter = new Intl.NumberFormat('en-US', { style: 'decimal' }); + const totalsMd = [ - { name: 'Total Windows downloads', value: totals.windows_count }, - { name: 'Total macOs downloads', value: totals.mac_count }, - { name: 'Total Linux downloads', value: totals.linux_count }, + { name: 'Total Windows downloads', value: formatter.format(totals.windows_count) }, + { name: 'Total macOs downloads', value: formatter.format(totals.mac_count) }, + { name: 'Total Linux downloads', value: formatter.format(totals.linux_count) }, { name: 'Windows %', value: Math.round(totals.windows_percent * 100) + '%' }, { name: 'macOS %', value: Math.round(totals.mac_percent * 100) + '%' }, { name: 'Linux %', value: Math.round(totals.linux_percent * 100) + '%' }, ]; + for (let i = 0; i < rows.length; i++) { + rows[i].mac_count = formatter.format(rows[i].mac_count); + rows[i].windows_count = formatter.format(rows[i].windows_count); + rows[i].linux_count = formatter.format(rows[i].linux_count); + rows[i].total_count = formatter.format(rows[i].total_count); + } + const statsMd = []; statsMd.push('# Joplin statistics');