feat(TournamentStats): enhance age class sorting and localization for tournament statistics
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 36s
- Improved the sorting logic for age class options in the InternalTournamentStats component, incorporating gender and name for better organization. - Added new utility functions for handling gender labels and age class sorting values, enhancing clarity in tournament statistics. - Updated localization strings across multiple languages to reflect changes in age class and gender terminology, improving user accessibility and understanding.
This commit is contained in:
@@ -153,11 +153,15 @@ export default {
|
||||
},
|
||||
sortedAgeOptions() {
|
||||
const list = [...(this.stats.ageClassOptions || [])];
|
||||
list.sort((a, b) =>
|
||||
this.formatAgeOption(a).localeCompare(this.formatAgeOption(b), 'de', {
|
||||
sensitivity: 'base',
|
||||
}),
|
||||
);
|
||||
list.sort((a, b) => {
|
||||
const va = this.ageClassSortValue(a);
|
||||
const vb = this.ageClassSortValue(b);
|
||||
if (va !== vb) return va - vb;
|
||||
const ga = this.tournamentGenderSortOrder(a.gender);
|
||||
const gb = this.tournamentGenderSortOrder(b.gender);
|
||||
if (ga !== gb) return ga - gb;
|
||||
return (a.name || '').localeCompare(b.name || '', 'de', { sensitivity: 'base' });
|
||||
});
|
||||
return list;
|
||||
},
|
||||
},
|
||||
@@ -228,19 +232,43 @@ export default {
|
||||
this.selectedAgeKeys = [];
|
||||
this.load();
|
||||
},
|
||||
/** TT: nur Weiblich vs. Alle (offen); kein „Männlich“ mehr in Turnierklassen */
|
||||
tournamentClassGenderLabel(gender) {
|
||||
if (gender === 'female') return this.$t('tournaments.tournamentClassGenderFemale');
|
||||
return this.$t('tournaments.tournamentClassGenderOpen');
|
||||
},
|
||||
tournamentGenderSortOrder(gender) {
|
||||
return gender === 'female' ? 0 : 1;
|
||||
},
|
||||
/**
|
||||
* Reihenfolge: J9 … J19 (bzw. U…), dann Erwachsene/Senioren, Sonstiges, ohne Klasse zuletzt.
|
||||
*/
|
||||
ageClassSortValue(opt) {
|
||||
if (opt.isNoClass) return 99999;
|
||||
const name = (opt.name || '').trim();
|
||||
const ju = name.match(/\bJ\s*(\d+)\b/i) || name.match(/\bU\s*(\d+)\b/i);
|
||||
if (ju) {
|
||||
const num = parseInt(ju[1], 10);
|
||||
return 100 + num;
|
||||
}
|
||||
if (/erwachsen|senioren/i.test(name)) return 9000;
|
||||
if (/damen|herren|aktive|mixed|offen|frei/i.test(name)) return 9100;
|
||||
return 5000;
|
||||
},
|
||||
formatAgeOption(opt) {
|
||||
if (!opt) return '';
|
||||
if (opt.isNoClass) return this.$t('tournaments.internalStatsAgeNoClass');
|
||||
const bits = [];
|
||||
if (opt.name) bits.push(opt.name);
|
||||
const nameTrim = (opt.name || '').trim();
|
||||
if (nameTrim) bits.push(nameTrim);
|
||||
const min = opt.minBirthYear;
|
||||
const max = opt.maxBirthYear;
|
||||
if (min != null && max != null) bits.push(`${min}–${max}`);
|
||||
else if (max != null) bits.push(`≤ ${max}`);
|
||||
else if (min != null) bits.push(`≥ ${min}`);
|
||||
if (opt.gender === 'male') bits.push(this.$t('members.genderMale'));
|
||||
else if (opt.gender === 'female') bits.push(this.$t('members.genderFemale'));
|
||||
else if (opt.gender === 'mixed') bits.push(this.$t('tournaments.genderMixed'));
|
||||
if (!nameTrim) {
|
||||
if (min != null && max != null) bits.push(`${min}–${max}`);
|
||||
else if (max != null) bits.push(`≤ ${max}`);
|
||||
else if (min != null) bits.push(`≥ ${min}`);
|
||||
}
|
||||
bits.push(this.tournamentClassGenderLabel(opt.gender));
|
||||
return bits.join(' · ');
|
||||
},
|
||||
ageFilterPdfLine() {
|
||||
|
||||
@@ -178,7 +178,9 @@
|
||||
"internalStatsTitle": "Statistik interne Turniere (Einzel)",
|
||||
"internalStatsOpenButton": "Turnierstatistik (Einzel)",
|
||||
"internalStatsExportPdf": "Als PDF exportieren",
|
||||
"internalStatsAgeFilter": "Altersklassen (Einzel)",
|
||||
"internalStatsAgeFilter": "Altersklassä & Gschlächt (Einzel)",
|
||||
"tournamentClassGenderFemale": "Weiblich",
|
||||
"tournamentClassGenderOpen": "Alli",
|
||||
"internalStatsAgeNoClass": "Ohni Klassäzuordnig",
|
||||
"internalStatsAgeSelectAll": "Alli",
|
||||
"internalStatsAgeSelectNone": "Keini",
|
||||
|
||||
@@ -409,7 +409,9 @@
|
||||
"internalStatsTitle": "Statistik interne Turniere (Einzel)",
|
||||
"internalStatsOpenButton": "Turnierstatistik (Einzel)",
|
||||
"internalStatsExportPdf": "Als PDF exportieren",
|
||||
"internalStatsAgeFilter": "Altersklassen (Einzel)",
|
||||
"internalStatsAgeFilter": "Altersklassen & Geschlecht (Einzel)",
|
||||
"tournamentClassGenderFemale": "Weiblich",
|
||||
"tournamentClassGenderOpen": "Alle",
|
||||
"internalStatsAgeNoClass": "Ohne Klassenzuordnung",
|
||||
"internalStatsAgeSelectAll": "Alle",
|
||||
"internalStatsAgeSelectNone": "Keine",
|
||||
|
||||
@@ -701,7 +701,9 @@
|
||||
"internalStatsTitle": "Statistik interne Turniere (Einzel)",
|
||||
"internalStatsOpenButton": "Turnierstatistik (Einzel)",
|
||||
"internalStatsExportPdf": "Als PDF exportieren",
|
||||
"internalStatsAgeFilter": "Altersklassen (Einzel)",
|
||||
"internalStatsAgeFilter": "Altersklassen & Geschlecht (Einzel)",
|
||||
"tournamentClassGenderFemale": "Weiblich",
|
||||
"tournamentClassGenderOpen": "Alle",
|
||||
"internalStatsAgeNoClass": "Ohne Klassenzuordnung",
|
||||
"internalStatsAgeSelectAll": "Alle",
|
||||
"internalStatsAgeSelectNone": "Keine",
|
||||
|
||||
@@ -178,7 +178,9 @@
|
||||
"internalStatsTitle": "Internal tournaments statistics (singles)",
|
||||
"internalStatsOpenButton": "Tournament statistics (singles)",
|
||||
"internalStatsExportPdf": "Export as PDF",
|
||||
"internalStatsAgeFilter": "Age classes (singles)",
|
||||
"internalStatsAgeFilter": "Age group & gender (singles)",
|
||||
"tournamentClassGenderFemale": "Female",
|
||||
"tournamentClassGenderOpen": "Open (all)",
|
||||
"internalStatsAgeNoClass": "No class assigned",
|
||||
"internalStatsAgeSelectAll": "All",
|
||||
"internalStatsAgeSelectNone": "None",
|
||||
|
||||
@@ -359,7 +359,9 @@
|
||||
"internalStatsTitle": "Internal tournaments statistics (singles)",
|
||||
"internalStatsOpenButton": "Tournament statistics (singles)",
|
||||
"internalStatsExportPdf": "Export as PDF",
|
||||
"internalStatsAgeFilter": "Age classes (singles)",
|
||||
"internalStatsAgeFilter": "Age group & gender (singles)",
|
||||
"tournamentClassGenderFemale": "Female",
|
||||
"tournamentClassGenderOpen": "Open (all)",
|
||||
"internalStatsAgeNoClass": "No class assigned",
|
||||
"internalStatsAgeSelectAll": "All",
|
||||
"internalStatsAgeSelectNone": "None",
|
||||
|
||||
@@ -178,7 +178,9 @@
|
||||
"internalStatsTitle": "Internal tournaments statistics (singles)",
|
||||
"internalStatsOpenButton": "Tournament statistics (singles)",
|
||||
"internalStatsExportPdf": "Export as PDF",
|
||||
"internalStatsAgeFilter": "Age classes (singles)",
|
||||
"internalStatsAgeFilter": "Age group & gender (singles)",
|
||||
"tournamentClassGenderFemale": "Female",
|
||||
"tournamentClassGenderOpen": "Open (all)",
|
||||
"internalStatsAgeNoClass": "No class assigned",
|
||||
"internalStatsAgeSelectAll": "All",
|
||||
"internalStatsAgeSelectNone": "None",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "Estadísticas de torneos internos (individual)",
|
||||
"internalStatsOpenButton": "Estadísticas de torneos (individual)",
|
||||
"internalStatsExportPdf": "Exportar como PDF",
|
||||
"internalStatsAgeFilter": "Categorías de edad (individual)",
|
||||
"internalStatsAgeFilter": "Edad y género (individual)",
|
||||
"tournamentClassGenderFemale": "Femenino",
|
||||
"tournamentClassGenderOpen": "Abierta (todos)",
|
||||
"internalStatsAgeNoClass": "Sin clase asignada",
|
||||
"internalStatsAgeSelectAll": "Todas",
|
||||
"internalStatsAgeSelectNone": "Ninguna",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "Estadistika ng internal na paligsahan (singles)",
|
||||
"internalStatsOpenButton": "Buksan ang estadistika (singles)",
|
||||
"internalStatsExportPdf": "I-export bilang PDF",
|
||||
"internalStatsAgeFilter": "Mga pangkat ng edad (singles)",
|
||||
"internalStatsAgeFilter": "Edad at kasarian (singles)",
|
||||
"tournamentClassGenderFemale": "Babae",
|
||||
"tournamentClassGenderOpen": "Bukas (lahat)",
|
||||
"internalStatsAgeNoClass": "Walang klase",
|
||||
"internalStatsAgeSelectAll": "Lahat",
|
||||
"internalStatsAgeSelectNone": "Wala",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "Statistiques des tournois internes (simple)",
|
||||
"internalStatsOpenButton": "Statistiques (simple)",
|
||||
"internalStatsExportPdf": "Exporter en PDF",
|
||||
"internalStatsAgeFilter": "Catégories d’âge (simple)",
|
||||
"internalStatsAgeFilter": "Âge et genre (simple)",
|
||||
"tournamentClassGenderFemale": "Féminin",
|
||||
"tournamentClassGenderOpen": "Tous",
|
||||
"internalStatsAgeNoClass": "Sans classe assignée",
|
||||
"internalStatsAgeSelectAll": "Tout",
|
||||
"internalStatsAgeSelectNone": "Aucune",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "Statistiche tornei interni (singolo)",
|
||||
"internalStatsOpenButton": "Statistiche tornei (singolo)",
|
||||
"internalStatsExportPdf": "Esporta PDF",
|
||||
"internalStatsAgeFilter": "Categorie di età (singolo)",
|
||||
"internalStatsAgeFilter": "Età e genere (singolo)",
|
||||
"tournamentClassGenderFemale": "Femminile",
|
||||
"tournamentClassGenderOpen": "Aperta (tutti)",
|
||||
"internalStatsAgeNoClass": "Senza classe assegnata",
|
||||
"internalStatsAgeSelectAll": "Tutte",
|
||||
"internalStatsAgeSelectNone": "Nessuna",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "内部大会の統計(シングルス)",
|
||||
"internalStatsOpenButton": "統計を表示(シングルス)",
|
||||
"internalStatsExportPdf": "PDFで出力",
|
||||
"internalStatsAgeFilter": "年齢クラス(シングルス)",
|
||||
"internalStatsAgeFilter": "年齢・性別(シングルス)",
|
||||
"tournamentClassGenderFemale": "女子",
|
||||
"tournamentClassGenderOpen": "オープン(全員)",
|
||||
"internalStatsAgeNoClass": "クラス未設定",
|
||||
"internalStatsAgeSelectAll": "すべて",
|
||||
"internalStatsAgeSelectNone": "なし",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "Statystyki turniejów wewnętrznych (singel)",
|
||||
"internalStatsOpenButton": "Statystyki turniejów (singel)",
|
||||
"internalStatsExportPdf": "Eksportuj do PDF",
|
||||
"internalStatsAgeFilter": "Klasy wiekowe (singel)",
|
||||
"internalStatsAgeFilter": "Grupa wiekowa i płeć (singel)",
|
||||
"tournamentClassGenderFemale": "Kobiety",
|
||||
"tournamentClassGenderOpen": "Otwarta (wszyscy)",
|
||||
"internalStatsAgeNoClass": "Bez przypisania do klasy",
|
||||
"internalStatsAgeSelectAll": "Wszystkie",
|
||||
"internalStatsAgeSelectNone": "Żadna",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "สถิติการแข่งขันภายใน (เดี่ยว)",
|
||||
"internalStatsOpenButton": "เปิดสถิติ (เดี่ยว)",
|
||||
"internalStatsExportPdf": "ส่งออก PDF",
|
||||
"internalStatsAgeFilter": "รุ่นอายุ (เดี่ยว)",
|
||||
"internalStatsAgeFilter": "รุ่นอายุและเพศ (เดี่ยว)",
|
||||
"tournamentClassGenderFemale": "หญิง",
|
||||
"tournamentClassGenderOpen": "เปิด (ทุกคน)",
|
||||
"internalStatsAgeNoClass": "ไม่มีคลาส",
|
||||
"internalStatsAgeSelectAll": "ทั้งหมด",
|
||||
"internalStatsAgeSelectNone": "ไม่มี",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "Istatistika ng internal na tournament (singles)",
|
||||
"internalStatsOpenButton": "Buksan ang istatistika (singles)",
|
||||
"internalStatsExportPdf": "I-export bilang PDF",
|
||||
"internalStatsAgeFilter": "Mga pangkat ng edad (singles)",
|
||||
"internalStatsAgeFilter": "Edad at kasarian (singles)",
|
||||
"tournamentClassGenderFemale": "Babae",
|
||||
"tournamentClassGenderOpen": "Bukas (lahat)",
|
||||
"internalStatsAgeNoClass": "Walang klase",
|
||||
"internalStatsAgeSelectAll": "Lahat",
|
||||
"internalStatsAgeSelectNone": "Wala",
|
||||
|
||||
@@ -177,7 +177,9 @@
|
||||
"internalStatsTitle": "内部锦标赛统计(单打)",
|
||||
"internalStatsOpenButton": "打开单打统计数据",
|
||||
"internalStatsExportPdf": "导出 PDF",
|
||||
"internalStatsAgeFilter": "年龄组(单打)",
|
||||
"internalStatsAgeFilter": "年龄与性别(单打)",
|
||||
"tournamentClassGenderFemale": "女子",
|
||||
"tournamentClassGenderOpen": "公开组(全体)",
|
||||
"internalStatsAgeNoClass": "未分配级别",
|
||||
"internalStatsAgeSelectAll": "全选",
|
||||
"internalStatsAgeSelectNone": "全不选",
|
||||
|
||||
Reference in New Issue
Block a user