Zde se nachází technická dokumentace a také zde najdete různé technické poznámky k aplikaci.
Jedná se o WPF aplikaci běžící zatím na net6.0-windows
. Všechny zdrojové soubory lze nalézt v adresáři /Referee/
.
Celá aplikace je postavená nad knihovnou MaterialDesignInXaml
. Výplatní listina je vygenerované PDF pomocí knihovny itext7
.
Aplikace hojně využívá návrhového stylu MVVM:
- Model s
INotifyPropertyChanged
:/Referee/Models/
, Třídy s daty - ViewModel:
/Referee/ViewModels/
, podklad pro GUI - View:
/Referee/Views
, samotné GUI s bindingem
Main Entry: App.xaml.cs
: OnStartup
Adresář: /Referee/Models/
- Hlavním prvkem je interface
IPerson
, který implementuje třídaPerson
, ze které dědí třídyCetar
aRozhodci
. - Poslední dvě zmíněné třídy obsahují statickou metodu
CreateEmpty
, která slouží pro pohodlnější vytváření nových instancí. - Je nutné, aby třída
Person
dědilaAbstractNotifyPropertyChanged
, jinak se nebudou data automaticky propisovat do GUI.
Adresář: /Referee/ViewModels/
- Základem je
BaseViewModel
, který skrzeFilterCollection
poskytuje podporu pro vyhledávání jmen. KFilterCollection
je totiž možné přistupovat z vyšších vrstev aplikace. - ViewModely
CetaViewModel
aRozhodciViewModel
- Nelze sloučit, protože
App.xaml
nepodporuje generika - existuje MarkupExtension - Jejich částečná duplicita je přenesena do
PersonViewModel
, ze které oba zmíněné ViewModely dědí - Zpomalují zobrazení osob, kvůli problémům se záseky při načítání dat
- Nelze sloučit, protože
- Tlačítka v GUI jsou propojená skrze Commandy (třída
/Referee/Infrastructure/Command.cs
) DialogSwitchViewModel
obsluhuje editor, ve kterém se vytváří/edituje rozhodčí/četař.RozhodciViewModel
,CetarViewModel
,SettingsViewModel
podporují vrácení všech změn do původního stavu před editací
Adresář: /Referee/Views/
- Obsahuje všechna okna, která aplikace používá.
- Adresář
/Referee/Infrastructure/SettingsFd
Třída SettingsHelper
slouží pro ukládání a čtení nastavení.
Třída Settings
obsahuje všechna možná nastavení.
Nastavení se ukládá do souboru %appdata%\OndrejMachota\Referee\Settings.json
při zavření aplikace.
Je možné použít MySQL, ke které se lze vzdáleně připojit, či lokální SQLite. Struktury tabulek jsou v souboru /Referee/db_structure.md
.
Soubor SQLite databáze je distribuován v instalátoru. Při startu aplikace je zkontrolováno, zda se nachází v %appdata%\OndrejMachota\Referee\
, případně je tam zkopírován.
- Adresář
/Referee/Infrastructure/DataServices
K přístupu do databáze je využíváno knihovny Dapper
. Třída DapperContext
umožňuje vytvářet nové připojení k databázi v závislosti na aktuálním nastavení.
- při změně ve vyhledávacím políčku se vygeneruje regex
- změna se projevuje po 400 ms od posledního stisku, aby mohl uživatel psát a vyhledávání se pořád neobnovovalo
- Třída
Rozhodci
aCetar
obsahujíFullNameInverted
, aby bylo možné hledat ve styluPříjmení Jméno
.
Aplikace používá Inno Setup
instalátor. Ten je generován ze souboru /Referee/setup.iss
.
-
Pro vytvoření instalátoru je potřeba aplikace nejdříve publikovat do složky
...\Referee\bin\Release\net6.0-windows\win-x64\publish\
. -
Zkontroluje, že se v adresáři
...\Referee\bin\Release\net6.0-windows\win-x64\publish\
nachází souborSQLite.Interop.dll
. Pokud ne, nachází se nejspíše hlouběji ve složce.../publish/
. Následně je třeba jej zkopírovat přímo do složky.../publish/
. Bez tohoto souboru nebude fungovat lokální SQLite databáze. -
Poté lze spustit skript
/Referee/setup.iss
.
- Adresář
/Referee/Infrastructure/Update
Statická třída Updater
je zavolána při startu. Její účel je zkontrolovat, jaká verze byla vydána poslední, porovnat s aktuální instancí, případně stáhnout novou verzi a otevřít instalátor.
Textová neshoda ve verzích vyústí ve stažení nejnovější vydané verze a zobrazení upozornění.
- Adresář:
/Referee/Infrastructure/WindowNavigation
Řešeno skrze třídu WindowManager
, která zajištuje přepínaní oken pomocí UpdateWindowCommand
.
- Adresář:
/Referee/Infrastructure/
Jedná se o vygenerováné PDF soubory pomocí knihovny itext7
- třída Priter
. PO uložení je soubor otevřen ve webovém prohlížeči. To zajišťuje třída Browser
.
Dialog o tištění není možné automaticky otevírat: zdroj