Rozhraní pro řazení výpisů
Školení, která pořádám
V Admineru je od začátku konzervativní rozhraní pro řazení výpisů – sloupce, podle kterých se má řadit, lze nastavit podobně jako podmínky vyhledávání. Lze tedy vybrat i více sloupců a u každého zvolit, zda se má podle něj řadit vzestupně nebo sestupně.
Na četné uživatelské žádosti jsem přidal i řazení kliknutím na záhlaví sloupce. Tento způsob má tu nevýhodu, že se výsledky dají seřadit jen podle jednoho sloupce, obvykle to ale stačí. Přemýšlel jsem, jak tento způsob rozšířit, aby se konzervativní rozhraní mohlo v zájmu zjednodušení odstranit, a na jedno řešení jsem přišel.
Ke každému záhlaví sloupce jsem přidal šipky pro vzestupné a sestupné řazení (automaticky skrývané JavaScriptem). Kliknutím na ně se sloupec přidal do stávajícího řazení, kliknutím na samotné záhlaví se stávající řazení zrušilo. To možná není úplně intuitivní, ale vzhledem k tomu, že obvykle si člověk vystačí s jednosloupcovým řazením, a také vzhledem k tomu, že se použitý způsob řazení zobrazí u provedeného SQL dotazu, mě tato neintuitivnost tolik netrápila.
Mnohem víc mě trápila skutečnost, že při filtrování dat bylo potřeba nejprve nastavit podmínky a teprve v druhém kroku stanovit řazení. Zbytečně se tak pokládaly dva dotazy. Z tohoto důvodu jsem nakonec konzervativní způsob řazení zachoval a vynález dal k ledu.
Diskuse
Marek:
Ackoli nechapu vetu o nutnosti dvou dotazu, vicesloupcove razeni je jednoduse resitelne pres zachytavani stisknuti CTRL (bez CTRL - radim dle jednoho, se stisknutym - pridam k razeni)
Ctrl mě samozřejmě také napadlo, ale problém je, že Ctrl+klik v prohlížečích slouží k otevření odkazu do nového tabu, takže se nedá použít.
Pokud se třídění dělá nezávisle na vyhledávání, tak je potřeba nejprve vyhledat (1. dotaz) a pak teprve setřídit (2. dotaz).
Na ctrl+klik je pekné riešenie:
<a href="<URL_SORTING_NORMAL>" onclick="function_ctrl_search(<ADD_SORTING_PARAM>); return false;>SORTING_PARAM</a>
Toto riešenie je pekné z toho dôvodu, že pokiaľ má používateľ zapnutý javascript reaguje JS funkcia (ta presmeruje na správnu url, kde sa pridá ďalšie filtrovanie) a pokiaľ nie sortuje sa normálne jednoparametrovo.
Pri používaní takýchto javascriptových rozšírení, by som odporučil na začiatok body vložiť kontrolu-upozornenie na funkčnosť javascriptu. Aby používateľ zbytočne nečakal vlastnosti, ktoré sú iba s podporou javascriptu.
<noscript><div class="warning">Javascript mate vypnuty ...</div></noscript>
Opakuji, že Ctrl+klik je v prohlížečích zvykem používat pro jinou operaci (stejně jako Shift+klik a Alt+klik), takže změna výchozího chování zhoršuje použitelnost. Druhý důvod, proč je to nevhodné, je neintuitivnost – uživateli musíme dát návod, aby ho vůbec napadlo to vyzkoušet.
Ale, dá se to řešit jinak. V UI by bylo tlačítko, které by nahradilo stisknutí shift/ctrl/alt - prostě tlačítko pro výběr více sloupců. Hmm, to už se dostáváme asi ke kompromisu.
v6ak:
No fakt. Já jsem ten článek četl narychlo a přesného rozhraní jsem si nevšiml. Bylo mi jasné, že se to bude blížit původní variantě ("Hmm, to už se dostáváme asi ke kompromisu.") a taky že jo :D
David Grudl:
Myslim ze nikdo nebude klikat na "radici" sloupec se zamerem otevrit neco do druheho tabu.
Jakub Vrána :
Já použití Ctrl nějakou dobu i zkoušel a právě proto, že jsem si jinak seřazené výsledky chtěl do nového tabu občas zobrazit, tak mě to začalo štvát.
kozotoč:
Stejně jako Marek taky nejsem moudrej, proč s tímto "vynálezem" se nedá jinak než spustit dva SQL dotazy. Mohl bys, prosí, Jakube vysvětlit? Díky
Jakub Vrána :
Dva dotazy jsou potřeba v případě, kdy chceme řádky nějak omezit (vyhledat) a zároveň setřídit. Když se k tomu použijí dvě různé rozhraní (formulář pro vyhledávání a odkazy pro řazení), tak je to potřeba udělat nadvakrát.
Kajman:
Co v order by zachovat minulé řazení a jen na začátek přidat to aktuálně kliknuté? Ale to už by byly dotazy tři a lidé by museli klikat pozpátku :-)
Diskuse je zrušena z důvodu spamu.