feat(members): add TTR sorting option and update related functionality
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 55s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 55s
This commit is contained in:
@@ -187,6 +187,7 @@
|
||||
<option value="firstName">{{ $t('members.sortFirstName') }}</option>
|
||||
<option value="birthday">{{ $t('members.sortBirthday') }}</option>
|
||||
<option value="age">{{ $t('members.sortAge') }}</option>
|
||||
<option value="ttr">{{ $t('members.sortTtr') }}</option>
|
||||
<option value="qttr">{{ $t('members.sortQttr') }}</option>
|
||||
<option value="lastTraining">{{ $t('members.sortLastTraining') }}</option>
|
||||
<option value="openTasks">{{ $t('members.sortOpenTasks') }}</option>
|
||||
|
||||
@@ -486,6 +486,7 @@
|
||||
"sortFirstName": "Ngalan",
|
||||
"sortBirthday": "Adlawng natawhan",
|
||||
"sortAge": "Edad",
|
||||
"sortTtr": "TTR value",
|
||||
"sortQttr": "QTTR value",
|
||||
"ageRange": "Edad gikan - hangtod",
|
||||
"ageFromPlaceholder": "gikan",
|
||||
|
||||
@@ -485,6 +485,7 @@
|
||||
"sortFirstName": "Vorname",
|
||||
"sortBirthday": "Geburtstag",
|
||||
"sortAge": "Alter",
|
||||
"sortTtr": "TTR-Wert",
|
||||
"sortQttr": "QTTR-Wert",
|
||||
"ageRange": "Alter von - bis",
|
||||
"ageFromPlaceholder": "von",
|
||||
|
||||
@@ -504,6 +504,7 @@
|
||||
"sortFirstName": "Vorname",
|
||||
"sortBirthday": "Geburtstag",
|
||||
"sortAge": "Alter",
|
||||
"sortTtr": "TTR-Wert",
|
||||
"sortQttr": "QTTR-Wert",
|
||||
"ageRange": "Alter von - bis",
|
||||
"ageFromPlaceholder": "von",
|
||||
|
||||
@@ -494,6 +494,7 @@
|
||||
"sortFirstName": "First name",
|
||||
"sortBirthday": "Birthday",
|
||||
"sortAge": "Age",
|
||||
"sortTtr": "TTR value",
|
||||
"sortQttr": "QTTR value",
|
||||
"ageRange": "Age from - to",
|
||||
"ageFromPlaceholder": "from",
|
||||
|
||||
@@ -494,6 +494,7 @@
|
||||
"sortFirstName": "First name",
|
||||
"sortBirthday": "Birthday",
|
||||
"sortAge": "Age",
|
||||
"sortTtr": "TTR value",
|
||||
"sortQttr": "QTTR value",
|
||||
"ageRange": "Age from - to",
|
||||
"ageFromPlaceholder": "from",
|
||||
|
||||
@@ -494,6 +494,7 @@
|
||||
"sortFirstName": "First name",
|
||||
"sortBirthday": "Birthday",
|
||||
"sortAge": "Age",
|
||||
"sortTtr": "TTR value",
|
||||
"sortQttr": "QTTR value",
|
||||
"ageRange": "Age from - to",
|
||||
"ageFromPlaceholder": "from",
|
||||
|
||||
@@ -502,6 +502,7 @@
|
||||
"sortFirstName": "Nombre",
|
||||
"sortBirthday": "Fecha de nacimiento",
|
||||
"sortAge": "Edad",
|
||||
"sortTtr": "Valor TTR",
|
||||
"sortQttr": "Valor QTTR",
|
||||
"ageRange": "Edad de - a",
|
||||
"ageFromPlaceholder": "de",
|
||||
|
||||
@@ -501,6 +501,7 @@
|
||||
"sortFirstName": "Pangalan",
|
||||
"sortBirthday": "Birthday",
|
||||
"sortAge": "Edad",
|
||||
"sortTtr": "Halaga ng TTR",
|
||||
"sortQttr": "Halaga ng QTTR",
|
||||
"ageRange": "Edad mula - hanggang",
|
||||
"ageFromPlaceholder": "mula",
|
||||
|
||||
@@ -498,6 +498,7 @@
|
||||
"sortFirstName": "Prénom",
|
||||
"sortBirthday": "Date de naissance",
|
||||
"sortAge": "Âge",
|
||||
"sortTtr": "Valeur TTR",
|
||||
"sortQttr": "Valeur QTTR",
|
||||
"ageRange": "Âge de - à",
|
||||
"ageFromPlaceholder": "de",
|
||||
|
||||
@@ -500,6 +500,7 @@
|
||||
"sortFirstName": "Nome",
|
||||
"sortBirthday": "Data di nascita",
|
||||
"sortAge": "Età",
|
||||
"sortTtr": "Valore TTR",
|
||||
"sortQttr": "Valore QTTR",
|
||||
"ageRange": "Età da - a",
|
||||
"ageFromPlaceholder": "da",
|
||||
|
||||
@@ -502,6 +502,7 @@
|
||||
"sortFirstName": "ファーストネーム",
|
||||
"sortBirthday": "誕生日",
|
||||
"sortAge": "年",
|
||||
"sortTtr": "TTR値",
|
||||
"sortQttr": "QTTR値",
|
||||
"ageRange": "年齢範囲",
|
||||
"ageFromPlaceholder": "から",
|
||||
|
||||
@@ -499,6 +499,7 @@
|
||||
"sortFirstName": "Imię",
|
||||
"sortBirthday": "Data urodzenia",
|
||||
"sortAge": "Wiek",
|
||||
"sortTtr": "Wartość TTR",
|
||||
"sortQttr": "Wartość QTTR",
|
||||
"ageRange": "Wiek od - do",
|
||||
"ageFromPlaceholder": "od",
|
||||
|
||||
@@ -504,6 +504,7 @@
|
||||
"sortFirstName": "ชื่อ",
|
||||
"sortBirthday": "วันเกิด",
|
||||
"sortAge": "อายุ",
|
||||
"sortTtr": "ค่า TTR",
|
||||
"sortQttr": "ค่า QTTR",
|
||||
"ageRange": "ช่วงอายุ",
|
||||
"ageFromPlaceholder": "จาก",
|
||||
|
||||
@@ -500,6 +500,7 @@
|
||||
"sortFirstName": "Pangalan",
|
||||
"sortBirthday": "Birthday",
|
||||
"sortAge": "Edad",
|
||||
"sortTtr": "Halaga ng TTR",
|
||||
"sortQttr": "Halaga ng QTTR",
|
||||
"ageRange": "Edad mula - hanggang",
|
||||
"ageFromPlaceholder": "mula",
|
||||
|
||||
@@ -503,6 +503,7 @@
|
||||
"sortFirstName": "名",
|
||||
"sortBirthday": "生日",
|
||||
"sortAge": "年龄",
|
||||
"sortTtr": "TTR值",
|
||||
"sortQttr": "QTTR值",
|
||||
"ageRange": "年龄范围",
|
||||
"ageFromPlaceholder": "从",
|
||||
|
||||
@@ -1113,8 +1113,8 @@ export default {
|
||||
const date = new Date(member.lastTraining);
|
||||
return Number.isNaN(date.getTime()) ? Number.MAX_SAFE_INTEGER : date.getTime();
|
||||
};
|
||||
const getQttrValue = (member) => {
|
||||
const parsed = Number.parseFloat(member?.qttr);
|
||||
const getRatingValue = (member, rating) => {
|
||||
const parsed = Number.parseFloat(member?.[rating]);
|
||||
return Number.isFinite(parsed) ? parsed : null;
|
||||
};
|
||||
const compareStrings = (a, b) => String(a || '').localeCompare(String(b || ''), 'de-DE');
|
||||
@@ -1132,21 +1132,23 @@ export default {
|
||||
case 'age':
|
||||
result = getAgeValue(a) - getAgeValue(b) || compareStrings(a.lastName, b.lastName);
|
||||
break;
|
||||
case 'ttr':
|
||||
case 'qttr': {
|
||||
const qttrA = getQttrValue(a);
|
||||
const qttrB = getQttrValue(b);
|
||||
const hasQttrA = qttrA !== null;
|
||||
const hasQttrB = qttrB !== null;
|
||||
const rating = this.selectedSort;
|
||||
const ratingA = getRatingValue(a, rating);
|
||||
const ratingB = getRatingValue(b, rating);
|
||||
const hasRatingA = ratingA !== null;
|
||||
const hasRatingB = ratingB !== null;
|
||||
|
||||
// Fehlende QTTR-Werte immer nach unten sortieren, unabhängig von der Sortierrichtung.
|
||||
if (!hasQttrA && hasQttrB) {
|
||||
// Fehlende TTR-/QTTR-Werte immer nach unten sortieren, unabhängig von der Sortierrichtung.
|
||||
if (!hasRatingA && hasRatingB) {
|
||||
result = 1;
|
||||
} else if (hasQttrA && !hasQttrB) {
|
||||
} else if (hasRatingA && !hasRatingB) {
|
||||
result = -1;
|
||||
} else if (!hasQttrA && !hasQttrB) {
|
||||
} else if (!hasRatingA && !hasRatingB) {
|
||||
result = compareStrings(a.lastName, b.lastName) || compareStrings(a.firstName, b.firstName);
|
||||
} else {
|
||||
result = (qttrA - qttrB) * direction || compareStrings(a.lastName, b.lastName) || compareStrings(a.firstName, b.firstName);
|
||||
result = (ratingA - ratingB) * direction || compareStrings(a.lastName, b.lastName) || compareStrings(a.firstName, b.firstName);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1161,8 +1163,8 @@ export default {
|
||||
result = compareStrings(a.lastName, b.lastName) || compareStrings(a.firstName, b.firstName);
|
||||
break;
|
||||
}
|
||||
// QTTR berücksichtigt die Sortierrichtung bereits im Zweig selbst.
|
||||
if (this.selectedSort === 'qttr') {
|
||||
// TTR und QTTR berücksichtigen die Sortierrichtung bereits im Zweig selbst.
|
||||
if (this.selectedSort === 'ttr' || this.selectedSort === 'qttr') {
|
||||
return result;
|
||||
}
|
||||
return result * direction;
|
||||
|
||||
Reference in New Issue
Block a user