render()

in client/client/modules/render/tracks/vcf/multi-sample-vcf.js [455:586]


    render(flags) {
        let somethingChanged = false;
        if (flags.renderReset) {
            this.height = this.height;// force track to resize
            this.container.removeChildren();
            this.container.addChild(this.coverageCoordinateSystemRenderer);
            this.container.addChild(this.coverageRenderer.container);
            this.container.addChild(this._zoomInRenderer.container);
            this._zoomInRenderer.init(this._getZoomInPlaceholderText(), {
                height: this._pixiRenderer.height,
                width: this._pixiRenderer.width
            });
            somethingChanged = true;
            this.container.addChild(this.sampleGraphics);
            if (this.isCollapsedSamplesMode) {
                this.collapsedSamplesRenderer.container.y = VcfConfig.getCoverageHeight(this.state);
                this.collapsedSamplesRenderer.height = this.height - VcfConfig.getCoverageHeight(this.state);
                this.container.addChild(this.collapsedSamplesRenderer.container);
            } else {
                this.renderers.forEach((rendererBySample, index) => {
                    rendererBySample.collapsed.clear();
                    const renderer = this.pickRenderer(rendererBySample);
                    renderer.container.y = this.getRendererY(index);
                    renderer.height = VcfConfig.getSampleHeight(this.state, this);
                    this.container.addChild(renderer.container);
                });
            }
            this.container.addChild(this.sampleTitlesContainer);
            this.container.addChild(this.sampleScroller);
            this.correctScrollPosition();
        } else if (flags.widthChanged || flags.heightChanged) {
            this._zoomInRenderer.init(this._getZoomInPlaceholderText(), {
                height: this._pixiRenderer.height,
                width: this._pixiRenderer.width
            });
        }
        const zoomInPlaceholderVisible = this._variantsMaximumRange < this.viewport.actualBrushSize;
        this._zoomInRenderer.container.visible = zoomInPlaceholderVisible;
        if (this.coverageCoordinateSystemRenderer) {
            this.coverageCoordinateSystemRenderer.visible = !zoomInPlaceholderVisible;
        }
        if (this.coverageRenderer) {
            this.coverageRenderer.container.visible = !zoomInPlaceholderVisible && this.state.variantsDensity;
        }
        if (this.sampleGraphics) {
            this.sampleGraphics.visible = !zoomInPlaceholderVisible;
        }
        if (this.sampleTitlesContainer) {
            this.sampleTitlesContainer.visible = !zoomInPlaceholderVisible;
        }
        if (this.sampleScroller) {
            this.sampleScroller.visible = !zoomInPlaceholderVisible;
        }
        if (zoomInPlaceholderVisible) {
            this.sampleScroller.totalHeight = 0;
        }
        if (
            flags.renderReset ||
            flags.widthChanged ||
            flags.heightChanged
        ) {
            this.renderSampleGraphics();
            this.renderSampleTitles();
            this.correctScrollMask();
        }
        if (
            flags.dataChanged ||
            flags.renderReset ||
            flags.widthChanged ||
            flags.heightChanged
        ) {
            this.coverageCoordinateSystemRenderer.renderCoordinateSystem(
                this.viewport,
                this.cache.coverage,
                VcfConfig.getCoverageHeight(this.state),
                {
                    renderBaseLineAsBottomBorder: false
                }
            );
        }
        if (
            flags.brushChanged ||
            flags.widthChanged ||
            flags.heightChanged ||
            flags.renderReset ||
            flags.dataChanged
        ) {
            this.correctScrollPosition();
            if (!zoomInPlaceholderVisible) {
                this.sampleScroller.x = this.viewport.canvasSize -
                    VcfConfig.scroll.margin -
                    VcfConfig.scroll.width;
                this.sampleScroller.y = VcfConfig.getCoverageHeight(this.state);
                this.sampleScroller.totalHeight = this.totalSamplesHeight;
                this.sampleScroller.displayedHeight = this.height - VcfConfig.getCoverageHeight(this.state);
                this.sampleScroller.renderScroller(false);
            }
            this.coverageRenderer.height = VcfConfig.getCoverageHeight(this.state);
            this.coverageRenderer.render(
                this.viewport,
                this.cache,
                flags.heightChanged || flags.widthChanged || flags.dataChanged,
                this._showCenterLine
            );
            if (this.isCollapsedSamplesMode) {
                this.collapsedSamplesRenderer.height = this.height - VcfConfig.getCoverageHeight(this.state);
                this.collapsedSamplesRenderer.container.visible =
                    this._variantsMaximumRange >= this.viewport.actualBrushSize;
                this.collapsedSamplesRenderer.render(
                    this.viewport,
                    this.pickCollapsedSamplesCache(),
                    flags.heightChanged || flags.dataChanged || flags.renderReset,
                    this._showCenterLine
                );
            } else {
                this.renderers.forEach((rendererBySample, index) => {
                    const renderer = this.pickRenderer(rendererBySample);
                    renderer.height = VcfConfig.getSampleHeight(this.state, this);
                    renderer.container.visible = this.rendererVisible(index) &&
                        this._variantsMaximumRange >= this.viewport.actualBrushSize;
                    renderer.render(
                        this.viewport,
                        this.pickCache(rendererBySample.sample),
                        flags.heightChanged || flags.dataChanged || flags.renderReset,
                        this._showCenterLine
                    );
                });
            }
            somethingChanged = true;
        }
        return somethingChanged;
    }