Načtení velkého JS grafu pomocí signálu [naja + nette]

emololftw
Člen | 79
+
0
-

Dobrý den,

v aplikaci mám několik grafů rozdělených do komponent (cca 60 grafů). Pokud uživatel zvolí velký časový interval, je graf opravdu obrovský (DOM) a celý DOM proces trvá cca 20 vteřin. Rozhodl jsem se zobrazit základní kostru dashboardu a grafy postupně „redrawnout“ pomocí signálu v komponentě. Na konci komponenty mám:

document.addEventListener("DOMContentLoaded", () => naja.makeRequest("GET", {link initChart!}), false)

tělo metody signálu:

public function handleInitChart(): void {
	$this->redrawControl("chart");
	$this->initChart = TRUE;
}

V samotné komponentě vykresluji graf takto:

{snippet chart}

{if $control->initChart}
	{snippet changes}
		{control productChanges}
	{/}
	{control chart}
{else}
	<p aria-hidden="true" class="placeholder-glow">
		<span class="placeholder col-12 placeholder-lg"></span>
	</p>
{/}

{/}

Tento kód pošle pouze signál poslední komponenty, předešlé ignoruje. Zkoušel jsem vytvořit frontu signálů do pole a poté je sekvenčně pouštět za sebe, ale vždy stejný výsledek. Pomohlo mi vytvořit v presenteru signál, který redrawne kompletně všechno, ale já bych chtěl komponenty grafů použít i v jiné části aplikace. Jak lazy načítání řešíte v aplikaci vy? Přímo v komponentě?

Děkuji.

Editoval emololftw (13. 9. 2022 15:00)

Kamil Valenta
Člen | 752
+
+1
-

Pokud jsem pochopil správně, tak hledáš:

naja.makeRequest("GET", {link initChart!},  null, { unique: false })
emololftw
Člen | 79
+
0
-

Kamil Valenta napsal(a):

Pokud jsem pochopil správně, tak hledáš:

naja.makeRequest("GET", {link initChart!},  null, { unique: false })

To je přesně ono, proboha děkuji mnohokrát!!!!