Autor Zpráva
mimochodec
Profil
Viděl jsem v průběhu času několik javascriptových řešení toho, když se má pracovat s větší tabulkou. Popíšu, co bych přesně potřeboval.

- stránkování
- práce s cca 8000 řádky
- filtrování, třídění

Mohl by být i nějaký modální panýlek pro editaci textu v buňkách, ale není to nutné. Pokud nebude, potřebuju možnost si ho doprogramovat sám.
S googlem to docela umím, našel jsem třeba stránku, kde takových skriptů bylo 30. Jde mi o konkrétní tipy na něco, co můžete doporučit, protože máte dobrou zkušenost. Díky.
Použití jquery se nebráním.
_es
Profil
mimochodec:
A to stránkovanie, filtrovanie a pod. má nejako spolupracovať so serverom, alebo sa má do prehliadača načítať celá tabuľka a až s ňou „pracovať“? Ak to má nejako spolupracovať „online“so serverom tak ide o to, čo všetko bude v tej databázovej aplikácii implementované, s akými prípadmi sa bude rátať, napr. či to môže editovať len jedna osoba alebo viac, či sa bude dať mazať a pridávať záznamy a pod.
mimochodec
Profil
_es:
A to stránkovanie, filtrovanie a pod. má nejako spolupracovať so serverom, alebo sa má do prehliadača načítať celá tabuľka a až s ňou ‚pracovať‘?

Stránkování a filtrování si představuju čistě v režii JS, tzn. data se načtou najednou, pak už data netečou. Editovat bude jen jedna osoba, kolize typu "tys mi to smazal pod rukama" nehrozí. Přidaávat / editovat / mazat řádky bych chtěl taky bez refreshe stránky, tzn. ajaxem. Jak už jsem psal, můžu si to doprogramovat sám, ale potřebuju přinejmenším to, aby mi to ta tabulka nějak umožnila.
_es
Profil
mimochodec:
Ale stále si musíš zanalyzovať všetky možné situácie a ako by mali byť riešené. Pri pridávaní, mazaní, editovaní bude potom práve zobrazená stránka pre iných návštevníkov neaktuálna - to sa „bije“ s tým, že má byť tabuľka načítaná len raz a pod. Alebo má stránkovanie, filtrovanie a pod. fungovať len pre editujúceho? Ak si to všetko zanalyzuješ, tak to máš vlastne hotové - menenie obsahu buniek tabuľky je predsa v JS jednoduché.
mimochodec
Profil
_es:
Nic ve zlém. Jde o web antikvariátu, který provozuje jedna majitelka a má tam 15 návštěv denně. Kolize a nekonzistence mě prostě nezajímají.
Tabulku potřebuju jak pro veřejnou část (v "zamknutém" režimu), tak do administrace (s možností editace).

