refactor(clubSettings): remove myTischtennis club ID and update related logic

- Removed the myTischtennis club ID field from club settings and related backend logic.
- Updated the database migration to eliminate the my_tischtennis_club_id column.
- Adjusted frontend components and services to reflect the removal of the club ID, ensuring the use of association member number instead.
- Enhanced user interface hints to clarify the use of association member number for rankings.
This commit is contained in:
Torsten Schulz (local)
2026-03-12 10:34:10 +01:00
parent ad09a45b17
commit a030e07b46
7 changed files with 9 additions and 28 deletions

View File

@@ -741,10 +741,9 @@
"myTischtennisRankings": "myTischtennis TTR/QTTR-Ranglisten",
"myTischtennisRankingsHint": "Automatischer Abruf der Vereins-Rangliste für TTR- und QTTR-Updates der Mitglieder.",
"autoFetchRankings": "Ranglisten automatisch abrufen",
"myTischtennisClubId": "myTischtennis Vereinsnummer",
"myTischtennisClubIdPlaceholder": "z. B. 43030",
"myTischtennisFedNickname": "Verbandskürzel",
"myTischtennisFedNicknamePlaceholder": "z. B. HeTTV"
"myTischtennisFedNicknamePlaceholder": "z. B. HeTTV",
"rankingsUsesAssociationNumber": "Die Vereinsnummer für den Ranglisten-Abruf entspricht der Verbands-Mitgliedsnummer oben."
},
"predefinedActivities": {
"title": "Vordefinierte Aktivitäten",

View File

@@ -61,15 +61,12 @@
</label>
</div>
<div v-if="autoFetchRankings" class="rankings-fields">
<div class="field-group">
<label>{{ $t('clubSettings.myTischtennisClubId') }}</label>
<input v-model="myTischtennisClubId" class="text-input" :placeholder="$t('clubSettings.myTischtennisClubIdPlaceholder')" />
</div>
<div class="field-group">
<label>{{ $t('clubSettings.myTischtennisFedNickname') }}</label>
<input v-model="myTischtennisFedNickname" class="text-input" :placeholder="$t('clubSettings.myTischtennisFedNicknamePlaceholder')" />
</div>
</div>
<p v-if="autoFetchRankings" class="hint">{{ $t('clubSettings.rankingsUsesAssociationNumber') }}</p>
</section>
<section v-if="currentClub && !loading" class="card actions-card">
@@ -112,7 +109,6 @@ export default {
activeTab: 'settings',
greeting: '',
associationMemberNumber: '',
myTischtennisClubId: '',
myTischtennisFedNickname: '',
autoFetchRankings: false,
saved: false,
@@ -136,7 +132,6 @@ export default {
if (!this.currentClub) {
this.greeting = '';
this.associationMemberNumber = '';
this.myTischtennisClubId = '';
this.myTischtennisFedNickname = '';
this.autoFetchRankings = false;
this.loadError = null;
@@ -149,14 +144,12 @@ export default {
const club = response.data;
this.greeting = club?.greetingText ?? '';
this.associationMemberNumber = club?.associationMemberNumber ?? '';
this.myTischtennisClubId = club?.myTischtennisClubId ?? '';
this.myTischtennisFedNickname = club?.myTischtennisFedNickname ?? '';
this.autoFetchRankings = !!club?.autoFetchRankings;
} catch (e) {
this.loadError = this.$t('clubSettings.loadFailed');
this.greeting = '';
this.associationMemberNumber = '';
this.myTischtennisClubId = '';
this.myTischtennisFedNickname = '';
this.autoFetchRankings = false;
} finally {
@@ -172,7 +165,6 @@ export default {
await apiClient.put(`/clubs/${this.currentClub}/settings`, {
greetingText: this.greeting,
associationMemberNumber: this.associationMemberNumber,
myTischtennisClubId: this.myTischtennisClubId || null,
myTischtennisFedNickname: this.myTischtennisFedNickname || null,
autoFetchRankings: this.autoFetchRankings,
});
@@ -211,7 +203,7 @@ export default {
}
.text-input { width: 100%; border: 1px solid #ddd; border-radius: 6px; padding: 8px; font-size: 14px; }
.rankings-row { margin-bottom: 12px; }
.rankings-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 12px; }
.rankings-fields { margin-top: 12px; }
.field-group label { display: block; margin-bottom: 4px; font-weight: 500; color: #333; }
.checkbox-label { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.checkbox-label input[type="checkbox"] { width: auto; }