151 lines
2.8 KiB
Markdown
151 lines
2.8 KiB
Markdown
# Olympia 2024 Events
|
|
> View updated Events with its Competitors and Rankings of all Disciplines
|
|
|
|
## Galery
|
|
|
|
<table>
|
|
<tr>
|
|
<td><img src="doc/events_page_combobox.png"/></td>
|
|
<td><img src="doc/events_page_textfield.png"/></td>
|
|
<td><img src="doc/event_info.png"/></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Select discipline</td>
|
|
<td>Filter by Event</td>
|
|
<td>View Competitor</td>
|
|
</tr>
|
|
</table>
|
|
|
|
## Getting Started
|
|
|
|
### Dependencies
|
|
|
|
- Qt6
|
|
|
|
### Installation
|
|
|
|
```sh
|
|
git clone git@gitlab.kit.edu:ugmgt/itat_challenge_2024.git
|
|
# or download release
|
|
cd itat_challenge_2024
|
|
cmake -B build
|
|
cmake --build build
|
|
./build/itat_challenge_olympics
|
|
```
|
|
|
|
## Code Structure
|
|
|
|
### UML Diagram
|
|
|
|
```plantuml
|
|
@startuml
|
|
allowmixing
|
|
set namespaceSeparator none
|
|
skinparam ranksep 10
|
|
|
|
package C++ <<Frame>> {
|
|
class Application {
|
|
QGuiApplication app
|
|
QmlComponent component
|
|
SportModel model
|
|
FilterModel<SportModel> filter
|
|
}
|
|
|
|
class SportModel {
|
|
String discipline
|
|
<EventInfo> model
|
|
request(String discipline)
|
|
parseData()
|
|
}
|
|
|
|
class FilterModel {
|
|
void setFilterFixedString(String)
|
|
}
|
|
|
|
class EventInfo {
|
|
String eventName
|
|
List<Competitor> competitors
|
|
}
|
|
|
|
class Competitor {
|
|
String name
|
|
String code
|
|
String noc
|
|
}
|
|
}
|
|
|
|
package QML <<Frame>> {
|
|
|
|
component EventInfoPage {
|
|
component [Page] as EIPage {
|
|
component [ToolBar] as EIToolBar
|
|
component [ListView] as EILisView
|
|
}
|
|
}
|
|
|
|
EIToolBar -[hidden]- EILisView
|
|
|
|
component EventsPage {
|
|
component [Page] as EPage {
|
|
component [ToolBar] as EToolBar
|
|
component [Column] as EColumn {
|
|
component [Row] as ERow {
|
|
component [ComboBox] as EComboBox
|
|
component [TextField] as ETextField
|
|
}
|
|
component [ListView] as EListView
|
|
}
|
|
}
|
|
}
|
|
|
|
EToolBar -[hidden]- EColumn
|
|
ERow -[hidden]- EListView
|
|
|
|
component application.qml {
|
|
component ApplicationWindow {
|
|
component StackView
|
|
}
|
|
}
|
|
}
|
|
|
|
'application.qml -u- a
|
|
'Application -r- a
|
|
|
|
Application *-- "1" SportModel
|
|
Application *-- "1" FilterModel
|
|
|
|
FilterModel "1" o-- "1" SportModel
|
|
|
|
SportModel *-- "0..*" EventInfo
|
|
EventInfo *-- "0..*" Competitor
|
|
|
|
Application <.l. application.qml
|
|
StackView <.. EventInfoPage
|
|
StackView <.. EventsPage
|
|
|
|
EComboBox "request()" .> SportModel
|
|
|
|
EComboBox -[hidden]u- ETextField
|
|
|
|
SportModel "View" .> EListView
|
|
FilterModel "View" .> EListView
|
|
ETextField "Control" .r.> FilterModel
|
|
|
|
EILisView <. "View" Competitor
|
|
|
|
cloud api.olympics.com
|
|
() REST
|
|
REST - api.olympics.com
|
|
|
|
SportModel -( REST
|
|
|
|
application.qml -[hidden]u- Application
|
|
@enduml
|
|
```
|
|
|
|
## Authors
|
|
|
|
- **Silas Stulz** - *Initial Work*
|
|
- **Gero Beckmann** - *Initial Work*
|
|
|