Už jsem to kdysi potřeboval a určitě mi tehdy prošlo rukama toto: http://www.jqwidgets.com/jquery-widgets-demo/demos/jqxgrid/index.htm?(arctic)#demos/jqxgrid/cellediting.htm
Jen už bohužel nevím, jestli jsem to tenkrát úspěšně použil, nebo došlo během zapracovávání k nějakým změnám nadšeného názoru.
_es
Profil
mimochodec:
Kolize a nekonzistence mě prostě nezajímají.
To sú práve tie „drobnosti“, ktoré si musíš najprv zanalyzovať.
Ide o kompletnú databázovú aplikáziu, ktorá má nejakú serverovú časť, nejakú klientsku časť, nejako zadefinovanú výmenu dát medzi nimi a pod. Takže akosi nedáva zmysel, aby sa to dalo spraviť len v JS v prehliadači. Buď si musíš nájsť nejakú vhodnú celú aplikáciu (aj so serverovou časťou) a vhodne nakonfugurovať, alebo to napísať celé sám. Ak to má editovať len jedna osoba, prečo jednoducho neoddelíš editovanie dát od zobrazenia pre zákazníkov? Prečo do triedenia a stránkovania „mixuješ“ editovanie dát? Okrem toho, ak ide o web antikvariátu, čo má byť „celou tabuľkou“? Zoznam všetkých kníh so všetkými podrobnosťami? Prečo by si ho mali sťahovať úplne všetci návštevníci, nie je to neefektívne?
mimochodec
Profil
_es:
Já myslím, že si úplně nerozumíme, možná to popisuju nějak nejasně. Klientská část je od administrace oddělená dostatečně (na základě session klidně zobrazím data přes něco úplně jiného, když bude třeba), v tom problém vůbec není.
Nevím, proč ti nedává smysl, aby se to editovalo "len v JS". Existují skripty (jako třeba ten výše), kterým dáš 8000 řádků z databáze, sekundu se to načítá a pak nad těmi daty filtruješ, řadíš, přeskakuješ po stránkách, to vše v rámci toho JS, bez jakékoliv komunikace s DB a bez znovunačtení stránky. To je jedna věc. Některé z těch skriptů umí tabulku i editovat - opět bez opakovaného načítání. Ajaxem si zařídím komunikaci s databází. Že si to oddělím sessionou, to je samozřejmé a je to mimo téma.
To je všechno, co potřebuju. Výše uvedený skript to umí, ale předpokládám, že není jediný, ptal jsem se na tipy na další.
_es
Profil
mimochodec:
Některé z těch skriptů umí tabulku i editovat
No dobre, ale musí tam byť aj nejaká serverová časť. Stále si musíš zadefinovať, čo a kedy má robiť server a čo klient (prehliadač). A to musíš ty, na to ti nejaký superuniverzálny skript nikto neporadí a ak ti poradí nejaký iný, tak to tam budeš musieť stále ty sám zadefinovať a podľa toho naprogramovať či nakonfigurovať. Na menenie buniek tabuľky stačí trochu JS kódu, aj bez jQuery, či iných zložitých hotových skriptov.
Chamurappi
Profil
Reaguji na _es:
Mně přijde celkem dobře pochopitelné, co mimochodec chce.

Stále si musíš zadefinovať, čo a kedy má robiť server a čo klient (prehliadač).
To už částečně zadefinoval, server pošle všechna data, klient jen mění zobrazení. A občas bude měnit i nějakou hodnotu a posílat ji zpátky…
Není nutné vymáhat specifikaci bližších podmínek pro hledaný skript, pokud žádný takový skript neznáš. A pokud znáš spoustu takových skriptů, můžeš sem nasypat odkazy a třeba se budou hodit i někomu dalšímu, kdo má i mírně jiné zadání.


Reaguji na mimochodce:
Něco podobného jsem už dvakrát vyráběl, ale bohužel se o to nemůžu podělit. Jen podotknu, že je to možná jednodušší vyrobit než najít :-) (zejména, pokud si to chceš pak sám vylepšovat)
_es
Profil
Chamurappi:
Mne to dostačne „zadefinované“ nepríde. Na zmenenie všetkých buniek tabuľky (v prehliadači) podľa nejakého kľúča zobratých z nejakého poľa, či iných dát dostupných v JS, stačí vcelku jednoduchý cyklus aj bez jQuery a pod. Podstatne zložitejšie je to ostatné, prípadne prispôsobenie hotových knižníc konkrétnej situácii. Trebárs - ako má byť presne riešené kombinovanie triedenia a stránkovania. Má triedenie zotriediť len zobrazené položky, alebo sa má zotriediť celá tabuľka a až z nej zobraziť aktuálna „stránka“ z dát? Podobne pre filtrovanie. Má byť nejako umožnená hromadná zmena dát (viac ako jeden záznam)? Má byť triedenie podľa českej abecedy? Ak ide o editáciu len jednou osobou, dá sa spraviť aj obmedzenie na prehliadač - niektoré umožňujú lokálne SQL databázy.

mimochodec:
dáš 8000 řádků z databáze, sekundu se to načítá a pak...
Alebo môže byť pomalé pripojenie a načítať sa to môže trebárs minútu, alebo sa pridá do každého riadku viac podrobností o knihe a dát bude mnohonásobne toľko, alebo...
Chamurappi
Profil
Reaguji na _es:
Má triedenie zotriediť len zobrazené položky, alebo sa má zotriediť celá tabuľka a až z nej zobraziť aktuálna ‚stránka‘ z dát?
První možnost mi přijde celkem neužitečná a hloupá, o ní není nutné uvažovat. Smysl by měla snad jen tehdy, když bych neměl všechna data okamžitě k dispozici a kdybych neměl dostupné žádné jiné filtrování.

