viewof threeCViews = {
const selectTimeBrush = vl.selectInterval("tbrush").encodings("x");
const selectType = vl
.selectPoint("selected_pt")
.on("click")
.fields("Offense")
.clear("dblclick")
.toggle(true);
const crimeTrends = vl
.markLine({ strokeWidth: 2 })
.data(vanCrime2)
.transform(
vl.filter(selectType),
// vl.filter(selectTimeBrushCat),
vl.filter({ field: "NEIGHBOURHOOD", oneOf: mapSelection })
)
.params(selectTimeBrush)
.title("VNon-Violent Crime Trends by Type Summer 2016")
.encode(
vl.x().fieldT("Date"),
vl.detail().fieldN("Offense"),
vl.y().fieldQ("*").count(),
//.scale({ domain: [0, "scaleMax"] }),
//.scale({ domain: [0, 120] }),
vl.color().fieldN("Offense Category").scale({ range: OffenseCatColors })
// vl.opacity().if(selectType, vl.value(0.99)).value(0.1) // if point selected, use opacity 0.99, otherwise 0.1
);
const crimeBars = vl
.markBar()
//.width(600)
.data(vanCrime2)
.params(selectType)
.title("Vancouver Non-Violent Crime Total Offenses Summer 2016")
// .transform(vl.filter(selectTimeBrush), vl.filter(selectTimeBrush))
.transform(
vl.filter(selectTimeBrush),
// vl.filter(selectTimeBrushCat),
vl.filter({ field: "NEIGHBOURHOOD", oneOf: mapSelection }) //filter based on what area of map is clicked
)
.encode(
vl.y().fieldN("Offense").scale({ domain: OffenseTypes }),
vl.x().fieldQ("*").aggregate("count"),
//.scale({ domain: [0, 4400] })
vl
.color()
.fieldN("Offense Category")
.scale({ range: OffenseCatColors })
.legend({ orient: "bottom", offset: -70 }),
// .if(selectedBar, vl.fieldN("Offense Category"))
// .value("grey"), // if point selected, use default color, otherwise grey
vl.opacity().if(selectType, vl.value(0.99)).value(0.1) // if point selected, use opacity 0.7, otherwise 0.1
);
// const base = crimeBars.transform(vl.filter(timeSelector));
return vl.hconcat(crimeBars, crimeTrends).render();
}