NAJA přepis Ublaboo datagrid.js

- DAAR
 - Člen | 3
 
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 | 1034
 
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
 
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 :)

- jiri.pudil
 - Nette Blogger | 1034
 
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