Unlisted
Edited
Feb 22, 2023
Insert cell
Insert cell
Insert cell
centers_tbl = aq.from(wb.sheet(0, { headers: true })).derive({
centerURL: aq.escape((x) =>
x["Academic Center_Program_Initiative"].match(/^http\S+/)
),
centerName: aq.escape((x) =>
x["Academic Center_Program_Initiative"].replace(/^http\S+/, "")
)
})
Insert cell
Inputs.table(centers_tbl)
Insert cell
schools = centers_tbl
.groupby(["School"])
.count()
.objects()
.map((x) => x.School)
Insert cell
schoolsUI = new Map([["All", schools], ...schools.map((x) => [x, x])])
Insert cell
Insert cell
Insert cell
centers_details_list = {
let headings = centers_tbl
.groupby(["School"])
.rollup({ centers: (x) => aq.op.array_agg_distinct(x.centerName) })
.objects()
.map((o) => {
let centers_items = o.centers.map((x) => html`<li>${x}`);
let centers_list = html`<ul>${centers_items}`;
return html`<details><summary>${o.School} (${o.centers.length})</summary>${centers_list}`;
});
return html`<h2>Academic Centers, Programs, and Initiatives</h2>
<p>List is taken directly from school websites (TODO: list, more notes).
</p>
${headings}`;
}
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