WIP: Bearbeiten und Löschen von Matches #171
@@ -81,6 +81,7 @@
|
|||||||
"ruleset_most_points": "Traditionelles Regelwerk: Der/die Spieler:in mit den meisten Punkten gewinnt.",
|
"ruleset_most_points": "Traditionelles Regelwerk: Der/die Spieler:in mit den meisten Punkten gewinnt.",
|
||||||
"ruleset_single_loser": "Genau ein:e Verlierer:in wird bestimmt; der letzte Platz erhält die Strafe oder Konsequenz.",
|
"ruleset_single_loser": "Genau ein:e Verlierer:in wird bestimmt; der letzte Platz erhält die Strafe oder Konsequenz.",
|
||||||
"ruleset_single_winner": "Genau ein:e Gewinner:in wird gewählt; Unentschieden werden durch einen vordefinierten Tie-Breaker aufgelöst.",
|
"ruleset_single_winner": "Genau ein:e Gewinner:in wird gewählt; Unentschieden werden durch einen vordefinierten Tie-Breaker aufgelöst.",
|
||||||
|
"save_changes": "Änderungen speichern",
|
||||||
"search_for_groups": "Nach Gruppen suchen",
|
"search_for_groups": "Nach Gruppen suchen",
|
||||||
"search_for_players": "Nach Spieler:innen suchen",
|
"search_for_players": "Nach Spieler:innen suchen",
|
||||||
"select_winner": "Gewinner:in wählen:",
|
"select_winner": "Gewinner:in wählen:",
|
||||||
|
|||||||
@@ -188,9 +188,9 @@
|
|||||||
"@no_recent_matches_available": {
|
"@no_recent_matches_available": {
|
||||||
"description": "Message when no recent matches exist"
|
"description": "Message when no recent matches exist"
|
||||||
},
|
},
|
||||||
"@no_results_entered_yet": {
|
"@no_results_entered_yet": {
|
||||||
"description": "Message when no results have been entered yet"
|
"description": "Message when no results have been entered yet"
|
||||||
},
|
},
|
||||||
"@no_second_match_available": {
|
"@no_second_match_available": {
|
||||||
"description": "Message when no second match exists"
|
"description": "Message when no second match exists"
|
||||||
},
|
},
|
||||||
@@ -250,6 +250,9 @@
|
|||||||
"@ruleset_single_winner": {
|
"@ruleset_single_winner": {
|
||||||
"description": "Description for single winner ruleset"
|
"description": "Description for single winner ruleset"
|
||||||
},
|
},
|
||||||
|
"@save_changes": {
|
||||||
|
"description": "Save changes button text"
|
||||||
|
},
|
||||||
"@search_for_groups": {
|
"@search_for_groups": {
|
||||||
"description": "Hint text for group search input field"
|
"description": "Hint text for group search input field"
|
||||||
},
|
},
|
||||||
@@ -393,6 +396,7 @@
|
|||||||
"ruleset_most_points": "Traditional ruleset: the player with the most points wins.",
|
"ruleset_most_points": "Traditional ruleset: the player with the most points wins.",
|
||||||
"ruleset_single_loser": "Exactly one loser is determined; last place receives the penalty or consequence.",
|
"ruleset_single_loser": "Exactly one loser is determined; last place receives the penalty or consequence.",
|
||||||
"ruleset_single_winner": "Exactly one winner is chosen; ties are resolved by a predefined tiebreaker.",
|
"ruleset_single_winner": "Exactly one winner is chosen; ties are resolved by a predefined tiebreaker.",
|
||||||
|
"save_changes": "Save Changes",
|
||||||
"search_for_groups": "Search for groups",
|
"search_for_groups": "Search for groups",
|
||||||
"search_for_players": "Search for players",
|
"search_for_players": "Search for players",
|
||||||
"select_winner": "Select Winner:",
|
"select_winner": "Select Winner:",
|
||||||
|
|||||||
@@ -578,6 +578,12 @@ abstract class AppLocalizations {
|
|||||||
/// **'Exactly one winner is chosen; ties are resolved by a predefined tiebreaker.'**
|
/// **'Exactly one winner is chosen; ties are resolved by a predefined tiebreaker.'**
|
||||||
String get ruleset_single_winner;
|
String get ruleset_single_winner;
|
||||||
|
|
||||||
|
/// Save changes button text
|
||||||
|
///
|
||||||
|
/// In en, this message translates to:
|
||||||
|
/// **'Save Changes'**
|
||||||
|
String get save_changes;
|
||||||
|
|
||||||
/// Hint text for group search input field
|
/// Hint text for group search input field
|
||||||
///
|
///
|
||||||
/// In en, this message translates to:
|
/// In en, this message translates to:
|
||||||
|
|||||||
@@ -260,6 +260,9 @@ class AppLocalizationsDe extends AppLocalizations {
|
|||||||
String get ruleset_single_winner =>
|
String get ruleset_single_winner =>
|
||||||
'Genau ein:e Gewinner:in wird gewählt; Unentschieden werden durch einen vordefinierten Tie-Breaker aufgelöst.';
|
'Genau ein:e Gewinner:in wird gewählt; Unentschieden werden durch einen vordefinierten Tie-Breaker aufgelöst.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get save_changes => 'Änderungen speichern';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get search_for_groups => 'Nach Gruppen suchen';
|
String get search_for_groups => 'Nach Gruppen suchen';
|
||||||
|
|
||||||
|
|||||||
@@ -260,6 +260,9 @@ class AppLocalizationsEn extends AppLocalizations {
|
|||||||
String get ruleset_single_winner =>
|
String get ruleset_single_winner =>
|
||||||
'Exactly one winner is chosen; ties are resolved by a predefined tiebreaker.';
|
'Exactly one winner is chosen; ties are resolved by a predefined tiebreaker.';
|
||||||
|
|
||||||
|
@override
|
||||||
|
String get save_changes => 'Save Changes';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String get search_for_groups => 'Search for groups';
|
String get search_for_groups => 'Search for groups';
|
||||||
|
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// If a match is provided, prefill the fields
|
||||||
if (widget.match != null) {
|
if (widget.match != null) {
|
||||||
final match = widget.match!;
|
final match = widget.match!;
|
||||||
_matchNameController.text = match.name;
|
_matchNameController.text = match.name;
|
||||||
@@ -122,6 +123,10 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final loc = AppLocalizations.of(context);
|
final loc = AppLocalizations.of(context);
|
||||||
|
final buttonText = widget.match != null
|
||||||
|
? loc.save_changes
|
||||||
|
: loc.create_match;
|
||||||
|
|
||||||
return ScaffoldMessenger(
|
return ScaffoldMessenger(
|
||||||
child: Scaffold(
|
child: Scaffold(
|
||||||
backgroundColor: CustomTheme.backgroundColor,
|
backgroundColor: CustomTheme.backgroundColor,
|
||||||
@@ -202,32 +207,12 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
CustomWidthButton(
|
CustomWidthButton(
|
||||||
text: loc.create_match,
|
text: buttonText,
|
||||||
sizeRelativeToWidth: 0.95,
|
sizeRelativeToWidth: 0.95,
|
||||||
buttonType: ButtonType.primary,
|
buttonType: ButtonType.primary,
|
||||||
onPressed: _enableCreateGameButton()
|
onPressed: _enableCreateGameButton()
|
||||||
? () async {
|
? () {
|
||||||
Match match = Match(
|
buttonNavigation(context);
|
||||||
name: _matchNameController.text.isEmpty
|
|
||||||
? (hintText ?? '')
|
|
||||||
: _matchNameController.text.trim(),
|
|
||||||
createdAt: DateTime.now(),
|
|
||||||
group: selectedGroup,
|
|
||||||
players: selectedPlayers,
|
|
||||||
);
|
|
||||||
await db.matchDao.addMatch(match: match);
|
|
||||||
if (context.mounted) {
|
|
||||||
Navigator.pushReplacement(
|
|
||||||
context,
|
|
||||||
adaptivePageRoute(
|
|
||||||
fullscreenDialog: true,
|
|
||||||
builder: (context) => MatchResultView(
|
|
||||||
match: match,
|
|
||||||
onWinnerChanged: widget.onWinnerChanged,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
@@ -247,4 +232,33 @@ class _CreateMatchViewState extends State<CreateMatchView> {
|
|||||||
return (selectedGroup != null ||
|
return (selectedGroup != null ||
|
||||||
(selectedPlayers != null && selectedPlayers!.length > 1));
|
(selectedPlayers != null && selectedPlayers!.length > 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void buttonNavigation(BuildContext context) async {
|
||||||
|
if (widget.match != null) {
|
||||||
|
// TODO: Implement updating match logic here
|
||||||
|
Navigator.pop(context);
|
||||||
|
} else {
|
||||||
|
Match match = Match(
|
||||||
|
name: _matchNameController.text.isEmpty
|
||||||
|
? (hintText ?? '')
|
||||||
|
: _matchNameController.text.trim(),
|
||||||
|
createdAt: DateTime.now(),
|
||||||
|
group: selectedGroup,
|
||||||
|
players: selectedPlayers,
|
||||||
|
);
|
||||||
|
await db.matchDao.addMatch(match: match);
|
||||||
|
if (context.mounted) {
|
||||||
|
Navigator.pushReplacement(
|
||||||
|
context,
|
||||||
|
adaptivePageRoute(
|
||||||
|
fullscreenDialog: true,
|
||||||
|
builder: (context) => MatchResultView(
|
||||||
|
match: match,
|
||||||
|
onWinnerChanged: widget.onWinnerChanged,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user