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

Function main

examples/chart-sync/main.ts:49–90  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

47};
48
49async function main() {
50 const containerA = document.getElementById('chart-a');
51 const containerB = document.getElementById('chart-b');
52 if (!containerA || !containerB) throw new Error('Chart containers not found');
53
54 const dataA = createWave(400, { fn: 'sin', phase: 0, amplitude: 1 });
55 const dataB = createWave(400, { fn: 'cos', phase: Math.PI / 6, amplitude: 0.9 });
56
57 const chartA = await ChartGPU.create(containerA, createOptions('sin(x)', dataA, '#4a9eff'));
58 const chartB = await ChartGPU.create(containerB, createOptions('cos(x + π/6)', dataB, '#ff4ab0'));
59
60 const disconnect = connectCharts([chartA, chartB]);
61
62 const attachResizeObserver = (container: HTMLElement, chart: ChartGPUInstance): ResizeObserver => {
63 let scheduled = false;
64 const ro = new ResizeObserver(() => {
65 if (scheduled) return;
66 scheduled = true;
67 requestAnimationFrame(() => {
68 scheduled = false;
69 chart.resize();
70 });
71 });
72 ro.observe(container);
73 return ro;
74 };
75
76 const roA = attachResizeObserver(containerA, chartA);
77 const roB = attachResizeObserver(containerB, chartB);
78
79 // Initial sizing/render.
80 chartA.resize();
81 chartB.resize();
82
83 window.addEventListener('beforeunload', () => {
84 roA.disconnect();
85 roB.disconnect();
86 disconnect();
87 chartA.dispose();
88 chartB.dispose();
89 });
90}
91
92if (document.readyState === 'loading') {
93 document.addEventListener('DOMContentLoaded', () => {

Callers 1

main.tsFile · 0.70

Calls 7

createWaveFunction · 0.85
connectChartsFunction · 0.85
createMethod · 0.80
createOptionsFunction · 0.70
attachResizeObserverFunction · 0.70
resizeMethod · 0.65
disposeMethod · 0.65

Tested by

no test coverage detected