dashboard = {
const selection = vl.selectSingle('Select')
.fields('district')
.bind({district: vl.menu(hr_district_list)});
const num_first_row_charts = 2;
const first_row_hist_chart_width = width * 0.47;
const first_row_bar_chart_width = width * 0.3;
const second_row_chart_width = width - 98;
const second_row_chart_height = second_row_chart_width * 0.5;
const first_row_charts_height = second_row_chart_width * 0.125;
const brush = vl.selectInterval().encodings('x').resolve('intersect');
const top_histogram = vl.markBar()
.data(hr_covid)
.encode(
vl.x()
.fieldT("date")
.title(null),
vl.y()
.fieldQ("hospitalizations")
);
const top_histogram_layer = vl.layer(
top_histogram.select(brush).encode(vl.color().value('steelblue'))
)
.height(first_row_charts_height)
.width(first_row_hist_chart_width);
const horizontal_bar_chart = vl.markBar()
.data(hr_totals)
.encode(
vl.x()
.sum('hospitalizations')
.title(null),
vl.y()
.fieldN('district')
.title(null)
.sort(vl.sum('hospitalizations').order('descending'))
)
.title("Total Hospitalizations")
.height(first_row_charts_height)
.width(first_row_bar_chart_width);
const bottom_histogram = vl.markBar({tooltip: {"content": "data"}})
.data(hr_covid)
.encode(
vl.x()
.fieldT('date')
.title(null)
.scale({domain: brush}),
vl.y()
.fieldQ("hospitalizations"))
.height(second_row_chart_height)
.width(second_row_chart_width);
const bottom_histogram_layer = vl.layer(
bottom_histogram.select(selection).encode(vl.color().value('lightgrey')),
bottom_histogram.transform(vl.filter(selection)));
return vl.vconcat(vl.hconcat(top_histogram_layer, horizontal_bar_chart), bottom_histogram_layer)
.title("Hampton Roads COVID Dashboard")
.render();
}