Má byť nejako umožnená hromadná zmena dát (viac ako jeden záznam)?
V prvním příspěvku mimochodec psal, že editace není nutná. Můžeš sem tedy dát i odkazy na skripty, které jsou bez editace.

Má byť triedenie podľa českej abecedy?
Asi by to bylo lepší. Ale klidně sem dej nějaký hotový skript, který to neumí, můžeme to zkusit dodělat.

Ak ide o editáciu len jednou osobou, dá sa spraviť aj obmedzenie na prehliadač - niektoré umožňujú lokálne SQL databázy.
Nevím, jestli se na tohle lokální prohlížečová DB vyplatí, řekl bych, že spíš ne. Ukaž nějaký skript, který ji používá.

Alebo môže byť pomalé pripojenie a načítať sa to môže trebárs minútu, alebo sa pridá do každého riadku viac podrobností o knihe a dát bude mnohonásobne toľko, alebo...
Jsem si jistý, že ti je v tuto chvíli mimochodec nesmírně vděčný za tvůj rozmařilý chuchvalec připomínek a že i všechna nevyřčená alebo poctivě zváží :-)
_es
Profil
Chamurappi:
V prvním příspěvku mimochodec psal, že editace není nutná
Písal, že nie je nutný „modální panýlek pro editaci textu v buňkách“, no neskôr písal, že je editovanie potrebné, no bude ho robiť len jedna osoba. Možnosť hromadnejší úprav je myslím dosť dôležitá - či stačí editovanie po jednotlivých knihách, alebo sa bude robiť často aj hromadnejšia zmena - aby sa editujúci príliš „neuklikal“ mu to nejako zjednodušiť. V prípade antikvariátu napríklad nejaká úprava raz za deň.

První možnost mi přijde celkem neužitečná a hloupá, o ní není nutné uvažovat.
Mne to nepríde neužitočné - napríklad si chcem len zoradiť práve zobrazené dáta (podľa iného kľúča než predtým). Druhá možnosť zobrazí iné dáta.

nějaký hotový skript, který to neumí
Obvykle to „nevie“ ten, kde nie je čeština „natvrdo“ zabudovaná. No pre súčasné prehliadače asi postačí „lokálne“ porovnanie, teda sa to zoradí podľa používaného prehliadača - napríklad starší článok https://www.interval.cz/clanky/serazeni-tabulky-javascriptem-snadno-a-rychle/.
mimochodec
Profil
Je tady moc textu a je moc hodin :-) Takže dneska už jen jedna věc. Editaci potřebuju a potřebuju ji bez znovunačítání celé tabulky. Psal jsem (nebo chtěl napsat), že by bylo příjemné, kdyby to ten skript umožňoval. Jestli to umožňovat nebude, musí mi umožnit, abych si to tam nějak dodělal sám.
_es
Profil
mimochodec:
Pripadá mi, že si neuvedomuješ, že je potrebná databázová aplikácia „na mieru“, hlavne časť pre editovanie. Ak majú byť dáta v aplikácii správne štrukturované, teda napríklad spisovatelia, vydavateľstvá a pod. v samostatných tabuľkách a v tabuľke kníh len číselné id k nim, tak sa editovanie značne komplikuje. Časť pre editovanie by asi mala byť riešená oddelene od časti pre zákazníkov.
Kcko
Profil
Jsem si jistý, že ti je v tuto chvíli mimochodec nesmírně vděčný za tvůj rozmařilý chuchvalec připomínek a že i všechna nevyřčená alebo poctivě zváží :-)
:D

mimochodec:
https://www.datatables.net/
http://www.jtable.org/

Obojí je založeno na CRUDU a má podporu Ajaxu a serverové části, neznám nic jiného (=lepšího).


_es:
Nevím jak moc uživatele mimochodec znáš, ale kdyby ses podíval do jeho profilu tak by sis možná všiml, že s PHP a databázi problém nemá a skutečně hledá to co výstižně popsal již na začátku.
Škoda, že to nechápeš a zbytečně jsi to tady zaplevelil (máš k tomu skutečně vlohy).

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: