in src/TornadoChart.ts [456:510]
constructor(options: VisualConstructorOptions) {
let fontSize: string;
this.hostService = options.host;
this.localizationManager = this.hostService.createLocalizationManager();
this.colors = options.host.colorPalette;
this.colorHelper = new ColorHelper(this.colors);
this.selectionManager = options.host.createSelectionManager();
this.tooltipServiceWrapper = createTooltipServiceWrapper(
options.host.tooltipService,
options.element);
this.interactivityService = createInteractivitySelectionService(this.hostService);
let interactiveBehavior: IInteractiveBehavior = this.colorHelper.isHighContrast ? <IInteractiveBehavior>(new OpacityLegendBehavior()) : null;
this.legend = createLegend(options.element, false, this.interactivityService, true, null, interactiveBehavior);
let root: Selection<any> = this.root = d3.select(options.element)
.append("svg");
root
.classed(TornadoChart.ClassName, true);
fontSize = root.style("font-size");
this.textOptions.fontSize = Number(fontSize.slice(0, fontSize.length - 2));
this.textOptions.fontFamily = root.style("font-family");
this.scrolling = new TornadoChartScrolling(
() => root,
() => this.viewport,
() => this.margin,
() => this.dataView.categories.length * TornadoChart.CategoryMinHeight,
true);
let main: Selection<any> = this.main = root.append("g");
this.clearCatcher = appendClearCatcher(main);
this.columns = main
.append("g")
.classed(TornadoChart.Columns.className, true);
this.axes = main
.append("g")
.classed(TornadoChart.Axes.className, true);
this.labels = main
.append("g")
.classed(TornadoChart.Labels.className, true);
this.categories = main
.append("g")
.classed(TornadoChart.Categories.className, true);
this.behavior = new TornadoWebBehavior();
}