feat: create statistics view
All checks were successful
Pull Request Pipeline / lint (pull_request) Successful in 48s
Pull Request Pipeline / test (pull_request) Successful in 49s
Pull Request Pipeline / localizations (pull_request) Successful in 27s

This commit is contained in:
2026-05-24 01:26:08 +02:00
parent 57ebea1eb7
commit 134f77c5a3
12 changed files with 1296 additions and 73 deletions

View File

@@ -254,6 +254,72 @@ abstract class AppLocalizations {
/// **'Create new match'**
String get create_new_match;
/// No description provided for @create_statistic.
///
/// In en, this message translates to:
/// **'Create statistic'**
String get create_statistic;
/// No description provided for @create_statistic_classifier_subtitle.
///
/// In en, this message translates to:
/// **'Select which key metric you want to display'**
String get create_statistic_classifier_subtitle;
/// No description provided for @create_statistic_classifier_title.
///
/// In en, this message translates to:
/// **'Classifier'**
String get create_statistic_classifier_title;
/// No description provided for @create_statistic_games_subtitle.
///
/// In en, this message translates to:
/// **'Select the filtered games'**
String get create_statistic_games_subtitle;
/// No description provided for @create_statistic_games_title.
///
/// In en, this message translates to:
/// **'Games'**
String get create_statistic_games_title;
/// No description provided for @create_statistic_groups_subtitle.
///
/// In en, this message translates to:
/// **'Select the filtered groups'**
String get create_statistic_groups_subtitle;
/// No description provided for @create_statistic_groups_title.
///
/// In en, this message translates to:
/// **'Groups'**
String get create_statistic_groups_title;
/// No description provided for @create_statistic_scope_subtitle.
///
/// In en, this message translates to:
/// **'Select the main filter for your statistic. This will determine which data is used to calculate the selected classifier.'**
String get create_statistic_scope_subtitle;
/// No description provided for @create_statistic_scope_title.
///
/// In en, this message translates to:
/// **'Scope'**
String get create_statistic_scope_title;
/// No description provided for @create_statistic_timeframe_subtitle.
///
/// In en, this message translates to:
/// **'Select a timeframe for which the data will be filtered. Only matches that ended within the selected timeframe will be included in the statistic.'**
String get create_statistic_timeframe_subtitle;
/// No description provided for @create_statistic_timeframe_title.
///
/// In en, this message translates to:
/// **'Timeframe'**
String get create_statistic_timeframe_title;
/// No description provided for @created_on.
///
/// In en, this message translates to:
@@ -548,6 +614,12 @@ abstract class AppLocalizations {
/// **'Live Edit Mode'**
String get live_edit_mode;
/// No description provided for @loading.
///
/// In en, this message translates to:
/// **'Loading...'**
String get loading;
/// No description provided for @loser.
///
/// In en, this message translates to:
@@ -890,6 +962,36 @@ abstract class AppLocalizations {
/// **'Settings'**
String get settings;
/// No description provided for @select_a_classifier.
///
/// In en, this message translates to:
/// **'Select a classifier'**
String get select_a_classifier;
/// No description provided for @select_a_game.
///
/// In en, this message translates to:
/// **'Select a game'**
String get select_a_game;
/// No description provided for @select_a_group.
///
/// In en, this message translates to:
/// **'Select a group'**
String get select_a_group;
/// No description provided for @select_a_scope.
///
/// In en, this message translates to:
/// **'Select a scope'**
String get select_a_scope;
/// No description provided for @select_a_timeframe.
///
/// In en, this message translates to:
/// **'Select a timeframe'**
String get select_a_timeframe;
/// No description provided for @single_loser.
///
/// In en, this message translates to:
@@ -914,6 +1016,78 @@ abstract class AppLocalizations {
/// **'Stats'**
String get stats;
/// No description provided for @statistic_scope_all_players.
///
/// In en, this message translates to:
/// **'All players'**
String get statistic_scope_all_players;
/// No description provided for @statistic_scope_selected_games.
///
/// In en, this message translates to:
/// **'Selected games'**
String get statistic_scope_selected_games;
/// No description provided for @statistic_scope_selected_groups.
///
/// In en, this message translates to:
/// **'Selected groups'**
String get statistic_scope_selected_groups;
/// No description provided for @statistic_scope_timeframe.
///
/// In en, this message translates to:
/// **'Timeframe'**
String get statistic_scope_timeframe;
/// No description provided for @statistic_type_average_score.
///
/// In en, this message translates to:
/// **'Average score'**
String get statistic_type_average_score;
/// No description provided for @statistic_type_best_score.
///
/// In en, this message translates to:
/// **'Best score'**
String get statistic_type_best_score;
/// No description provided for @statistic_type_total_losses.
///
/// In en, this message translates to:
/// **'Total losses'**
String get statistic_type_total_losses;
/// No description provided for @statistic_type_total_matches.
///
/// In en, this message translates to:
/// **'Total matches'**
String get statistic_type_total_matches;
/// No description provided for @statistic_type_total_score.
///
/// In en, this message translates to:
/// **'Total score'**
String get statistic_type_total_score;
/// No description provided for @statistic_type_total_wins.
///
/// In en, this message translates to:
/// **'Total wins'**
String get statistic_type_total_wins;
/// No description provided for @statistic_type_winrate.
///
/// In en, this message translates to:
/// **'Winrate'**
String get statistic_type_winrate;
/// No description provided for @statistic_type_worst_score.
///
/// In en, this message translates to:
/// **'Worst score'**
String get statistic_type_worst_score;
/// Success message when adding a player
///
/// In en, this message translates to:
@@ -944,6 +1118,42 @@ abstract class AppLocalizations {
/// **'Tie'**
String get tie;
/// No description provided for @timeframe_all_time.
///
/// In en, this message translates to:
/// **'All time'**
String get timeframe_all_time;
/// No description provided for @timeframe_last_180_days.
///
/// In en, this message translates to:
/// **'Last 180 days'**
String get timeframe_last_180_days;
/// No description provided for @timeframe_last_30_days.
///
/// In en, this message translates to:
/// **'Last 30 days'**
String get timeframe_last_30_days;
/// No description provided for @timeframe_last_7_days.
///
/// In en, this message translates to:
/// **'Last 7 days'**
String get timeframe_last_7_days;
/// No description provided for @timeframe_last_90_days.
///
/// In en, this message translates to:
/// **'Last 90 days'**
String get timeframe_last_90_days;
/// No description provided for @timeframe_last_year.
///
/// In en, this message translates to:
/// **'Last year'**
String get timeframe_last_year;
/// No description provided for @today_at.
///
/// In en, this message translates to:

View File

@@ -88,6 +88,44 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get create_new_match => 'Neues Spiel erstellen';
@override
String get create_statistic => 'Statistik erstellen';
@override
String get create_statistic_classifier_subtitle =>
'Wähle die anzuzeigende Hauptmetrik aus';
@override
String get create_statistic_classifier_title => 'Klassifikator';
@override
String get create_statistic_games_subtitle =>
'Wähle die gefilterten Spielvorlagen';
@override
String get create_statistic_games_title => 'Spielvorlagen';
@override
String get create_statistic_groups_subtitle =>
'Wähle die gefilterten Gruppen';
@override
String get create_statistic_groups_title => 'Gruppen';
@override
String get create_statistic_scope_subtitle =>
'Wähle den Hauptfilter für deine Statistik. Er bestimmt, welche Daten zur Berechnung des Klassifikators verwendet werden.';
@override
String get create_statistic_scope_title => 'Bereich';
@override
String get create_statistic_timeframe_subtitle =>
'Wähle einen Zeitraum, nach dem die Daten gefiltert werden. Nur Spiele, die innerhalb des Zeitraums beendet wurden, fließen in die Statistik ein.';
@override
String get create_statistic_timeframe_title => 'Zeitraum';
@override
String get created_on => 'Erstellt am';
@@ -249,6 +287,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get live_edit_mode => 'Live-Bearbeitungsmodus';
@override
String get loading => 'Lädt...';
@override
String get loser => 'Verlierer:in';
@@ -426,6 +467,21 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get settings => 'Einstellungen';
@override
String get select_a_classifier => 'Klassifikator auswählen';
@override
String get select_a_game => 'Spielvorlage auswählen';
@override
String get select_a_group => 'Gruppe auswählen';
@override
String get select_a_scope => 'Bereich auswählen';
@override
String get select_a_timeframe => 'Zeitraum auswählen';
@override
String get single_loser => 'Ein:e Verlierer:in';
@@ -438,6 +494,42 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get stats => 'Statistiken';
@override
String get statistic_scope_all_players => 'Alle Spieler:innen';
@override
String get statistic_scope_selected_games => 'Ausgewählte Spielvorlagen';
@override
String get statistic_scope_selected_groups => 'Ausgewählte Gruppen';
@override
String get statistic_scope_timeframe => 'Zeitraum';
@override
String get statistic_type_average_score => 'Durchschnittliche Punktzahl';
@override
String get statistic_type_best_score => 'Beste Punktzahl';
@override
String get statistic_type_total_losses => 'Niederlagen insgesamt';
@override
String get statistic_type_total_matches => 'Spiele insgesamt';
@override
String get statistic_type_total_score => 'Punktzahl insgesamt';
@override
String get statistic_type_total_wins => 'Siege insgesamt';
@override
String get statistic_type_winrate => 'Siegquote';
@override
String get statistic_type_worst_score => 'Schlechteste Punktzahl';
@override
String successfully_added_player(String playerName) {
return 'Spieler:in $playerName erfolgreich hinzugefügt';
@@ -458,6 +550,24 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get tie => 'Unentschieden';
@override
String get timeframe_all_time => 'Gesamter Zeitraum';
@override
String get timeframe_last_180_days => 'Letzte 180 Tage';
@override
String get timeframe_last_30_days => 'Letzte 30 Tage';
@override
String get timeframe_last_7_days => 'Letzte 7 Tage';
@override
String get timeframe_last_90_days => 'Letzte 90 Tage';
@override
String get timeframe_last_year => 'Letztes Jahr';
@override
String get today_at => 'Heute um';

View File

@@ -88,6 +88,42 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get create_new_match => 'Create new match';
@override
String get create_statistic => 'Create statistic';
@override
String get create_statistic_classifier_subtitle =>
'Select which key metric you want to display';
@override
String get create_statistic_classifier_title => 'Classifier';
@override
String get create_statistic_games_subtitle => 'Select the filtered games';
@override
String get create_statistic_games_title => 'Games';
@override
String get create_statistic_groups_subtitle => 'Select the filtered groups';
@override
String get create_statistic_groups_title => 'Groups';
@override
String get create_statistic_scope_subtitle =>
'Select the main filter for your statistic. This will determine which data is used to calculate the selected classifier.';
@override
String get create_statistic_scope_title => 'Scope';
@override
String get create_statistic_timeframe_subtitle =>
'Select a timeframe for which the data will be filtered. Only matches that ended within the selected timeframe will be included in the statistic.';
@override
String get create_statistic_timeframe_title => 'Timeframe';
@override
String get created_on => 'Created on';
@@ -249,6 +285,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get live_edit_mode => 'Live Edit Mode';
@override
String get loading => 'Loading...';
@override
String get loser => 'Loser';
@@ -426,6 +465,21 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get settings => 'Settings';
@override
String get select_a_classifier => 'Select a classifier';
@override
String get select_a_game => 'Select a game';
@override
String get select_a_group => 'Select a group';
@override
String get select_a_scope => 'Select a scope';
@override
String get select_a_timeframe => 'Select a timeframe';
@override
String get single_loser => 'Single Loser';
@@ -438,6 +492,42 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get stats => 'Stats';
@override
String get statistic_scope_all_players => 'All players';
@override
String get statistic_scope_selected_games => 'Selected games';
@override
String get statistic_scope_selected_groups => 'Selected groups';
@override
String get statistic_scope_timeframe => 'Timeframe';
@override
String get statistic_type_average_score => 'Average score';
@override
String get statistic_type_best_score => 'Best score';
@override
String get statistic_type_total_losses => 'Total losses';
@override
String get statistic_type_total_matches => 'Total matches';
@override
String get statistic_type_total_score => 'Total score';
@override
String get statistic_type_total_wins => 'Total wins';
@override
String get statistic_type_winrate => 'Winrate';
@override
String get statistic_type_worst_score => 'Worst score';
@override
String successfully_added_player(String playerName) {
return 'Successfully added player $playerName';
@@ -457,6 +547,24 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get tie => 'Tie';
@override
String get timeframe_all_time => 'All time';
@override
String get timeframe_last_180_days => 'Last 180 days';
@override
String get timeframe_last_30_days => 'Last 30 days';
@override
String get timeframe_last_7_days => 'Last 7 days';
@override
String get timeframe_last_90_days => 'Last 90 days';
@override
String get timeframe_last_year => 'Last year';
@override
String get today_at => 'Today at';