in web/src/app/timeline/canvas/timeline_renderer.service.ts [262:337]
public attach(
canvasWrapper: HTMLElement,
canvasSizeObserver: Observable<CanvasSize>,
) {
this.canvasWrapper = canvasWrapper;
this._canvasSize = canvasSizeObserver.pipe(
filter((v) => v.height > 0 && v.width > 0),
debounceTime(TimelineRendererService.MINIMUM_REFRESH_PERIOD),
share(),
);
this.refleshGL();
// Redraw timelines in the response to the depending property change
combineLatest([
this.glContext,
this.canvasSize,
this.scrollingStrategy.offsetToFirstItemFromVisibleArea,
this.scrollingStrategy.stickyTimelines,
this.scrollingStrategy.visibleItemRange,
this.scrollingStrategy.perRowScrollingProperties,
this.rowRenderers,
this.dataStore.$timeRange,
this.selectionManager.selectedTimeline,
this.selectionManager.highlightedTimeline,
this.selectionManager.highlightedChildrenOfSelectedTimeline,
this.dataStore.allLogs,
this.selectionManager.selectedLogIndex,
this.selectionManager.highlightLogIndices,
this.dataStore.filteredOutLogIndicesSet,
this.viewState.pixelPerTime,
this.viewState.timeOffset,
this.viewState.devicePixelRatio,
]).subscribe(
([
gl,
canvasSize,
offsetToFirstItemFromVisibleArea,
stickyTimelines,
visibleItemRange,
perRowScrollingProperties,
rowRenderers,
timeRange,
selectedTimeline,
highlightedTimeline,
highlightedByParent,
logs,
selectedLog,
highlightLogs,
filteredLogs,
pixelPerTime,
timeOffset,
pixelRatio,
]) => {
this.onRender(
gl,
canvasSize,
offsetToFirstItemFromVisibleArea,
visibleItemRange,
perRowScrollingProperties,
rowRenderers,
timeRange,
stickyTimelines,
selectedTimeline,
highlightedTimeline,
highlightedByParent,
logs,
selectedLog,
filteredLogs,
highlightLogs,
pixelPerTime,
timeOffset,
pixelRatio,
);
},
);
}