Compare commits
	
		
			6 commits
		
	
	
		
			main
			...
			orangerot/
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 173ce00cf2 | ||
|  | a2202f311e | ||
|  | 184d0e538b | ||
|  | 82cbc4cf2c | ||
|  | 4956818d53 | ||
|  | 8cf2692f65 | 
|  | @ -1,5 +1,5 @@ | |||
| cmake_minimum_required(VERSION 3.28) | ||||
| project(itat_challange_olympics) | ||||
| project(itat_challenge_olympics) | ||||
| 
 | ||||
| find_package(Qt6 6.2 COMPONENTS Core Quick Quick REQUIRED) | ||||
| 
 | ||||
|  | @ -8,12 +8,12 @@ set(CMAKE_CXX_STANDARD 17) | |||
| set(CMAKE_AUTORCC ON) | ||||
| set(CMAKE_AUTOMOC ON) | ||||
| set(CMAKE_AUTOUIC ON) | ||||
| qt_add_executable(itat_challange_olympics src/main/main.cpp | ||||
| qt_add_executable(itat_challenge_olympics src/main/main.cpp | ||||
|         application.qrc | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| qt_add_qml_module(itat_challange_olympics | ||||
| qt_add_qml_module(itat_challenge_olympics | ||||
|     URI itat | ||||
|     QML_FILES | ||||
|         res/gui/application.qml | ||||
|  | @ -83,6 +83,6 @@ qt_add_qml_module(itat_challange_olympics | |||
|         res/pictograms/WRE_small.svg | ||||
| ) | ||||
| 
 | ||||
| target_link_libraries(itat_challange_olympics PRIVATE Qt6::Core Qt6::Quick Qt6::Network) | ||||
| target_link_libraries(itat_challenge_olympics PRIVATE Qt6::Core Qt6::Quick Qt6::Network) | ||||
| 
 | ||||
| # target_link_libraries(itat_challange_olympics PRIVATE d3d12.lib dxgi.lib d3dcompiler.lib dxguid.lib) | ||||
| # target_link_libraries(itat_challenge_olympics PRIVATE d3d12.lib dxgi.lib d3dcompiler.lib dxguid.lib) | ||||
|  |  | |||
							
								
								
									
										170
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,170 @@ | |||
| # Olympia 2024 Events | ||||
| > View updated Events with its Competitors and Rankings of all Disciplines  | ||||
| 
 | ||||
| *Olympia 2024 Events* always displays up to date information of the 2024 | ||||
| Olympics in Paris. It achieves this by fetching the `olympics.com` API.  | ||||
| 
 | ||||
| We use the Model-View-Delegate pattern to synchronize the API data in C++ with | ||||
| the UI-Widgets defined in QML. For this we implement the API data as a Model | ||||
| which can be seen and interacted with by QML Components. | ||||
| 
 | ||||
| All code, qml definitions and images, etc are compiled into a single binary that | ||||
| is not dependent on any resources on relative paths anymore.  | ||||
| 
 | ||||
| On startup the default discipline *Archery* will be fetched and shown on the | ||||
| EventsPage. From here the user has three options. You can change the discipline | ||||
| from the Dropdown-Menu (Combobox) in the top left (also note the changing | ||||
| pictograms of the discipline); Filter the EventNames with the Search field in | ||||
| the top right; or click on an Event.  | ||||
| 
 | ||||
| When clicking on an Event, the user is redirected to the EventInfoPage. Here you | ||||
| can see Information about all Competitors that took part in the Event. When you | ||||
| are done, you can go back to the EventsPage with the button in the top left.  | ||||
| 
 | ||||
| ## 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** (ugmgt, 2468197) - *Initial Work* | ||||
| - **Gero Beckmann** (ukpfm, 2409754) - *Initial Work* | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								doc/event_info.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/event_info.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 19 KiB | 
							
								
								
									
										
											BIN
										
									
								
								doc/events_page_combobox.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/events_page_combobox.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 49 KiB | 
							
								
								
									
										
											BIN
										
									
								
								doc/events_page_textfield.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doc/events_page_textfield.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 40 KiB | 
		Loading…
	
		Reference in a new issue