NAJA přepis Ublaboo datagrid.js

DAAR
Člen | 3
+
0
-

Zdravím Vás všechny :)
Mám takový problém, nevím jak navázat akce z presenteru pomocí Najy a ne klasického Nette. Konkrétně se o to snažím v datagridech Ublaboo, kdy chci přepsat kompletně datagrid.js do Vanilly a za pomoci Najy.

Například:

$.nette.ext("datagrid.forms", {
    success: function() {
        return $(".datagrid").find("form").each(function() {
            return window.Nette.initForm(this)
        })
    }
})

Jak takový kód dostat do struktury Najy? Věřím, že již někdo obdobný problém řešil a předem se omlouvám, pokud jsem vybral špatné vlákno, myslím si, že je správné a pokud to již někdo řešil a víte o konkrétní diskuzi, poprosím link.

Předem díky všem za jakýkoliv point! :))
DAAR

jiri.pudil
Nette Blogger | 1028
+
0
-

Ahoj, Naja podporuje obdobné extensions, s drobnými rozdíly:

naja.registerExtension(
    function MyExtension( // <-- tu musí být konstruktor, Naja vytváří instanci pomocí "new"
        naja // <-- aktuální instance Najy se vkládá jako první parametr
    ) {
        naja.addEventListener( // <-- Naja implementuje standardní rozhraní EventEmitter
            'success',
            (event) => { // <-- parametry jsou zabalené v objektu typu Event
                console.log(event.response.snippets);
            }
        );
    }
);

naja.initialize(); // <-- initialize() se musí zavolat až po zaregistrování rozšíření :)
DAAR
Člen | 3
+
0
-

Tomu rozumím, mně spíš jde jen vážně o to, kam mám zadat tu konkrétní metodu(akci z presenteru) „datagrid.forms“ → toto je asi jediná věc, které stále nerozumím. Mluvíš o konstruktoru a dalších věcech, ale to nezodpovídá moji otázku.
Kam do Najového zápisu napsat tu konkretní věc např. „datagrid.forms“. Nemůžu jet na konkrétní element, potřebuji se odkázat na věci v presenteru. Každopádně děkuji za odpověď a tvůj čas, snad už mi to dojde, jak mi odpovíš :D :)

DAAR
Člen | 3
+
0
-

Nebo jestli to stačí napsat nějak obecně a ta Naja se už postará o vše sama ?

jiri.pudil
Nette Blogger | 1028
+
0
-

Já nějak nechápu dotaz. To „datagrid.forms“ přece nemá s presenterem vůbec nic společného, je to prostě jen řetězec pojmenovávajíci rozšíření pro nette.ajax.js. Naja nic takového nepoužívá, protože to zatím nikdo nepotřeboval :)

Odpovím tedy i konkrétně:

Jak takový kód dostat do struktury Najy?

naja.registerExtension(
	function DatagridFormsExtension(naja) {
		naja.addEventListener('success', () => {
			const forms = document.querySelectorAll('.datagrid form');
			for (let i = 0; i < forms.length; i++) {
				window.Nette.initForm(forms.item(i));
			}
		});
	}
);

A pro úplnost dodám, že zrovna toto rozšíření by nemělo být potřeba, protože formuláře a integraci s nette-forms Naja řeší sama