miniSTAG   Předmět:
/
  Č.studenta:
  Filtr:    Další hledání...
Toto nejsou oficiální stránky Studijní agendy :-). Více... ⚿ Nepřihlášený

DEMO - Pozor, prezentovaná data nejsou z ostré databáze

Filtrování výpisů

Filtrovat výsledky v tabulkách na stránkách zobrazovaných miniSTAGem je možné dvěma různými způsoby s rozdílnými efekty: Oba způsoby lze kombinovat, tj. lze nastavit nějaký filtr v URL adrese a pomocí formuláře se pak filtrují data z již přefiltrované tabulky.

Pomocí parametru v URL

Pomocí vhodné podmínky lze u stránek zobrazovaných miniSTAGem data ještě před jejich výpisem vyfiltrovat, tj. zobrazeny budou pouze ty výsledky (řádky), které podmínku splňují. Např. je k dispozici stránka se seznamem studentů oboru a nás zajímají jen prváci. Nebo jen třeťáci a výš.

Jak na to

Podmínka se zadává (ručně) jako hodnota parametru filtr v URL adrese stránky, podmínka se pak aplikuje na všechny tabulky či jiné výpisy na dané stránce. Každá podmínka je uzavřena v hranatých závorkách a lze i kombinovat (ve smyslu "a zároveň"; o kombinacích ve smyslu "nebo" viz níže) více podmínek najednou. Např. do adresy stránky se seznamem studentů nějakého předmětu můžeme přidat
...&filtr=[!forma=K][roc>1][stud~A*]
což způsobí, že vypsáni budou pouze studenti, kteří nejsou v kombinované formě studia, studovali vyšší ročník a jejichž studijní (osobní) číslo začíná na "A" (= studenti FAV).

Testovat lze dokonce i pomocí hodnot z jiné tabulky donačtené použitím konstrukce [zvolenýnázev@označenítabulky]. Např. z daného seznamu studentů (třeba nějakého daného předmětu) vybrat jen ty, kteří mají cvičení z úplně jiného MA2 v úterý

...&filtr=[A@AkceS|[stud]|2009][A.kat=KMA][A.predm=MA2][A.sem=LS][A.den~ut][A.typ=Cv]
...&filtr=[A@AkceP|KMA|MA2|2009|LS][A.den~ut][A.typ=Cv][B@StudA|[A.akce]][stud=[B.stud]]
přičemž první varianta může být při větším počtu studentů v seznamu poněkud zdlouhavější, neboť se jednotlivě procházejí a u každého se zjišťuje rozvrh (tj. u každého extra dotaz do STAGu) zatímco u druhé se prochází seznam rozvrhových akcí předmětu a pak u každé akce její obsazení (což při obvykle nevelkém počtu kroužků předmětu znaméná méně dotazů). Nebo vybrat prezenční a studující studenty, kteří nejsou přihlášeni na žádný zkouškový termín z předmětu KMA/M1
...&filtr=[forma=P][stav=S][!A@TermS|[stud]|2010][A.kat=KMA][A.predm=M1][A.plat=A][A.typ=Zk]
...&filtr=[forma=P][stav=S][!A@TermP|KMA|M1|2010][A.plat=A][A.typ=Zk][B@StudT|[A.term]][stud=[B.stud]]
přičemž jde-li o více studentů (zatímco termínů je méně), může být rychlejší druhý z dotazů.

Tuto konstrukci je možné využít i k porovnání s více hodnotami ve smyslu "nebo", když za tuto jinou tabulku vezmeme "umělou" tabulku, do jejíchž řádků se zapíší jednotlivé testované hodnoty. Podobně lze kombinovat více různých podmínek ve smyslu "nebo" za pomoci umělé tabulky a negací. Např. vybrat najednou studenty 1. i 3. ročníku, či naopak všechny kromě studentů 1. a 3. ročníku, či vypsat studenty 1. ročníku spolu se studenty kombinovaného studia, lze

...&filtr=[A@TabCo||1;3][roc=[A.c1]]
...&filtr=[!A@TabCo||1;3][roc=[A.c1]]
...&filtr=[!A@TabCo||][!roc=1][!forma=K]
kde v posledním případě má umělá tabulka jeden řádek, jehož obsah (v uvedeném příkladu konkrétně prázdný) se nikde dále nevyužívá.

Podmínky zapisované v parametru filtr je samozřejmě dobré založit pouze na hodnotách těch položek, které se v daných výstupech vyskytují :-)

Názvy položek lze dohledat ve výstupu do PHP (následovat odkaz uvedený pod tabulkou a v připraveném formuláři zmáčknout tlačítko "PHP"), několik příkladů názvů je na stránce o exportu, resp. v příkladech níže.

Typy podmínek

V řetězci hodnota lze použít kód [název], resp. [názevtabulky.název], který bude před vyhodnocením podmínky nahrazen aktuální hodnotou dané položky.

Kromě '=' lze pro porovnání hodnot použít i další podmínky:

Jde v zásadě (až na úvodní otazník) o stejný zápis podmínek jako při specifikaci vlastního formátu výstupu.

Zapisované hodnoty by teoreticky měly být zakódované pro použití v URL (týká se asi hlavně speciálních znaků, případně písmen s diakritikou). Písmenům s diakritikou (miniSTAG pracuje v kódování iso-8859-2) se lze většinou vyhnout použitím "~" místo "=", pak stačí "psat cesky".

Příklady

V závislosti na typu tabulky a údajích v ní obsažených lze vypsat např.

Pomocí formuláře u tabulky

Ve formuláři jsou vypsány položky, podle kterých lze filtrovat, a hodnoty, které se u nich vyskytují (spolu s počtem výskytů v celé tabulce). V přefiltrované tabulce se pak zobrazí pouze řádky, v nichž hodnota každé položky odpovídá u ní zaškrtnutým hodnotám. Pokud u některé položky není zakliknuta žádná hodnota, podle této položky se nefiltruje (tj. jako kdyby byly u ní zaškrtnuty hodnoty všechny). Kliknutím na název položky v záhlaví lze zaškrtnutí hodnot invertovat.

Vlastní filtrování se provede tlačítkem "Filtrovat", zároveň se vypíše počet řádků odpovídajících filtru. Je možno nastavit, aby filtrování probíhalo automaticky, tj. jakmile je některé z výběrových kritérií změněno (což nemusí být vhodné u rozsáhlých tabulek, kde překreslení může nějakou chvíli trvat...).

Počty vyfiltrovaných hodnot u jednotlivých položek lze zobrazit i graficky. Klinutím na "G" u názvu položky se otevře nové okno a do něj se vykreslí příslušný histogram. Zmenou voleb u obrázku pak lze zobrazit i počty pro kombinace hodnot libovolných dvou položek z filtrovacího formuláře. S přefiltrováním tabulky se automaticky překreslí i histogram (lze vypnout).


miniSTAG -- M. Friesl, 2009-2022
Zdroj dat: DEMO Webové služby nad IS/STAG
2024-04-24 13:25:25