viewof sampleCharts = {
const div = html`<div style="display:flex; flex-wrap: wrap;">`;
const charts = new Map();
const titles = {
spec_name: "Species",
time: "Year",
abundance: "Abundance",
water_temp: "Water Temperature",
sampl_site: "Sample Location"
};
for (let a of attribs) {
const chart = BrushableBarChart()
.x("value")
.y("key")
.width(width / attribs.length)
.height(500)
.onBrush((selection) => {
const keys = selection.map((d) => d.key);
cs.dims
.get(a)
.filter(keys.length === 0 ? null : (d) => keys.includes(d));
update();
});
charts.set(a, chart);
}
function update() {
d3.select(div)
.selectAll(".chart-container")
.data(attribs)
.join("div")
.attr("class", "chart-container")
.style("width", `${width / attribs.length}px`)
.each(function (a) {
const container = d3.select(this);
container
.selectAll(".chart-title")
.data([titles[a]])
.join("div")
.attr("class", "chart-title")
.style("text-align", "center")
.style("font-weight", "bold")
.style("margin-bottom", "10px")
.text((d) => d);
const data =
a === "sampl_site"
? cs.groups.get(a).top(10)
: cs.groups.get(a).all();
container
.selectAll(".chart")
.data([data])
.join("div")
.attr("class", "chart")
.datum(data)
.call(charts.get(a));
});
}
update();
return div;
}