|
| 1 | +function loadStatsJSON (url, callback) { |
| 2 | + var xobj = new XMLHttpRequest() |
| 3 | + xobj.overrideMimeType('application/json') |
| 4 | + xobj.open('GET', url, true) |
| 5 | + xobj.onreadystatechange = function () { |
| 6 | + if (xobj.readyState === 4 && xobj.status === 200) { |
| 7 | + // Required use of an anonymous callback as .open will NOT return a value |
| 8 | + // but simply returns undefined in asynchronous mode |
| 9 | + callback(xobj.responseText) |
| 10 | + } |
| 11 | + } |
| 12 | + xobj.send(null) |
| 13 | +} |
| 14 | + |
| 15 | +function displayStatsJSON (reportText) { |
| 16 | + var stats = JSON.parse(reportText) |
| 17 | + |
| 18 | + var div = document.getElementById('stats-downloads') |
| 19 | + var mlns = stats.downloads.month / 1e6 |
| 20 | + var blns = stats.downloads.all / 1e9 |
| 21 | + div.innerHTML = ( |
| 22 | + mlns.toFixed(0) + ' million monthly downloads<br>' + |
| 23 | + blns.toFixed(0) + ' billion all-time downloads' |
| 24 | + ) |
| 25 | + |
| 26 | + div = document.getElementById('stats-members') |
| 27 | + div.innerHTML = ( |
| 28 | + stats.n_members_core + ' core devs<br>' + |
| 29 | + stats.n_members_staged_recipes + ' staged-recipes maintainers<br>' + |
| 30 | + (stats.n_members / 1e3).toFixed(1) + 'k feedstock maintainers' |
| 31 | + ) |
| 32 | + |
| 33 | + div = document.getElementById('stats-data') |
| 34 | + div.innerHTML = ( |
| 35 | + (stats.n_repos / 1e3).toFixed(1) + 'k feedstocks<br>' + |
| 36 | + (stats.n_packages / 1e3).toFixed(1) + 'k packages<br>' + |
| 37 | + (stats.n_artifacts / 1e3).toFixed(1) + 'k artifacts' |
| 38 | + ) |
| 39 | + |
| 40 | + div = document.getElementById('stats-issues-prs') |
| 41 | + div.innerHTML = ( |
| 42 | + ((stats.n_prs + stats.n_issues) / 1e3).toFixed(1) + 'k issues+PRs<br>' + |
| 43 | + ((stats.n_open_prs + stats.n_open_issues) / 1e3).toFixed(1) + 'k/' + |
| 44 | + ((stats.n_closed_prs + stats.n_closed_issues) / 1e3).toFixed(1) + 'k open/closed' |
| 45 | + ) |
| 46 | + |
| 47 | + div = document.getElementById('stats1') |
| 48 | + div.style.display = '' |
| 49 | + div = document.getElementById('stats2') |
| 50 | + div.style.display = '' |
| 51 | +} |
| 52 | + |
| 53 | +var url = 'https://raw.githubusercontent.com/conda-forge/by-the-numbers/main/data/live_counts.json' |
| 54 | +loadStatsJSON(url, displayStatsJSON) |
0 commit comments