Heatmap aplikace » Historie » Verze 5
Jakub Vašta, 2020-05-27 18:02
1 | 1 | Jakub Vašta | h1. Heatmap aplikace |
---|---|---|---|
2 | |||
3 | 5 | Jakub Vašta | Aplikace 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_. |
4 | 1 | Jakub Vašta | |
5 | 3 | Jakub Vašta | h3. Struktura projektu |
6 | |||
7 | 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. |
||
8 | |||
9 | <pre><code class="text"> |
||
10 | /symfony/ |
||
11 | ├── public |
||
12 | │ ├── css |
||
13 | │ ├── img |
||
14 | │ └── js |
||
15 | │ ├── vendor |
||
16 | │ └── zcu-heatmap.js |
||
17 | ├── src |
||
18 | │ ├── Controller |
||
19 | │ │ ├── HeatmapController.php |
||
20 | │ │ └── HomeController.php |
||
21 | │ ├── Entity |
||
22 | │ │ └── DataSet.php |
||
23 | │ ├── Form |
||
24 | │ │ └── DataSetType.php |
||
25 | │ ├── Repository |
||
26 | │ │ ├── IOpenDataManager.php |
||
27 | │ │ └── OpenDataManager.php |
||
28 | │ └── Utils |
||
29 | │ └── Utils.php |
||
30 | ├── templates |
||
31 | │ ├── base.html.twig |
||
32 | │ ├── heatmap.html.twig |
||
33 | │ └── index.html.twig |
||
34 | └── tests |
||
35 | ├── Controller |
||
36 | │ ├── HeatmapControllerTest.php |
||
37 | │ └── HomeControllerTest.php |
||
38 | └── Repository |
||
39 | └── OpenDataManagerTest.php |
||
40 | </code></pre> |
||
41 | |||
42 | 1 | Jakub Vašta | h2. Backend |
43 | |||
44 | 5 | Jakub Vašta | Tato část je umístěna ve složkách _src_ a _tests_ přičemž, jak již názvy napovídají, tak složka _src_ obsahuje zdrojové kódy aplikace, kdežto složka _tests_ 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. |
45 | 1 | Jakub Vašta | |
46 | 3 | Jakub Vašta | * *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 |
47 | > * *heatmap/opendata/{name}/{date}/{time}* pro získání konkrétního datasetu |
||
48 | > * *heatmap/available/{date}* pro získání dostupných datasetů v daný datum |
||
49 | > * *heatmap/dates* pro získání všech datumů s alespoň jedním dostupným datasetem |
||
50 | > * *heatmap/positions/{name}* pro získání pozic jednotlivých zdrojů dat pro daný dataset |
||
51 | > * *heatmap/last* pro získání posledního dostupného data ke každému datasetu |
||
52 | * *HomeController.php* je controller pro _index.html.twig_ |
||
53 | * *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 |
||
54 | * *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 |
||
55 | * *IOpenDataManager.php* rozhraní pro komunikaci s databází |
||
56 | * *OpenDataManager.php* konkrétní implementace rozhraní pro komunikaci s databází pro mongodb a strukturu databáze viz [[Technická specifikace]] a [[Správa datasetů]] |
||
57 | |||
58 | 1 | Jakub Vašta | h2. Frontend |
59 | 4 | Jakub Vašta | |
60 | 3 | Jakub Vašta | Tato část je umístěna ve složkách _public_ a _templates_. |
61 | |||
62 | * *base.html.twig* základní šablona systému _twig_ |
||
63 | * *heatmap.html.twig* stránka pro zobrazování heatmap |
||
64 | * *index.html.twig* úvodní stránka s informacemi o projektu |
||
65 | * *vendor* složka obsahující javascriptové knihovny jako _leaflet_ a _leaflet-heat_ |
||
66 | * *zcu-heatmap.js* javascript řídící vykreslování map, heatmap vrstev, animace, client side validation ... |
||
67 | |||
68 | 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í. |