- PHP 7.1
- databáze kompabitilní s MySQL (MariaDB)
- composer
- webový server Apache se zapnutým
mod_rewrite
nebo nginx (s konfigurací pro vytváření pěkných URL) - splněné požadavky Nette Requirements Checkeru
- stáhnout zdrojový kód z Gitu:
git clone https://github.com/nufue/ranking
- v adresáři se staženým zdrojovým kódem nainstalovat závislosti pomocí
composer install --no-dev
(tento krok vytvoří složkuvendor
a její obsah) - vytvořit databázi (základní struktura je v
db/schema.sql
) - přejmenovat
app/config/config.local.example.neon
naconfig.local.neon
a vyplnit v něm přístupové údaje k databázi - přejmenovat
app/config/authenticator.example.neon
naauthenticator.neon
a definovat v něm alespoň jednu dvojiciuživatel:heslo
účtu správce a zároveň roliuživatel:role
(kderole
je 'admin') - v souboru
app/config/year.neon
změnit výchozí rok
Pokud chcete sledovat návštěvnost webových stránek, postupujte podle následujících kroků:
- přejmenovat
app/config/analytics.example.neon
naanalytics.neon
- přidat si v Google Analytics nový profil pro sledování webu, získat kód
Tracking ID
(ve formátu UA-xxxxxx-x) - v souboru
app/config/analytics.neon
změnitenabled: false
naenabled: true
a do řádkucode: 'UA-xxxxxxx-x'
zadat získanýTracking ID
- promazat nacachovanou konfiguraci v adresáři
temp/cache/Nette.Configurator
Pokud provozujete aplikace na serveru Apache a nemáte nasměrován DocumentRoot
do složky www
, je nutné do složek app
, bin
, config
, db
, logs
, temp
a vendor
umístit soubor .htaccess
s obsahem Deny from all
, jinak bude vaše konfigurace (např. údaje pro připojení k databázi) přístupná lidem, kteří odhadnout správnou adresu.
Obsahuje kategorie určující započítávání závodníků do žebříčku. Každý závod má přiřazenu právě jednu kategorii. Sloupec output_description
obsahuje text, který se ve výpisu připojí k názvu závodu. Sloupec select_description
obsahuje text, který se zobrazí v drop-down prvku v přidávání nebo editaci závodu. Podle pole order
jsou v drop-down prvku záznamy seřazeny. Platnost jednotlivých záznamů je možno ovlivnit nastavením sloupců year_from
a year_to
.
Obsahuje jednotlivé typy závodů. Sloupce year_from
a year_to
umožňují postihnout platnost některých druhů závodů pouze v určitých ročnících (což se uplatní například při změnách juniorských kategorií nebo přidání nového typu závodu od určitého ročníku).
Pokud by nastala situace, že je třeba obnovit typu závodu, který je již ukončen - například Územní přebor U12, který se mohl konat v letech 2013 až 2016, provede se přidání nového záznamu:
id = 'prebor_u12_2', description = 'Územní přebor U12', year_from = 2018, year_to = null
Provazuje competition_types
a scoring_tables
.
Obsahuje počet nejlepších výsledků závodních kol, které se počítají do žebříčku s uvedením platnosti od (year_from
) a platnosti do (year_to
). Oba sloupce mohou nabývat hodnoty NULL
, což znamená, že platnost od/do není omezena.
Obsahuje kategorie, jichž může být závodník členem.
Obsahuje seznam lig, které se každý rok konají. Pomocí sloupců year_from
a year_to
je možné existenci konkrétní ligy omezit na rozsah roků.
Provazuje competition_types_scoring
a scoring_tables_rows
.
Obsahuje bodové hodnoty jednotlivých umístění, rozlišených dle typu bodovací tabulky (odkaz do scoring_tables
). Vstupem pro tuto tabulku je příloha č. 2 Soutěžního řádu - Bodové hodnocení závodů LRU – plavaná.
Obsahuje počet členů ligových družstev s uvedením platnosti od (year_from
) a platnosti do (year_to
). Oba sloupce mohou nabývat hodnoty NULL
, což znamená, že platnost od/do není omezena.
Slouží k přepsání automaticky vypočteného názvu týmu v žebříčku. U závodníků, kteří jsou napsáni na soupisce ligového týmu, se použije název ligového týmu. Pokud je závodník zapsán na soupisky více týmů v jednom roce (obvykle 1. a v 2. lize), použije se název týmu, ve kterém je zapsán na procentuelně vyšším místě. Pokud by takto určený název týmu nebyl žádoucí, je možné záznamem do této tabulky pro konkrétního závodníka a rok specifikovat konkrétní zázev týmu, který se má v žebříčku zobrazovat.
Obsahuje týmy v jednotlivých ligách a rocích.
Provazuje ligové týmy (tymy
) a jejich členy (zavodnici
).
Obsahuje registrované i neregistrované členy, kteří byli přítomni v importovaných výsledcích.
Obsahuje kategorii pro konkrétního závodníka v konkrétním roce.
Obsahuje výsledky závodníků v jednotlivých závodech. Protože většina závodů je dvoukolových, obsahuje sloupce pro dvě kola (cips1
, umisteni1
, cips2
, umisteni2
). V případě, že se závodník příslušného kola neúčastnil, uvede se do příslušné dvojice sloupců hodnota NULL
. Pokud má závod více než dvě kola, je třeba založit v tabulce zavody
více závodů (jeden závod na 1. a 2. kolo, druhý závod na 3. kolo).
Obsahuje všechny v systému zadané závody. Každý závod je nějakého druhu (competition_types
), přičemž druh určuje, jaké bodovací schéma se použije pro započtení výsledku závodu do žebříčku.
Některé závody mohou být omezeny co do kategorií závodníků (competition_categories
), kteří se jich mohou zúčastnit - v takovém případě se nezapočtou do celkového žebříčku, nýbrž pouze do žebříčku příslušné kategorie (např. U15).
Každé importované výsledky musí obsahovat minimálně tyto sloupce:
- číslo registrace
- jméno závodníka
- družstvo
- kategorii
- počet bodů CIPS alespoň jednoho závodu
- umístění v alespoň jednom závodu
Pro každý záznam je třeba ověřit, zda-li:
- se jedná o registrovaného nebo neregistrovaného závodníka
- jméno z výsledků odpovídá uloženému jménu z databáze
- ve výsledcích je uvedena kategorie nebo ji lze dohledat z dřívějšího závodu ve stejném roce
Ověří se, zda-li existuje v tabulce zavodnici
dřívější záznam se stejným jménem.
Pokud existuje, zkontroluje se existence a rovnost kategorie v databázi a ve vstupních datech. Pokud obojí nastane, přiřadí se záznam k tomuto historickému záznamu. Pokud kategorie a databázi neexistuje, ale ve vstupních datech je, přidá se ke stávajícímu záznamu údaj o kategorii ze vstupních dat. V ostatních případech se zahlásí soft-error.
Pokud záznam se jménem v databázi neexistuje, ověří se, že ve vstupních datech je zadána platná kategorie. Pokud ano, založí se nové záznamy v tabulkách zavodnici
a zavodnici_kategorie
. V ostatních případech se zahlásí soft-error.
Ověří se, zda-li zadané číslo registrace existuje v tabulce zavodnici
.
Pokud ano, ověří se shoda jména - pokud se jméno neshoduje, je vypsáno upozornění. Obvykle je neshoda způsobena jednou z následujících příčin:
- překlep v zadaném čísle registrace (v upozornění se zobrazí úplně jiné jméno než je ve výsledcích) - v takovém případě se do zobrazeného textového pole vyplní správné číslo registrace
- překlep v zadaném jméně - můžeme ignorovat, v žebříčku se použije dříve zadané jméno (pokud je špatně, je možné jej změnit - viz níže)
Dále se ověří existence záznamu kategorie v databázi. Pokud záznam kategorie existuje, avšak nesouhlasí se vstupními údaji, je vypsáno upozornění.
Pokud zadané číslo registrace v tabulce zavodnici
neexistuje a zároveň ve vstupních datech není zadána kategorie, zobrazí se formulář pro nastavení kategorie u konkrétního závodníka - bez jejího vyplnění není možné výsledky uložit.
Přihlášený správce v horní liště klikne na odkaz Závodníci
, pomocí formuláře vyhledá závodníka buď podle čísla registrace nebo části jména.
U některého z nalezených záznamů klikne na Upravit, zobrazí se stránka s možností úpravy jména, zadáním nového čísla registrace (používat s rozmyslem) a úpravou kategorie v jednotlivém roce.
Doplní se nový záznam do tabulky leagues
. Je vhodné vyplnit sloupec year_from
rokem, od kterého liga existuje, aby se nezobrazovala v dřívějších letech.
Přejmenování stávající ligy se řeší ukončením platnosti (vyplněním pole year_to
) stávající ligy a vytvořením nového záznamu s novým označením.
Přidá se nový záznam do tabulky kategorie
. Pokud se vznikem nové kategorie vznikne také nový druh závodu, postupuje se podle návodu níže.
Do tabulky scoring_tables
se přidá nový záznam s textovým popisem bodovacího schématu. Následně se do tabulky scoring_tables_rows
přidají záznamy určující body (points
) pro jednotlivá umístění (rank
) v rámci bodovacího schématu (id
).
Přidá se nový záznam do tabulky competition_types
. Dále se novému typu závodu přiřadí bodovací schéma.
Přidá se nový záznam do tabulky competition_types_scoring
.
Přidá se nový záznam do tabulky team_name_override
. Správce má po přihlášení k dispozici editační rozhraní v sekci Nastavení
.
Přidá se nový záznam do tabulky counted_competitions
. Správce má po přihlášení k dispozici editační rozhraní v sekci Nastavení
.
Přidá se nový záznam do tabulky team_members_count
. Správce má po přihlášení k dispozici editační rozhraní v sekci Nastavení
.
Zobrazení žebříčku, výsledků jednotlivého závodu nebo jednotlivého závodníka je možné bez přihlášení.
Přidávání a editace závodů, přidávání výsledků, přidávání ligových týmů a úprava jejich soupisek, změny jména a kategorií u závodníků je možné pouze pro přihlášené uživatele s rolí admin
. Nastavení probíhá v souboru app/config/authenticator.neon
.