GameHistoryView anpassen #20

Merged
flixcoo merged 27 commits from feature/2-gamehistoryview-anpassen into development 2025-11-30 15:59:25 +00:00
Owner

Game-History-View Anpassen

Zugehörige Issue(s):
Closes #2

Beschreibung

Jetzt werden standardisierte GameTile's verwendet.

# Game-History-View Anpassen **Zugehörige Issue(s):** Closes #2 ## Beschreibung Jetzt werden standardisierte GameTile's verwendet.
gelbeinhalb added the
PR
Ready for Review
2
Layer
FE
labels 2025-11-14 16:24:47 +00:00
gelbeinhalb added 2 commits 2025-11-14 16:24:47 +00:00
gelbeinhalb requested review from flixcoo 2025-11-14 16:24:47 +00:00
gelbeinhalb changed title from feature/2-gamehistoryview-anpassen to Game-History-View Anpassen 2025-11-14 16:25:24 +00:00
gelbeinhalb added the
Priority
Medium
3
Task
Enhancement
labels 2025-11-14 16:34:03 +00:00
gelbeinhalb was assigned by flixcoo 2025-11-14 21:01:47 +00:00
flixcoo requested changes 2025-11-15 14:44:16 +00:00
Dismissed
flixcoo left a comment
Owner

Review

Ich würde neue GameTilesentwickeln welche eine eigene Border haben (änlich InfoTile und dann die Anordnung ggf überarbeiten (untereinander statt nebeneinander).

# Review Ich würde neue `GameTiles`entwickeln welche eine eigene Border haben (änlich `InfoTile` und dann die Anordnung ggf überarbeiten (untereinander statt nebeneinander).
@@ -194,1 +194,3 @@
currentGame['date'],
return GameTile(
gameTitle: currentGame['title'],
gameType: currentGame['game'],
Owner

Remder Overflow bei den GameTiles

Bildschirmfoto 2025-11-15 um 15.41.32.png

Remder Overflow bei den GameTiles ![Bildschirmfoto 2025-11-15 um 15.41.32.png](/attachments/fede4126-1ef4-44b3-b7aa-de1deeca7083)
sneeex marked this conversation as resolved
gelbeinhalb changed title from Game-History-View Anpassen to WIP: Game-History-View Anpassen 2025-11-15 16:12:13 +00:00
gelbeinhalb removed the
PR
Ready for Review
2
label 2025-11-15 16:12:22 +00:00
flixcoo added a new dependency 2025-11-16 20:59:10 +00:00
flixcoo removed the
Layer
FE
Task
Enhancement
labels 2025-11-17 12:27:22 +00:00
gelbeinhalb added 2 commits 2025-11-19 08:15:19 +00:00
# Conflicts:
#	lib/presentation/views/main_menu/game_history_view.dart
flixcoo added this to the Minimum Viable Product (MVP) milestone 2025-11-20 17:38:08 +00:00
gelbeinhalb added 2 commits 2025-11-21 15:56:45 +00:00
Merge branch 'development' into feature/2-gamehistoryview-anpassen
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m7s
Pull Request Pipeline / lint (pull_request) Failing after 2m8s
6a985b0b1e
# Conflicts:
#	lib/presentation/views/main_menu/game_history_view.dart
flixcoo added a new dependency 2025-11-22 17:23:18 +00:00
gelbeinhalb added 4 commits 2025-11-23 21:22:47 +00:00
add intl for date formatting
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m21s
Pull Request Pipeline / lint (pull_request) Failing after 2m28s
290948e50d
gelbeinhalb added 2 commits 2025-11-24 10:34:27 +00:00
made game_history_tile prettier :)
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m13s
Pull Request Pipeline / lint (pull_request) Failing after 2m17s
32c7d45809
gelbeinhalb added 1 commit 2025-11-24 10:35:08 +00:00
Merge remote-tracking branch 'origin/development' into feature/2-gamehistoryview-anpassen
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m15s
Pull Request Pipeline / lint (pull_request) Failing after 2m15s
44279bc148
gelbeinhalb requested review from flixcoo 2025-11-24 10:35:17 +00:00
gelbeinhalb requested review from sneeex 2025-11-24 10:35:20 +00:00
sneeex changed title from WIP: Game-History-View Anpassen to Game-History-View Anpassen 2025-11-24 10:36:02 +00:00
Author
Owner
loading finished
image.png image.png
| loading | finished | | --- | --- | | ![image.png](/attachments/5e9f561c-4b9d-4f8b-a615-4da1de23a0de) | ![image.png](/attachments/944c56ec-f02e-4424-b1ac-e0e166170f34) |
gelbeinhalb added 1 commit 2025-11-24 10:40:05 +00:00
change skeleton names
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m0s
Pull Request Pipeline / lint (pull_request) Failing after 2m6s
4591a6857d
flixcoo requested changes 2025-11-24 11:42:20 +00:00
Dismissed
@@ -122,0 +18,4 @@
late Future<List<Game>> _gameListFuture;
late final AppDatabase db;
late final List<Game> skeletonData = List.filled(
Owner

Ich würde die Skeleton-Daten so anpassen, dass du nicht mehr machst als auf den Screen passen. Also bei mir sind das glaub ich so 5

Ich würde die Skeleton-Daten so anpassen, dass du nicht mehr machst als auf den Screen passen. Also bei mir sind das glaub ich so 5
Author
Owner

ja save :) hab 10 eingestellt zum testen und dann vergessen zu ändern

ja save :) hab 10 eingestellt zum testen und dann vergessen zu ändern
gelbeinhalb marked this conversation as resolved
@@ -188,3 +74,1 @@
icon: Icons.search,
title: 'Info',
message: 'Kein Spiel mit den Suchparametern gefunden.',
final bool isLoading = snapshot.connectionState == ConnectionState.waiting;
Owner

