diff options
Diffstat (limited to 'website/app.js')
-rw-r--r-- | website/app.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/website/app.js b/website/app.js index 31aa99349..c1a263eac 100644 --- a/website/app.js +++ b/website/app.js @@ -4,6 +4,17 @@ export async function getJson(path) { return (await fetch(path)).json(); } +export function getTravisData() { + const url = "https://api.travis-ci.com/repos/denoland/deno/builds?event_type=pull_request"; + return fetch(url, { + headers: { + "Accept": "application/vnd.travis-ci.2.1+json" + } + }) + .then(res => res.json()) + .then(data => data.builds.reverse()); +} + const benchmarkNames = [ "hello", "relative_import", @@ -68,6 +79,15 @@ export function createSyscallCountColumns(data) { ]); } +const travisCompileTimeNames = ["duration_time"] +function createTravisCompileTimeColumns(data) { + const columnsData = travisCompileTimeNames.map(name => [ + name, + ...data.map(d => d.duration) + ]); + return columnsData; +} + export function createSha1List(data) { return data.map(d => d.sha1); } @@ -83,14 +103,23 @@ export function formatBytes(a, b) { return parseFloat((a / Math.pow(c, f)).toFixed(d)) + " " + e[f]; } +export function formatSeconds(t) { + const a = t % 60; + const min = Math.floor(t / 60); + return a < 30 ? `${min} min` : `${min + 1} min`; +} + export async function main() { const data = await getJson("./data.json"); + const travisData = (await getTravisData()).filter(d => d.duration > 0); const execTimeColumns = createExecTimeColumns(data); const binarySizeColumns = createBinarySizeColumns(data); const threadCountColumns = createThreadCountColumns(data); const syscallCountColumns = createSyscallCountColumns(data); + const travisCompileTimeColumns = createTravisCompileTimeColumns(travisData); const sha1List = createSha1List(data); + c3.generate({ bindto: "#exec-time-chart", @@ -140,4 +169,20 @@ export async function main() { } } }); + + c3.generate({ + bindto: "#travis-compile-time-chart", + data: { columns: travisCompileTimeColumns }, + axis: { + x: { + type: "category", + categories: travisData.map(d => d.pull_request_number) + }, + y: { + tick: { + format: d => formatSeconds(d) + } + } + } + }); } |