Naja: jaké jste (vy)řešili problémy a use cases?

jiri.pudil
Nette Blogger | 1028
+
+5
-

@dakur mne v tomhle vlákně trochu pošťouchnul (díky!) k rozšíření dokumentace knihovny Naja o příklady a hotová řešení, což je něco, nad čím jsem uvažoval už dlouho, ale dosud jsem úplně nepřišel na to, jak to uchopit, aby to mělo nějakou strukturu a smysl jako celek. Obracím se proto o pomoc na vás, kteří Naju užíváte.

Podělte se prosím tady nebo na Githubu o problémy, které jste potřebovali řešit v souvislosti s Najou. Zejména mám na mysli:

  • S jakými nástroji, skripty a knihovnami jste Naju integrovali a jakým způsobem?
  • Jaké rozšiřující chování jste implementovali v souvislosti s průběhem requestu (např. zobrazení spinneru, přechody, error handling, …)?
  • Jaké rozšiřující chování jste implementovali v souvislosti se zpracováním odpovědi ze serveru (např. manipulace se snippety, změna chování přesměrování, integrace do History API prohlížeče, …)?

Díky!

Šaman
Člen | 2635
+
+9
-

Velmi bych ocenil tutoriál pro naprosté JS negramoty.

  1. Nette Sandbox, přidat Naju a oživit ajaxové snippety (ajaxové formuláře a nějaké tlačítkem ovládané show/hide části stránky). Případně ukázku nějakého appendováni snippetu (donačítání dalších hodnot).
  2. Jak navázat Naju na překreslené prvky. Třeba ten confirm dialog.
  3. Modální okna. To teď řeším pomocí jQuery bez vazby na Naju.
  4. Jak v Naje poslat dotaz na server a jak dostanu odpověď. Třeba lazy načítaná nápovědná bublina po kliknutí na tlačítko nápověda.
  5. Oživení závislých selectboxů pomocí snippetArea a snippetů a Naji. Obdobně se případně řeší i nějaké našeptávání hodnot z db (autocomplete).

Tohle jsou asi veškeré JS záležitosti, které jsem řešil na větším vnitrofiremním projektu. Ještě nějaké podmíněné disablování formulářových polí, nebo předpočítávání hodnost, ale to předpokádám bude všechno podobné jako bod 5, případně je to zcela nezávislý scriptík co jen předvyplní pole výsledkem nějakého výpočtu.

Jo a ještě jsem používal přesouvání řádků v tabulce pomocí jQuery sortable, ale to už považuji za pokročilejší funkce, které bych nechal řešené tím jQuery. Stejně jako třeba datepicker apod. To si sám programovat v čistém JS nebudu.

Některé věci už jsem si nějak splácal, ale vesměs kopírováním různých řešení v JQuery ze StackOverflow. Vlastně nevím jak v JS programovat čistě. Takže mě zajímá, jak to udělat správně. Ale zase frontend beru spíš jako pozlátko a nechci se věnovat JS příliš do hloubky jen proto, abych pak mohl říct – teď už ten confirm dialog umím napsat čistě :) Základ je pro mě server.
Takže takovýhle tutoriál s řešením typických základních věcí by byl výborný!

Editoval Šaman (19. 1. 2021 19:40)

dakur
Člen | 493
+
+2
-

Co jsem tak našel, že jsem řešil:

  • potřeboval jsem v makeRequest() poslat v data parametru string (stringifikovaný JSON) a ono to odešlo ve tvaru 0=[&1={&2=s&3=o... (forum topic)
  • pokaždé mám problém, že se mi replacuje history state a já to nechci
  • při přijetí response chci udělat vlastní akci, aby naja nesahala na DOM (nakonec jsme došli k tomu, že dává smysl použít jen fetch)
  • po překreslení snippetů chci udělat nějakou akci na elementu, kterým jsem ajax request spustil, např. ho skrýt

Editoval dakur (20. 1. 2021 9:20)

Petr Parolek
Člen | 455
+
0
-

Ahoj, řešil jsem potíže s odesílám pole v požadavku viz https://github.com/…a/issues/202 a před chvílí jsem našel i řešení https://github.com/…a/issues/202#… bez úprav v Naji.

Editoval ppar (20. 1. 2021 15:52)

Lumeriol
Generous Backer | 58
+
+1
-

Jelikož jsem migroval od nette.ajax přes Nittro až k Naje, navíc s využitím jQuery, mohu za sebe, jakožto javascript amatéra, mohu napsat toto:

  1. nástroje: integroval jsem Naju 1 klasickým přilinkováním souborů, Naju 2 testuji přes Webpack s balíčkem contributte/webpack-skeleton, respektive „jiripudil/2019–04–10-nette-conference“: https://github.com/…e-conference
  2. chování v průběhu: spinner, confirm dialogy. Více méně podle nalezených příkladů na fóru, v dokumentaci a metodou PO (pokus/omyl)
  3. chování po zpracování: změna tagu title stránky po zpracování snippetu (např. výběr filtrů produktů), přesměrování/překreslení (např. při registraci po kontrole e-mailu nebo při změně platební metody), změna hodnot ve formuláři (načtení údajů z ARES po vyplnění IČO), contributte/datagrid (ale ten má Naju již integrovanou), chystám se na donačítání dalších produktů na stránku a propojení s paginatorem.
  4. řešené problémy:
    • migrace skriptů z verze 1 na 2.x – zejména co se týká redirectů (v závislosti na podmínce může být snipet překreslen a nebo proběhne přesměrování)
    • skripty v komponentách a opětovné bindnutí Najy
    • příkladů na Naju 2 je poskrovnu

Jak už psal tuším @Šaman v jiném příspěvku, většina z nás začínala na nette.ajax, který jsme měli jakž takž zmáknutý, umělo to vše, co jsme potřebovali a dalo se to „pěkně“ rozšiřovat. Ten přechod na Naju je tak pro javascript neznalé/začátečníky složitější a musí se znát více celé API. Což není samozřejmě výtka, doba pokročila :)

Trochu jsem doufal, že nějaká ajaxová kapitola bude součástí projektu Skynette, ale tam je bohužel ticho po pěšině.