Die Skeleton-Zeit ist viel kürzer als bei allen anderen Screens. Ich glaube das liegt an dieser Zeile, weil du hier die isLoading Variable setzt und nicht nach dem oben angegebenen 250ms delay.

Die Skeleton-Zeit ist viel kürzer als bei allen anderen Screens. Ich glaube das liegt an dieser Zeile, weil du hier die `isLoading` Variable setzt und nicht nach dem oben angegebenen 250ms delay.
Author
Owner

okay danke :) guck ich mir an

okay danke :) guck ich mir an
gelbeinhalb marked this conversation as resolved
@@ -0,0 +17,4 @@
}
class _GameHistoryTileState extends State<GameHistoryTile> {
String _formatDate(DateTime dateTime) {
Owner

Funktionen eines Widgets immer nach der build() Methode, diese soll in einem Widget immer als erstes kommen (nach den Variabel-Deklarationen)

Funktionen eines Widgets immer nach der `build()` Methode, diese soll in einem Widget immer als erstes kommen (nach den Variabel-Deklarationen)
Author
Owner

👍

👍
gelbeinhalb marked this conversation as resolved
@@ -0,0 +32,4 @@
}
}
List<dynamic> _getAllPlayers() {
Owner

Hier auch hinter buid() Methode schieben

Hier auch hinter `buid()` Methode schieben
Author
Owner

👍

👍
gelbeinhalb marked this conversation as resolved
@@ -0,0 +101,4 @@
const SizedBox(height: 8),
if (group != null)
Owner

Entweder die beiden Group Widgets in ein Visibility bzw Offstage Widget wrappen, oder in ein If-Statement zusammenführen:

if(group != null)
[...SizedBox(), Row()]
Entweder die beiden Group Widgets in ein `Visibility` bzw `Offstage` Widget wrappen, oder in ein If-Statement zusammenführen: ```dart if(group != null) [...SizedBox(), Row()] ```
Owner

Von Docs: "Offstage can be used to measure the dimensions of a widget without bringing it on screen (yet). To hide a widget from view while it is not needed, prefer removing the widget from the tree entirely rather than keeping it alive in an Offstage subtree" also eher das if

Von Docs: "Offstage can be used to measure the dimensions of a widget without bringing it on screen (yet). To hide a widget from view while it is not needed, prefer removing the widget from the tree entirely rather than keeping it alive in an Offstage subtree" also eher das if
Owner

Ja dann mach das lieber mit If

Ja dann mach das lieber mit If
gelbeinhalb marked this conversation as resolved
@@ -0,0 +125,4 @@
if (group != null) const SizedBox(height: 12),
if (winner != null)
Owner

Hier auch zusammenfassen oder Visibility bzw. Offstage Widget nutzen

Hier auch zusammenfassen oder `Visibility` bzw. `Offstage` Widget nutzen
gelbeinhalb marked this conversation as resolved
Owner

Ah und du müsstest noch ähnlich wie in der GroupView einen Button zum erstellen von Spielen hinzufügen

Ah und du müsstest noch ähnlich wie in der `GroupView` einen Button zum erstellen von Spielen hinzufügen
sneeex requested changes 2025-11-24 12:03:05 +00:00
@@ -171,0 +59,4 @@
return const Center(
heightFactor: 4,
child: Text(
'Error while loading recent games.',
Owner

Errormessage anders, handelt sich ja nicht um recent games

Errormessage anders, handelt sich ja nicht um recent games
Author
Owner

jo

jo
Owner

und besser standartisierte top_centered_message wie in GroupsView benutzen.
Außerdem sieht das Alignement komisch aus:
grafik.png

und besser standartisierte `top_centered_message` wie in GroupsView benutzen. Außerdem sieht das Alignement komisch aus: ![grafik.png](/attachments/51e0ad5c-7df8-43e1-8401-dd459be4abbb)
Author
Owner

hab das 1zu1 von felix kopiert

hab das 1zu1 von felix kopiert
Owner

Ja das war ein schwerer Fehler, würde nichtmal von mir selbst kopieren

Ja das war ein schwerer Fehler, würde nichtmal von mir selbst kopieren
gelbeinhalb marked this conversation as resolved
@@ -178,0 +67,4 @@
(!snapshot.hasData || snapshot.data!.isEmpty)) {
return const Center(
heightFactor: 4,
child: Text('No recent games available.'),
Owner

Errormessage anders, handelt sich ja nicht um recent games

Errormessage anders, handelt sich ja nicht um recent games
Author
Owner

jo

jo
Owner

und besser standartisierte top_centered_message wie in GroupsView benutzen.
Außerdem sieht das Alignement komisch aus:
grafik.png

und besser standartisierte `top_centered_message` wie in GroupsView benutzen. Außerdem sieht das Alignement komisch aus: ![grafik.png](/attachments/51e0ad5c-7df8-43e1-8401-dd459be4abbb)
gelbeinhalb marked this conversation as resolved
@@ -0,0 +2,4 @@
import 'package:game_tracker/core/custom_theme.dart';
import 'package:game_tracker/data/dto/game.dart';
import 'package:game_tracker/presentation/widgets/tiles/text_icon_tile.dart';
import 'package:intl/intl.dart';
Owner

Wofür intl?

Wofür intl?
Author
Owner

Zur berechnung vom datum :) idk ob das der optimalste weg ist

Zur berechnung vom datum :) idk ob das der optimalste weg ist
Owner

Aber nutzt du da nicht nur datetime?

Aber nutzt du da nicht nur datetime?
Author
Owner

Die DateFormat klasse kommt daher:

String _formatDate(DateTime dateTime) {
    final now = DateTime.now();
    final difference = now.difference(dateTime);
    if (difference.inDays == 0) {
      return 'Today at ${DateFormat('HH:mm').format(dateTime)}';
    } else if (difference.inDays == 1) {
      return 'Yesterday at ${DateFormat('HH:mm').format(dateTime)}';
    } else if (difference.inDays < 7) {
      return '${difference.inDays} days ago';
    } else {
      return DateFormat('MMM d, yyyy').format(dateTime);
    }
  }
Die `DateFormat` klasse kommt daher: ```dart String _formatDate(DateTime dateTime) { final now = DateTime.now(); final difference = now.difference(dateTime); if (difference.inDays == 0) { return 'Today at ${DateFormat('HH:mm').format(dateTime)}'; } else if (difference.inDays == 1) { return 'Yesterday at ${DateFormat('HH:mm').format(dateTime)}'; } else if (difference.inDays < 7) { return '${difference.inDays} days ago'; } else { return DateFormat('MMM d, yyyy').format(dateTime); } } ```
sneeex marked this conversation as resolved
@@ -24,6 +24,7 @@ dependencies:
json_schema: ^5.2.2
file_saver: ^0.3.1
clock: ^1.1.2
intl: ^0.18.0
Owner

Wofür intl?

Wofür intl?
Author
Owner
siehe https://git.yannick-weigert.de/liquid-development/game-tracker/pulls/20#issuecomment-1170
sneeex marked this conversation as resolved
Author
Owner

Ah und du müsstest noch ähnlich wie in der GroupView einen Button zum erstellen von Spielen hinzufügen

Stimmt das mach ich noch :)

> Ah und du müsstest noch ähnlich wie in der `GroupView` einen Button zum erstellen von Spielen hinzufügen Stimmt das mach ich noch :)
Owner

