in src/visual.ts [70:116]
public update(options: VisualUpdateOptions) {
this.settings = BarChart.parseSettings(options && options.dataViews && options.dataViews[0]);
console.log("Visual update", options);
if (this.view && (options.type & VisualUpdateType.Resize || options.type & VisualUpdateType.ResizeEnd)) {
this.view.width(options.viewport.width).height(options.viewport.height).run();
return;
}
const r = visualTransform(options);
if (!r) {
this.target.innerHTML = "Need category and measure";
this.view = null;
return;
}
const { dataPoints, categoryTitle, valueTitle } = r;
const spec: vl.TopLevelSpec = {
$schema: "https://vega.github.io/schema/vega-lite/v4.json",
width: options.viewport.width,
height: options.viewport.height,
padding: 0,
autosize: {
type: "fit",
contains: "content"
},
data: {
values: dataPoints as Dict<any>
},
mark: "bar",
encoding: {
x: { field: "category", type: "ordinal", axis: { title: categoryTitle } },
y: { field: "value", type: "quantitative", axis: { title: valueTitle } }
}
};
const vgSpec = vl.compile(spec).spec;
const runtime = vega.parse(vgSpec);
this.view = new vega.View(runtime)
.logLevel(vega.Warn)
.initialize(this.target)
.renderer(this.settings.rendering.svg ? "svg" : "canvas")
.run();
}