Změna pozice dat v tabulce popocí sortable a update v dtb

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
unset
Člen | 16
+
0
-

Ahoj, snažím se vytvořit script na úpravu pozice dat v dtb, pomocí jquery sortable změnu pozice ve výpisové tabulce už mám plně funkční jen se mi nedaří poslání upraveného pořadí do componentypomocí javascriptu.

V souboru admin.js mám:

$(document).ready(function() {
    $('#grid tbody').sortable({
        revert: true,
        handle: '.handle',
        update : function () {
            $.get("\/sandbox-admin\/www\/admin\/menu\/?do=menuGrid-test", {'order': $("#sortable").sortable("toArray")});
        }
    });
});

v componentě mám handly:

public function handleTest($order) {
        dump($order);
        $this->redirect('this');
    }

Kde by se mi měli vypsat data odeslané javascriptem ale nedaří se mi to. Nevíte prosím někdo kde by mohla být chyba? Postupoval jsem podle postupů tady na fóru ale bohužel bez úspěch. Děkuji za každou radu.

Aurielle
Člen | 1281
+
0
-

Podívej se, na jakou adresu přesně se to odesílá. Podle mě bude problém v tom, že parametr v URL pro daný signál v komponentě se nejmenuje jen order, ale je prefixovaný názvem komponenty, tedy menuGrid-order.

unset
Člen | 16
+
0
-

Upravil jsem to na menuGrid-order ale stále nic.

$(document).ready(function() {
    $('#grid tbody').sortable({
        revert: true,
        handle: '.handle',
        update : function () {
            $.get("\/sandbox-admin\/www\/admin\/menu\/?do=menuGrid-test", {'menuGrid-order': $("#sortable").sortable("toArray")});
        }
    });
});
Jan Mikeš
Člen | 771
+
0
-

Ahoj, doporucuji si link brat primo ze sablony (z html) pomoci data attributu a nepredavat ho napevno do js.

Inspirovat JS se muzes zde: https://github.com/…orderable.js#L46
je to moje knihovna, kterou pouzivam v projektech na razeni radku v tabulce v kombinaci s doctrine.

latte u me pak vypada nejak takto:

<table class="orderable" data-orderable-handle="{link reorder!}">
	<thead>...</thead>
	<tbody>
		{foreach $items as $item}
			<tr data-orderable-id="{$item->id}">
				...
			</tr>
		{/foreach}
	</tbody>
</table>

Presenter:

	public function handleReorder()
	{
		if ($this->isAjax() && $this->request->isMethod("POST")) {
			$this->orderableOrganiser->update($entityClass, $this->request->getPost("positions"));
		}

		$this->terminate();
	}

Ber to jako inspiraci.

unset
Člen | 16
+
0
-

@Lexi děkuji to je přesně to co jsem hledal! Jen bych se chtěl ještě zptat jestli jsi se setkal už s tím když jsi začal měnit pozici řádku v tabulce, tak jestli se ti všechny buňky začnou floutovat do leva. Jakoby že se všechny „smrsknou“ k sobě a nevypadají stylově stejně jako řádky kolem. Nevím jestli je to pochopitelné z mého popisu :D

Jan Mikeš
Člen | 771
+
0
-

@unset setkal, k tomu slouzi prave ta helper funkce pro orderable

var fixHelperModified = function(e, tr) {
		var $originals = tr.children();
		var $helper = tr.clone();
		$helper.children().each(function(index)
		{
			$(this).width($originals.eq(index).width())
		});
		return $helper;
	};

	$("table tbody").sortable({
			helper: fixHelperModified
	});
unset
Člen | 16
+
0
-

@Lexi díky moc!