Změna pořadí obrázků javascriptově

vanaveno
Člen | 144
+
0
-

Ahojte, potřeboval bych poradit, popřípadě odkázat na nějaké hotové řešení. Potřeboval bych měnit pořadí obrázků a to chycením myši a přesunutí na jinou pozici. U obrázků mám v databázi tabulku orderItem. Zatím to měním přepisováním čísel pozice, ale chtěl bych to udělat nějak javascriptově. Určitě to tady někdo řešil. Zatím jsem mi nepodařilo zjistit jak na to. Jak to nějak ten javascript zapíše do databázaze.

Děkuji za radu
Vana

Pavel Kravčík
Člen | 1195
+
0
-

Hledej sortable – například https://jqueryui.com/sortable/. JS má několik eventů (viz API https://api.jqueryui.com/sortable/). V tom eventu budeš volat nějaký AJAX v Nette a tam uděláš dotaz do DB. Těch možností sortable je tuna, vyber si který Ti vyhovuje a ten implementuj.

Editoval Pavel Kravčík (22. 8. 2019 12:30)

ic
Člen | 430
+
0
-

Javascript to do databáze nezapíše, nemá k ní přímo přístup… ale co může, tak asynchronně zavolat nějakou url na základě nějaké akce. Například tedy při přesunu obrázku na řekněme druhou pozici javascript jednak přemístí obrázek a jednak udělá fetch() na url řekněme app?pictureId=12345&position=2. Tolik obecně k principu fungování.

vanaveno
Člen | 144
+
0
-

Pavel Kravčík napsal(a):

Hledej sortable – například https://jqueryui.com/sortable/. JS má několik eventů (viz API https://api.jqueryui.com/sortable/). V tom eventu budeš volat nějaký AJAX v Nette a tam uděláš dotaz do DB. Těch možností sortable je tuna, vyber si který Ti vyhovuje a ten implementuj.

Díky za odkazy. Tohle znám, akorát je pro mě ještě neznámá, jak právě změnit díky tomu oredrItem v databázi. Příklad. Obrázky jsou seřazeny podle orderItem 1,2,3,4 já změním pozice např 1,3,4,2, obrázky se v tomto pořadí přepíší na 1,2,3,4 a zapíší v databázi.

Pavel Kravčík
Člen | 1195
+
0
-

To myslím tím „volat nějaký AJAX“, který může vypadat nějak takto:

//šablona - event trigger ze sortable
$.nette.ajax({
	url: {plink resort!, id => id, orderNo => order}
});

//presenter - doplň si tam logiku kterou potřebuješ pro řazení ostatních záznamů, víš že tenhle se změnil, takže by mělo stačit všechny po něm či předním přepočítat
pf handleResort($id, $orderNo)
{
	$row = $repository->getByID($id);
	$row->orderNo = $orderNo;
	$repository->save($row);
}