Vyskakovací okno s výběrem položek pro formuláře

HarkIV
Člen | 3
+
0
-

Ahoj,

mám takový doraz, jak elegantně řešíte u formulářů vyskakovací okno s výběrem položek?

Mám v administraci editační formuláře, které používají replicator a potřeboval bych u jednotlivých řádků po kliknutí na tlačítko vedle příslušného inputu, aby vyskočilo okno s výběrem položek. V tomto okně by byl formulář pro vyhledávání mezi položkami, řazení položek, stránkování a formulář pro výběr položky, který se má doplnit do editačního formuláře.

Jak řešíte znovu nastavení vyskakovacího okna po odeslání vyhledávacího formuláře, kliknutí na stránkování, apt. v případě, že ho využíváte jednou pro seznam uživatelů, podruhé např. pro seznam parametrů a potřebujete, aby i po znovu načtení pracoval se stejným modelem?

Mám funkční verzi, ale moc se mi nelíbí a asi by to šlo řešit lépe. Editační formulář rozšiřuji o potřebné input pole z vyskakovacího okna, tak abych měl i po odeslání filtrace ve vyskakovacím okně kompletní data z editačního formuláře a mohl přepsat původní hodnoty onClick callbacku. Při aktivaci vyskakovacího okna si pak uložím model, index pole, do kterého se bude doplňovat.

Napadá mne řešení, mít separátní stránku pro modul s výběrem dat. Tu ajaxově zavolat, přepsat si sní snippet ve vyskakovacím okně a po výběru řádku doplnit hodnotu do inputu v editačním formuláři pomocí javascriptu. Název služby modelu si uložit jako persistent a při nové načtení si službu vzít z contextu. Jen ještě nevím, jak vyřešit sloupce, které se mají zobrazovat. Ale asi taky jako presistent v serializované podobě i s jejich nastavením, aby se vědělo, co se má zobrazit ve filtračním formuláři v jednotlivých sloupcích (input, range, select…).

Díky moc za rady

dakur
Člen | 493
+
0
-

@HarkIV Ahoj, zkus ukázat nějaký screen, aby si to šlo lépe představit.

HarkIV
Člen | 3
+
0
-

@dakur Ahoj, určitě doplním. Blbě se mi to popisovalo a obrázek bude asi jasnější.

Zde je replikátor z formuláře, který přidává dynamicky řádky a přijímá ID odkazů
https://ibb.co/X2pKSX4

Po kliknutí na ikonku lupy by se otevře okno s výběrem odkazů:
https://ibb.co/w05THXG

Po výběru odkazu ve vyhledávacím okně, by se vložilo ID odkazu do příslušného řádku v replikátoru.

Na stránce může být více replikátorů, které budou chtít po vyskakovacím oknu, aby zobrazilo různé data (odkazy, uživatele, kategorie článků, atp.)

Když tak to ještě upřesněním. Moc děkuju

dakur
Člen | 493
+
0
-

@HarkIV Neznám úplně kontext, tj. čeho je to celé formulář a proč se musí co posílat na backend, ale skoro mi přijde, že lepší by bylo nechat to celé na frontendu a na backend posílat jen requesty na doplnění dat a pak celý výsledek při submitu. Dělali jsme tříkrokový registrační formulář a bez state-driven UI by mi to přišlo hodně nepřehledné (použili jsme React+Redux).