Projekt

Obecné

Profil

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í.