Načtení velkého JS grafu pomocí signálu [naja + nette]
- emololftw
- Člen | 82
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 | 811
Pokud jsem pochopil správně, tak hledáš:
naja.makeRequest("GET", {link initChart!}, null, { unique: false })