in src/timeLine.ts [584:637]
constructor(options: powerbiVisualsApi.extensibility.visual.VisualConstructorOptions) {
const element: HTMLElement = options.element;
this.host = options.host;
this.calendarFactory = new CalendarFactory();
this.selectionManager = this.host.createSelectionManager();
this.initialized = false;
this.locale = this.host.locale;
this.localizationManager = this.host.createLocalizationManager();
this.timelineProperties = {
bottomMargin: Timeline.TimelineMargins.BottomMargin,
cellHeight: Timeline.TimelineMargins.CellHeight,
cellWidth: Timeline.TimelineMargins.CellWidth,
cellsYPosition: Timeline.TimelineMargins.TopMargin * Timeline.CellsYPositionFactor + Timeline.CellsYPositionOffset,
elementWidth: Timeline.TimelineMargins.ElementWidth,
leftMargin: Timeline.TimelineMargins.LeftMargin,
legendHeight: Timeline.TimelineMargins.LegendHeight,
rightMargin: Timeline.TimelineMargins.RightMargin,
startXpoint: Timeline.TimelineMargins.StartXpoint,
startYpoint: Timeline.TimelineMargins.StartYpoint,
textYPosition: Timeline.DefaultTextYPosition,
topMargin: Timeline.TimelineMargins.TopMargin,
};
this.rootSelection = d3Select(element)
.append("div")
.classed("timeline-component", true)
.on("click", null)
.on("click", () => this.clearUserSelection());
this.headerWrapperSelection = this.rootSelection
.append("div");
this.headerSelection = this.headerWrapperSelection
.append("svg")
.attr("width", "100%")
.style("display", "block")
.style("position", "absolute");
this.mainSvgWrapperSelection = this.rootSelection
.append("div")
.classed(Timeline.TimelineSelectors.TimelineWrapper.className, true);
this.mainSvgSelection = this.mainSvgWrapperSelection
.append("svg")
.classed(Timeline.TimelineSelectors.TimelineVisual.className, true);
this.addElements();
}