MCPcopy Index your code
hub / github.com/ChartGPU/ChartGPU / sliceRenderSeriesToVisibleRange

Function sliceRenderSeriesToVisibleRange

src/core/createRenderCoordinator.ts:2733–2802  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2731 };
2732
2733 function sliceRenderSeriesToVisibleRange(): void {
2734 const zoomRange = zoomState?.getRange() ?? null;
2735 const baseXDomain = computeBaseXDomain(currentOptions, runtimeRawBoundsByIndex);
2736 const visibleX = computeVisibleXDomain(baseXDomain, zoomRange);
2737
2738 // Fast path: no zoom or full span - use baseline directly
2739 const isFullSpan =
2740 zoomRange == null ||
2741 (Number.isFinite(zoomRange.start) &&
2742 Number.isFinite(zoomRange.end) &&
2743 zoomRange.start <= 0 &&
2744 zoomRange.end >= 100);
2745
2746 if (isFullSpan) {
2747 renderSeries = runtimeBaseSeries;
2748 // Recompute visible y-bounds from the full baseline series
2749 recomputeCachedVisibleYBoundsIfNeeded();
2750 return;
2751 }
2752
2753 const next: ResolvedChartGPUOptions['series'][number][] = new Array(runtimeBaseSeries.length);
2754
2755 for (let i = 0; i < runtimeBaseSeries.length; i++) {
2756 const baseline = runtimeBaseSeries[i]!;
2757
2758 // Pie charts don't need slicing
2759 if (baseline.type === 'pie') {
2760 next[i] = baseline;
2761 continue;
2762 }
2763
2764 const cache = lastSampledData[i];
2765
2766 // Strategy 1: Use cache if it covers visible range
2767 if (cache &&
2768 visibleX.min >= cache.cachedRange.min &&
2769 visibleX.max <= cache.cachedRange.max) {
2770
2771 if (baseline.type === 'candlestick') {
2772 next[i] = {
2773 ...baseline,
2774 data: sliceVisibleRangeByOHLC(cache.data as unknown as ReadonlyArray<OHLCDataPoint>, visibleX.min, visibleX.max)
2775 };
2776 } else {
2777 next[i] = {
2778 ...baseline,
2779 data: sliceVisibleRangeByX(cache.data as unknown as ReadonlyArray<DataPoint>, visibleX.min, visibleX.max)
2780 };
2781 }
2782 continue;
2783 }
2784
2785 // Strategy 2: Fallback to baseline sampled data
2786 if (baseline.type === 'candlestick') {
2787 next[i] = {
2788 ...baseline,
2789 data: sliceVisibleRangeByOHLC(baseline.data as ReadonlyArray<OHLCDataPoint>, visibleX.min, visibleX.max)
2790 };

Callers 1

renderFunction · 0.85

Calls 6

computeBaseXDomainFunction · 0.85
computeVisibleXDomainFunction · 0.85
sliceVisibleRangeByOHLCFunction · 0.85
sliceVisibleRangeByXFunction · 0.85
getRangeMethod · 0.80

Tested by

no test coverage detected