-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.html
81 lines (71 loc) · 2.26 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>unpkg-demos :: module-d3</title>
<style>
.bar { fill: steelblue; }
</style>
</head>
<body>
<h1 id="message">Loading...</h1>
<div id="demo"></div>
<script type="module">
import * as d3 from "https://unpkg.com/d3?module"
var node = document.getElementById('message')
node.innerHTML = `Hello from D3 version ${d3.version}`
fetch("https://unpkg.com/_stats").then(res => res.json()).then(res => {
// set the dimensions and margins of the graph
var margin = { top: 20, right: 20, bottom: 30, left: 150 },
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom
var y = d3.scaleBand().range([height, 0]).padding(0.1)
var x = d3.scaleLinear().range([0, width])
document.getElementById("demo").textContent = ""
var svg = d3
.select("#demo")
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
let data = []
Object.keys(res.totals.requests.package).forEach(function(key) {
data.push({ name: key, requests: res.totals.requests.package[key] })
})
data = data
.sort((a, b) => a.requests - b.requests)
.slice(data.length - 10, data.length)
x.domain([
0,
d3.max(data, function(d) {
return d.requests
})
])
y.domain(
data.map(function(d) {
return d.name
})
)
svg
.selectAll(".bar")
.data(data)
.enter()
.append("rect")
.attr("class", "bar")
.attr("width", function(d) {
return x(d.requests)
})
.attr("y", function(d) {
return y(d.name)
})
.attr("height", y.bandwidth())
svg
.append("g")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x))
svg.append("g").call(d3.axisLeft(y))
})
</script>
</body>
</html>