Diagram průběhu generování vícevrstvé navigace

pull/6/head
Emil Miler 5 years ago
parent c5e2e022e7
commit 3fe6d5aef4

@ -0,0 +1 @@
<mxfile host="app.diagrams.net" modified="2020-04-26T15:32:20.875Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36" etag="XFr7jOKMDi_xrn2ql5_A" version="13.0.1" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>

@ -113,13 +113,16 @@ Z principu by žádný obsah neměl být definován přímo v šabloně, nýbrž
\section{Automatické generování vícevrstvé navigace} \section{Automatické generování vícevrstvé navigace}
\quest[inline]{Je následující část srozumitelná?} Obsah modelové implementace je dělen do stromové datové struktury o potenciálně nekonečné hloubce, kdy každá část větve je v rámci generátoru vlastní kategorií, nikoliv stránkou. Pro modelovou implementaci bylo zvoleno, aby navigace byla generována v návaznosti na aktivní cestu ve stromě. Ve stránce jsou dvě různé navigace, jedna hlavní a vždy vidiětelná, která obsahuje rozdělení obsahu dle škol a druhá navigace, která zobrazuje aktivní větev stromu.
Obsah modelové implementace je dělen do stromové datové struktury o potencionálně nekonečné hloubce, kdy každá část větve je v rámci generátoru vlastní kategorií, nikoliv stránkou. Pro modelovou implementaci bylo zvoleno, aby navigace byla generována v návaznosti na aktivní cestu ve stromě. Ve stránce jsou dvě různé navigace, jedna hlavní a vždy vidiětelná, která obsahuje rozdělení obsahu dle škol a druhá navigace, která zobrazuje aktivní větev stromu. \begin{figure}[h]\centering
\includegraphics{img/generovani-vicevrstve-navigace}
\caption{Diagram průběhu generování vícevrstvé navigace}
\end{figure}
První vrstvou struktury jsou hlavní sekce, v rámci implementace pojemnované jako $L_1$, které jsou vypsány vždy ve vlastní navigaci. Pod touto navigací se zobrazuje seznam všech kategorií, které vybraná položka v $L_1$ obsahuje. Pokud uživatel zvolí kteroukoliv položku v $L_2$, v navigaci se objeví další sloupec, který obsahuje všechny podkategorie vybrané položky, tedy položky ve vrstvě $L_3$. Takto lze stromem procházet potencionálně do nekonečna. Styly modelové šablony ovšem počítají s maximální hloubkou čtyř subkategorií. První vrstvou struktury jsou hlavní sekce, v rámci implementace pojemnované jako $L_1$, které jsou vypsány vždy ve vlastní navigaci. Pod touto navigací je zobrazen seznam všech kategorií, které vybraná položka v $L_1$ obsahuje. Pokud uživatel zvolí kteroukoliv položku v $L_2$, v navigaci se objeví další sloupec, který obsahuje všechny podkategorie vybrané položky, tedy všechny podkategorie ve vrstvě $L_3$. Takto lze stromem procházet potenciálně do nekonečna. Styly modelové šablony ovšem počítají s maximální hloubkou čtyř subkategorií.
Tato funkcionalita je implementována pomocí dvou cyklů. První cyklus (příklad \ref{lst:obsah-cyklus1}) se provádí pro všechny rodiče aktivní ktegorie vrstev $L_2,L_3,\dotsc,L_n$, kde $n$ je aktuílní vrstva. V každé iteraci se mění kontext, ve kterém generátor pracuje. Z daného kontextu generátor vypisuje všechny subkategorie každého svého rodiče. V druhém cyklu (příklad \ref{lst:obsah-cyklus2}) se vypisují všichni potomci dané stránky, tedy potomci ve vrstvě $L_{n+1}$. Tato funkcionalita je implementována pomocí tří cyklů, z níchž jeden je vložený. První cyklus (příklad \ref{lst:obsah-cyklus1}) se provádí pro všechny rodiče aktivní ktegorie vrstev $L_2,L_3,\dotsc,L_n$, kde $n$ je aktuílní vrstva. V každé iteraci se mění kontext, ve kterém generátor pracuje. Z daného kontextu generátor vypisuje pomocí vnořeného cyklem všechny subkategorie. Ve druhém cyklu (příklad \ref{lst:obsah-cyklus2}) se vypisují všichni potomci dané stránky, tedy potomci ve vrstvě $L_{n+1}$.
\begin{lstlisting}[label=lst:obsah-cyklus1,caption=Cyklus pro vypisování všech rodičů v dané větvi navigace] \begin{lstlisting}[label=lst:obsah-cyklus1,caption=Cyklus pro vypisování všech rodičů v dané větvi navigace]
{% if section.ancestors %} {% if section.ancestors %}

Binary file not shown.