Und DoubleRowInfoTile kannst du dann auch löschen, wenn das nicht mehr gebraucht wird

Und `DoubleRowInfoTile` kannst du dann auch löschen, wenn das nicht mehr gebraucht wird
sneeex requested changes 2025-11-24 15:59:35 +00:00
@@ -191,0 +99,4 @@
itemBuilder: (BuildContext context, int index) {
if (index == games.length) {
return SizedBox(
height: MediaQuery.paddingOf(context).bottom - 20,
Owner

padding zu groß, zu viel platz unten ohne button, mit button evtl passend

padding zu groß, zu viel platz unten ohne button, mit button evtl passend
gelbeinhalb marked this conversation as resolved
@@ -0,0 +145,4 @@
),
const SizedBox(width: 8),
Text(
'Winner: ${winner.name}',
Owner

renderoverflow bei langen namen

renderoverflow bei langen namen
gelbeinhalb marked this conversation as resolved
@@ -0,0 +172,4 @@
spacing: 6,
runSpacing: 6,
children: allPlayers.map((player) {
final isWinner = winner != null && player.id == winner.id;
Owner

is winenr wird nicht genutzt

is winenr wird nicht genutzt
gelbeinhalb marked this conversation as resolved
flixcoo changed title from Game-History-View Anpassen to WIP: Game-History-View Anpassen 2025-11-25 07:06:09 +00:00
flixcoo changed title from WIP: Game-History-View Anpassen to WIP: GameHistoryView anpassen 2025-11-25 08:11:06 +00:00
sneeex added a new dependency 2025-11-25 10:28:17 +00:00
Author
Owner

muss heute mein desktop neu aufsetzen und morgen mach ich mich an die ganzen issues

muss heute mein desktop neu aufsetzen und morgen mach ich mich an die ganzen issues
Owner

Der Bro macht einfach Sidequests von seinen Sidequests

Der Bro macht einfach Sidequests von seinen Sidequests
sneeex added a new dependency 2025-11-25 21:55:10 +00:00
Author
Owner

Der Bro macht einfach Sidequests von seinen Sidequests

hahah ja hatte mies probleme mit meinen nvidia treibern auf fedora

> Der Bro macht einfach Sidequests von seinen Sidequests hahah ja hatte mies probleme mit meinen nvidia treibern auf fedora
flixcoo removed the
Priority
Medium
3
label 2025-11-26 11:42:12 +00:00
sneeex added a new dependency 2025-11-26 15:39:14 +00:00
gelbeinhalb added 1 commit 2025-11-27 15:45:56 +00:00
remove useless skeleton data
Some checks failed
Pull Request Pipeline / test (pull_request) Successful in 2m6s
Pull Request Pipeline / lint (pull_request) Failing after 2m17s
099e587d45
gelbeinhalb added 1 commit 2025-11-27 15:58:10 +00:00
fixed loading too fast
Some checks failed
Pull Request Pipeline / lint (pull_request) Failing after 2m10s
Pull Request Pipeline / test (pull_request) Successful in 5m6s
b443230285
gelbeinhalb added 3 commits 2025-11-27 16:06:47 +00:00
fix possible render overflow
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m9s
Pull Request Pipeline / lint (pull_request) Successful in 2m10s
8c005d6e5e
gelbeinhalb requested review from flixcoo 2025-11-27 16:07:03 +00:00
gelbeinhalb requested review from sneeex 2025-11-27 16:07:05 +00:00
gelbeinhalb added 1 commit 2025-11-27 16:26:27 +00:00
fix error messages
All checks were successful
Pull Request Pipeline / lint (pull_request) Successful in 2m15s
Pull Request Pipeline / test (pull_request) Successful in 2m14s
a29123c964
flixcoo added the
PR
Ready for Review
2
label 2025-11-27 16:31:40 +00:00
flixcoo changed title from WIP: GameHistoryView anpassen to GameHistoryView anpassen 2025-11-27 16:31:45 +00:00
Owner

Hast du alle Änderungen angeguckt? Manche sind noch nicht als gelöst markiert?

Hast du alle Änderungen angeguckt? Manche sind noch nicht als gelöst markiert?
Author
Owner

oh hahahah
dachte ich hätte alles
ups

oh hahahah dachte ich hätte alles ups
Author
Owner

mach ich nachher :)

mach ich nachher :)
sneeex changed title from GameHistoryView anpassen to WIP: GameHistoryView anpassen 2025-11-27 20:07:56 +00:00
sneeex added
PR
In Review
1
and removed
PR
Ready for Review
2
labels 2025-11-27 20:08:11 +00:00
gelbeinhalb added 2 commits 2025-11-27 21:59:21 +00:00
Made space at the bottom of the list smaller
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m2s
Pull Request Pipeline / lint (pull_request) Successful in 2m6s
9ee9da2ac8
Author
Owner

@mathiskir das sollte alles sein oder?

@mathiskir das sollte alles sein oder?
flixcoo requested changes 2025-11-27 22:27:11 +00:00
Dismissed
@@ -5,2 +8,4 @@
import 'package:provider/provider.dart';
import 'package:skeletonizer/skeletonizer.dart';
class GameHistoryView extends StatefulWidget {
Owner

Umbennenung zu GameView stand mal im Raum oder?

Umbennenung zu `GameView` stand mal im Raum oder?
Author
Owner

Ist nicht ein GameView das was sich öffnet wenn man auf ein Game klickt?

Ist nicht ein GameView das was sich öffnet wenn man auf ein Game klickt?
Owner

@mathiskir hat die jetzt GameResultView genannt, aber quatsch ihr euch da sonst nochmal ab

@mathiskir hat die jetzt `GameResultView` genannt, aber quatsch ihr euch da sonst nochmal ab
Author
Owner

Ich finde wir sollten beides von Game....View in Match...View umbenennen.

Game = Das Spiel (Brettspiel, Kartenspiel)
Match = Eine Partie des Spiels

@flixcoo @mathiskir

Ich finde wir sollten beides von `Game....View` in `Match...View` umbenennen. Game = Das Spiel (Brettspiel, Kartenspiel) Match = Eine Partie des Spiels @flixcoo @mathiskir
Owner

Ja fand ich glaub ich sinnvoll. Dann müssten wir aber auch die entsprechenden Klassen umbenennen. Ich würde vorschlagen dass gesammelt in einem Ticket zu machen und deins so zu mergen

Ja fand ich glaub ich sinnvoll. Dann müssten wir aber auch die entsprechenden Klassen umbenennen. Ich würde vorschlagen dass gesammelt in einem Ticket zu machen und deins so zu mergen
Author
Owner

Ja würde ich auch sagen, weil dann ja sogar die Datenbank implementation geändert werden muss noch. Und auch unsere test json

Ja würde ich auch sagen, weil dann ja sogar die Datenbank implementation geändert werden muss noch. Und auch unsere test json
Owner

ja, lass das hier erstmal rauslassen

ja, lass das hier erstmal rauslassen
gelbeinhalb marked this conversation as resolved
@@ -191,0 +86,4 @@
..sort((a, b) => b.createdAt.compareTo(a.createdAt)))
.toList();
return Skeletonizer(
Owner

Bitte das Custom Widget AppSkeleton aus development hier noch Implementieren

Bitte das Custom Widget `AppSkeleton` aus `development` hier noch Implementieren
gelbeinhalb marked this conversation as resolved
@@ -191,0 +110,4 @@
height: MediaQuery.paddingOf(context).bottom - 80,
);
}
return GameHistoryTile(game: games[index]);
Owner

Es fehlt noch der Create Game Button

Es fehlt noch der Create Game Button
Author
Owner

Der um ein Match zu erstellen? oder der um ein Game zu erstellen?

Der um ein Match zu erstellen? oder der um ein Game zu erstellen?
Owner

Digga xD der Button der zur CreateGameView führt

Digga xD der Button der zur `CreateGameView` führt
Owner

Bitte customwidthbutton mit breite 0,9 wie bei groupsview machen

Bitte customwidthbutton mit breite 0,9 wie bei groupsview machen
gelbeinhalb marked this conversation as resolved
@@ -0,0 +4,4 @@
import 'package:game_tracker/presentation/widgets/tiles/text_icon_tile.dart';
import 'package:intl/intl.dart';
class GameHistoryTile extends StatefulWidget {
Owner

(Code-Zeile ist falsch, weil die Datei wird nicht angezeigt) doubleRowInfoTile entfernen, wird nicht mehr genutzt

(Code-Zeile ist falsch, weil die Datei wird nicht angezeigt) `doubleRowInfoTile` entfernen, wird nicht mehr genutzt
Author
Owner

check ich nicht. wo wird das denn verwendet?

check ich nicht. wo wird das denn verwendet?
Owner

Nirgendwo, deswegen kann es ja weg. Wurde vorher in GameHistoryView verwendet

Nirgendwo, deswegen kann es ja weg. Wurde vorher in `GameHistoryView` verwendet
Author
Owner

nirgendwo in meinem code steht doubleRowInfoTile 😭 oder ich bin blöd und finde es nicht

nirgendwo in meinem code steht `doubleRowInfoTile` 😭 oder ich bin blöd und finde es nicht
gelbeinhalb marked this conversation as resolved
@@ -0,0 +122,4 @@
if (allPlayers.isNotEmpty) ...[
const Text(
'Players:',
Owner

Ggf. ohne Doppelpunkt? Da dass ja nur so ne Zwischenüberschrift ist und die Spielernamen ja nicht dahinter in der gleichen Zeile stehen

Ggf. ohne Doppelpunkt? Da dass ja nur so ne Zwischenüberschrift ist und die Spielernamen ja nicht dahinter in der gleichen Zeile stehen
gelbeinhalb marked this conversation as resolved
Owner

Unbedingt noch development reinmergen, da sind einige neue Sachen mit reingekommen

Unbedingt noch `development` reinmergen, da sind einige neue Sachen mit reingekommen
gelbeinhalb added 1 commit 2025-11-28 11:14:50 +00:00
remove colon behind players
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m16s
Pull Request Pipeline / lint (pull_request) Successful in 2m22s
516c2afd1e
gelbeinhalb added 1 commit 2025-11-28 11:15:24 +00:00
Merge remote-tracking branch 'origin/development' into feature/2-gamehistoryview-anpassen
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m14s
Pull Request Pipeline / lint (pull_request) Successful in 2m17s
da722c5277
gelbeinhalb added 2 commits 2025-11-28 13:45:53 +00:00
add create game button
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m4s
Pull Request Pipeline / lint (pull_request) Successful in 2m8s
fb28de5772
gelbeinhalb added 1 commit 2025-11-29 19:04:54 +00:00
deleted double_row_info_tile
All checks were successful
Pull Request Pipeline / test (pull_request) Successful in 2m2s
Pull Request Pipeline / lint (pull_request) Successful in 2m6s
5ce4964c32
gelbeinhalb requested review from flixcoo 2025-11-29 19:25:12 +00:00
flixcoo changed title from WIP: GameHistoryView anpassen to GameHistoryView anpassen 2025-11-30 15:37:55 +00:00
flixcoo approved these changes 2025-11-30 15:40:03 +00:00
flixcoo merged commit 877c2921d9 into development 2025-11-30 15:59:25 +00:00
flixcoo deleted branch feature/2-gamehistoryview-anpassen 2025-11-30 15:59:25 +00:00
Sign in to join this conversation.
No Reviewers
3 Participants
Notifications
Due Date
No due date set.
Blocks
#3 CreateGameView erstellen
liquid-development/game-tracker
#48 GameResultView erstellen
liquid-development/game-tracker
#62 GameResultView erstellen
liquid-development/game-tracker
#67 CreateGameView erstellen
liquid-development/game-tracker
Reference: liquid-development/game-tracker#20