Published
Edited
Nov 21, 2020
Insert cell
md`# Props Cred Comparison`
Insert cell
before = FileAttachment("props_before.json").json()
Insert cell
after = FileAttachment("props_after.json").json()
Insert cell
beforeCred = {
const result = new Map();
for (const { totalCred, account } of before.accounts) {
result.set(account.identity.name, totalCred);
}
return result;
}
Insert cell
afterCred = {
const result = new Map();
for (const { totalCred, account } of after.accounts) {
result.set(account.identity.name, totalCred);
}
return result;
}
Insert cell
beforeTotal = d3.sum(beforeCred.values())
Insert cell
afterTotal = d3.sum(afterCred.values())
Insert cell
combined = {
const results = [];
for (const [name, before] of beforeCred.entries()) {
const after = afterCred.get(name);
results.push({ name, before, after, change: after / before - 1 });
}
results.sort((x, y) => d3.descending(x.after, y.after));
return results;
}
Insert cell
{
function row(x) {
const f1 = d3.format(".0f");
const before = f1(x.before);
const after = f1(x.after);
const change = d3.format(".0%")(x.change);
return `| ${x.name} | ${before} | ${after} | ${change} |\n`;
}
const rows = combined
.slice(0, 40)
.map(row)
.join("");
return `# Cred Changes

| Name | Before | After | Change % |
| ---- | ------ | ----- | -------- |
${rows}
`;
}
Insert cell
d3 = require("d3@6")
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more