Projekt

Obecné

Profil

Heatmap aplikace » Historie » Revize 4

Revize 3 (Jakub Vašta, 2020-05-27 14:05) → Revize 4/6 (Jakub Vašta, 2020-05-27 14:05)

h1. Heatmap aplikace 

 Applikace pro zobrazování heatmap, resp. její backend, je napsána v jazyce _PHP_ ve verzi 7.4 s využitím frameworku _Symfony_ a šablonovacího systému _twig_. Dále je využit _html5_ + _javascript_ + _css_ pro vývoj frontendu s využitím _jQuery_, _leaflet_, _leaflet-heat_, _bootstrap_ a _sass_. 

 h3. Struktura projektu 

 Pro pochopení struktury projektu je zapotřebí znát obecnou struktury projektů tvořených v Symfony tzn. struktura je velmi zjednodušena oproti reálnému projektu, který obsahuje celou strukturu dle konvencí Symfony. 

 <pre><code class="text"> 
 /symfony/ 
 ├── public 
 │     ├── css 
 │     ├── img 
 │     └── js 
 │           ├── vendor 
 │           └── zcu-heatmap.js 
 ├── src 
 │     ├── Controller 
 │     │       ├── HeatmapController.php 
 │     │       └── HomeController.php 
 │     ├── Entity 
 │     │       └── DataSet.php 
 │     ├── Form 
 │     │       └── DataSetType.php 
 │     ├── Repository 
 │     │       ├── IOpenDataManager.php 
 │     │       └── OpenDataManager.php 
 │     └── Utils 
 │           └── Utils.php 
 ├── templates 
 │     ├── base.html.twig 
 │     ├── heatmap.html.twig 
 │     └── index.html.twig 
 └── tests 
     ├── Controller 
     │       ├── HeatmapControllerTest.php 
     │       └── HomeControllerTest.php 
     └── Repository 
           └── OpenDataManagerTest.php 
 </code></pre> 

 h2. Backend 

 Tato část je umístěna ve složkách _src_ a _tests_ přičemž jak již názvy vypovídají, tak složka _src_ obsahuje zdrojové kódy aplikace, kdežto složka _test_ obsahuje příslušné unit a funknčí testy. Aplikace je poměrně dobře komentována a drží se konvencí, proto bude uveden pouze stručný popis jednotlivých tříd. 

 * *HeatmapController.php* je controller pro _heatmap.html.twig_, který má dále připravené zdroje dat, které dává k dispozici v podobě _json_ odpovědi 
 > * *heatmap/opendata/{name}/{date}/{time}* pro získání konkrétního datasetu 
 > * *heatmap/available/{date}* pro získání dostupných datasetů v daný datum 
 > * *heatmap/dates* pro získání všech datumů s alespoň jedním dostupným datasetem 
 > * *heatmap/positions/{name}* pro získání pozic jednotlivých zdrojů dat pro daný dataset 
 > * *heatmap/last* pro získání posledního dostupného data ke každému datasetu 
 * *HomeController.php* je controller pro _index.html.twig_ 
 * *DataSet.php* reprezentuje data formuláře pro výběr konkrétního datasetu na _heatmap.html.twig_ viz https://symfony.com/doc/current/forms.html 
 * *DataSetType.php* vyplní data pro formulář pro výběr konkrétního datasetu na _heatmap.html.twig_ viz https://symfony.com/doc/current/forms.html 
 * *IOpenDataManager.php* rozhraní pro komunikaci s databází 
 * *OpenDataManager.php* konkrétní implementace rozhraní pro komunikaci s databází pro mongodb a strukturu databáze viz [[Technická specifikace]] a [[Správa datasetů]] 

 h2. Frontend 

 
 Tato část je umístěna ve složkách _public_ a _templates_. 

 * *base.html.twig* základní šablona systému _twig_ 
 * *heatmap.html.twig* stránka pro zobrazování heatmap 
 * *index.html.twig* úvodní stránka s informacemi o projektu 
 * *vendor* složka obsahující javascriptové knihovny jako _leaflet_ a _leaflet-heat_ 
 * *zcu-heatmap.js* javascript řídící vykreslování map, heatmap vrstev, animace, client side validation ... 

 Samozřejmě jsou v projektu kromě uvedených položek i css soubory a jejich příslušné knihovny dle standardů zavedených ve vývoji webových aplikací.