From 43f72453fdb82148c0d0ccd118e5463f216ac9a7 Mon Sep 17 00:00:00 2001 From: emkael Date: Thu, 23 Feb 2017 00:31:34 +0100 Subject: Documentation --- CONFIG | 337 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 337 insertions(+) create mode 100644 CONFIG (limited to 'CONFIG') diff --git a/CONFIG b/CONFIG new file mode 100644 index 0000000..c1e6e32 --- /dev/null +++ b/CONFIG @@ -0,0 +1,337 @@ +JFR Teamy - play-off - plik konfiguracyjny +========================================== + +Przykładowy plik konfiguracyjny, który służył do wygenerowania [przykładów](https://emkael.info/brydz/playoff/), umieszczono w całości u dołu tego pliku. + +Ogólny format +------------- + +Plik konfiguracyjny jest formatu JSON - a to oznacza na przykład, że trzeba pilnować backslashów wewnątrz łańcuchów znaków. +Na przykład - backslashe w konfiguracji logo nagłówka są podwojone. Szczególnie należy na to uważać przy podawaniu ścieżek do pliku wyjściowego. + +Opcje ogólne +------------ + +Konfiguracja składa się, po kolei, z: + - pola `"output"`: ścieżki do pliku, do którego będzie generowana drabinka. + Polecam ścieżkę bezwzględną do katalogu WWW turnieju. + W ścieżce musi znajdować katalog `sklady/`, do którego kopiowany jest JavaScript `playoff.js` + - sekcji `"page"`: ustawień strony + + `"title"` - tytuł (`` HTMLa) + + `"logoh"` - nagłówek, jak w tabeli admin bazy turnieju + + `"refresh"` - parametr odświeżania strony drabinki: `0` = wyłączone, liczba naturalna = interwał odświeżania, w sekundach + + `"width"` i `"height"` - wymiary (w pikselach) miejsca rezerwowanego dla każdego meczu w widoku drabinki (`"width"` bezpośrednio wpływa na rozmieszczanie kolumn, wewnątrz każdej z kolumn mecze rozmieszczane są równomiernie, w zależnie od ich liczby) + + `"margin"` - odstęp między w/w miejscem (minimalny - jak widać, w przypadku mniejszej liczby meczów w fazie, odstępy się dopasują) + - sekcji `"database"`, zawierającej ustawienia połączenia bazy danych + - sekcji `"goniec"`, zawierającej ustawienia Gońca (`"enabled"` przyjmuje wartości `0`/`1`) + +Ustawienia teamów +----------------- + +Dalej mamy sekcję `"teams"`, która jest pierwsza do przebudowy (albo do odstrzału, w ogóle), więc zbytnio nie przyzwyczajałbym się do jej struktury. + +W niej definiujemy teamy w kolejności, wg której mają być rozdzielane miejsca (w sytuacjach "przegrani zajmują miejsca..."). + +Każdy team to tablica, kolejno: pełnej nazwy (tej, która MUSI się zgadzać z nazwami we wszystkich turniejach), skróconej nazwy, pliku flagi (opcjonalnie). + +Jako czwarty element każdej tablicy można wpisać liczbę naturalną, która oznacza pozycję, jaką team ma zająć w końcowej klasyfikacji (tj. wpisanie tam liczby oznacza, że team od samego początku umieszczany jest na tej pozycji w klasyfikacji końcowej - np. jeśli nie uczestniczy w ogóle w play-off). + +Co zrobić, gdy jest taki team, a turniej nie ma ustawionych obrazków z flagami - nie wiem, będę się martwił kiedy indziej. + +Ustawienia drabinki +------------------- + +Sekcja `"phases"` definiuje już samą drabinkę. + +Jest to tablica obiektów - każdy obiekt to kolejna faza (kolumna) drabinki. + +Faza ma następujące pola: + - `"title"` - etykieta fazy, wyświetlana u góry jako link do wyników szczegółowych danej fazy + - `"link"` - w/w link (ale linki do poszczególnych meczów generują się na podstawie informacji pobranych z bazy, dopóki wszystkie turnieje, których mecze wchodzą w skład danej fazy, są wysyłane do jednej ścieżki) + - tablicę `"matches"`, definiującej mecze w fazie + +Ustawienia kozy (co meczy) +-------------------------- + +Mecz ma następujące pola: + - `"id"` - identyfikator meczu (liczbowy, musi być unikatowy) + - `"database"`, `"round"` i `"table"` - określają, skąd brać dane meczu + - `"teams"` określa, co ma się wyświetlić w przypadku, gdy z powyższego +zestawu pól nie da się pobrać informacji o meczu + Jest to tablica dwóch elementów, które mogą być: + + łańcuchem tekstowym - wówczas musi to być pełna nazwa teamu + + obiektem, z możliwymi polami tablicowymi `"winner"` lub `"loser"` - oznacza to, że dane miejsce drabinki jest przeznaczone dla zwycięzców/przegranych w meczach o ID podanych w polu + - opcjonalne, pola `"winner"` i `"loser"` - które z kolei w tym kontekście oznaczają, miejsca, które zajmują zwycięzcy/przegrani danego meczu w końcowej klasyfikacji + +Na przykładach, pierwszy i ostatni mecz z poniższego pliku: + +``` +{ + "id": 1, + "database": "iiild_po_1", + "round": 1, + "table": 1, + "teams": [ + "CKM Łódź", + "MKS Bzura I Ozorków" + ], + "loser": [7, 8] +} +``` + +Mecz nr 1, pobierany z turnieju `iiild_po_1`, ze stołu nr 1 w pierwszej rundzie. + +Gdyby turniej nie był gotowy i rozstawiony, i tak wiadomo, że w meczu gra CKM z Bzurą. + +W końcu, przegrany tego meczu zajmie jedno z miejsc 7-8. +Tu uwaga: jeśli okaże się, że żaden inny mecz nie ma dokładnie tego samego warunku - miejsc 7-8 - klasyfikacja prawdopodobnie nie wypełni się, tj. nie można określić, że przegrany jednego meczu zajmie miejsca 7-8, drugiego 8-9, a trzeciego 9-10 i liczyć, że program sam rozwiąże zagadkę. + +``` +{ + "id": 14, + "database": "iiild_po_4", + "round": 1, + "table": 2, + "teams": [ + { "loser": [11, 12] }, + { "loser": [11, 12] } + ], + "winner": [15], + "loser": [16] +} +``` + +Mecz nr 14 to mecz z drugiego stołu pierwszej rundy turnieju `iiild_po_4`. + +Miejsca w tym meczu zajmują przegrani meczów o ID 11 i 12 (przy czym gospodarze/goście są nieznani dopóki turniej nie zostanie rozstawiony w bazie). + +Zwycięzca zajmie 15. miejsce w lidze, a przegrany - 16. + +Pełen plik konfiguracyjny +------------------------- + +``` +{ + "output": "D:/Brydz/Teamy/www/liga_playoff_12.html", + "page": { + "title": "III liga 2016/17, WZBS Łódź, play-off", + "logoh": "<span id=\"logo\"></span><script type=\"text/javascript\">loadIt('liga_logo.html','logo');</script>", + "refresh": 0, + "width": 200, + "height": 80, + "margin": 70 + }, + "database": { + "host": "localhost", + "port": 3306, + "user": "UŻYTKOWNIK BAZY", + "pass": "HASŁO BAZY" + }, + "goniec": { + "enabled": 1, + "host": "localhost", + "port": 8090 + }, + "teams": [ + ["Mazowia Płock", "Mazowia", "herby/wp.png"], + ["Jagielloński Ośrodek Kultury Łódź", "JOK", "herby/el.png"], + ["KDK II Kutno", "KDK II", "herby/eku.png"], + ["BINŻ Bełchatów", "BINŻ", "herby/ebe.png"], + ["CKM Łódź", "CKM", "herby/el.png"], + ["PTC - PAFANA I Pabianice", "PTC", "herby/epa.png"], + ["Intra Łódź", "Intra", "herby/el.png"], + ["BOK Rondo Łódź", "Rondo", "herby/el.png"], + ["MKS Bzura I Ozorków", "Bzura", "herby/ezgozo.png"], + ["Zdrowie Piast Sieradz", "Piast", "herby/esi.png"], + ["Olimpia Chąśno", "Olimpia", "herby/elc.png"], + ["Brydż Quartet Lechia Tomaszów Mazowiecki", "Lechia", "herby/etm.png"], + ["Veolia Energia Łódź", "Veolia", "herby/el.png"], + ["Ekolog Łódź", "Ekolog", "herby/el.png"], + ["KDK III Kutno", "KDK III", "herby/eku.png"], + ["Pomiar - Ceemka Opoczno", "Ceemka", "herby/eop.png"] + ], + "phases": [ + { + "title": "25.02.2017", + "link": "http://arturwasiak.republika.pl/brydz/sedzia/3liga_2016_17/faza_3/liga_runda1.html", + "matches": [ + { + "id": 1, + "database": "iiild_po_1", + "round": 1, + "table": 1, + "teams": [ + "CKM Łódź", + "MKS Bzura I Ozorków" + ], + "loser": [7, 8] + }, + { + "id": 2, + "database": "iiild_po_1", + "round": 1, + "table": 2, + "teams": [ + "PTC - PAFANA I Pabianice", + "Intra Łódź" + ], + "loser": [7, 8] + }, + { + "id": 3, + "database": "iiild_po_1", + "round": 1, + "table": 3, + "teams": [ + "BOK Rondo Łódź", + "KDK III Kutno" + ], + "winner": [9, 10] + }, + { + "id": 4, + "database": "iiild_po_1", + "round": 1, + "table": 4, + "teams": [ + "Zdrowie Piast Sieradz", + "Ekolog Łódź" + ], + "winner": [9, 10] + } + ] + }, + { + "title": "26.02.2017", + "link": "http://arturwasiak.republika.pl/brydz/sedzia/3liga_2016_17/faza_4/liga_runda1.html", + "matches": [ + { + "id": 5, + "database": "iiild_po_2", + "round": 1, + "table": 1, + "teams": [ + "BINŻ Bełchatów", + { "winner": [1, 2] } + ], + "loser": [5, 6] + }, + { + "id": 6, + "database": "iiild_po_2", + "round": 1, + "table": 2, + "teams": [ + "KDK II Kutno", + { "winner": [1, 2] } + ], + "loser": [5, 6] + }, + { + "id": 7, + "database": "iiild_po_2", + "round": 1, + "table": 3, + "teams": [ + "Pomiar - Ceemka Opoczno", + { "loser": [3, 4] } + ], + "winner": [11, 12] + }, + { + "id": 8, + "database": "iiild_po_2", + "round": 1, + "table": 4, + "teams": [ + "Olimpia Chąśno", + { "loser": [3, 4] } + ], + "winner": [11, 12] + } + ] + }, + { + "title": "08.04.2017", + "link": "http://arturwasiak.republika.pl/brydz/sedzia/3liga_2016_17/faza_5/liga_runda1.html", + "matches": [ + { + "id": 9, + "database": "iiild_po_3", + "round": 1, + "table": 1, + "teams": [ + "Mazowia Płock", + { "winner": [5, 6] } + ], + "loser": [3, 4] + }, + { + "id": 10, + "database": "iiild_po_3", + "round": 1, + "table": 2, + "teams": [ + "Jagielloński Ośrodek Kultury Łódź", + { "winner": [5, 6] } + ], + "loser": [3, 4] + }, + { + "id": 11, + "database": "iiild_po_3", + "round": 1, + "table": 3, + "teams": [ + "Veolia Energia Łódź", + { "loser": [7, 8] } + ], + "winner": [13, 14] + }, + { + "id": 12, + "database": "iiild_po_3", + "round": 1, + "table": 4, + "teams": [ + "Brydż Quartet Lechia Tomaszów Mazowiecki", + { "loser": [7, 8] } + ], + "winner": [13, 14] + } + ] + }, + { + "title": "09.04.2017", + "link": "http://arturwasiak.republika.pl/brydz/sedzia/3liga_2016_17/faza_6/liga_runda1.html", + "matches": [ + { + "id": 13, + "database": "iiild_po_4", + "round": 1, + "table": 1, + "teams": [ + { "winner": [9, 10] }, + { "winner": [9, 10] } + + ], + "winner": [1], + "loser": [2] + }, + { + "id": 14, + "database": "iiild_po_4", + "round": 1, + "table": 2, + "teams": [ + { "loser": [11, 12] }, + { "loser": [11, 12] } + ], + "winner": [15], + "loser": [16] + } + ] + } + ] +} +``` -- cgit v1.2.3