Refactor FalukantService and update UI components: Removed debug logging from FalukantService, added age requirement messages in i18n files, and improved age validation display in PoliticsView. This enhances user experience and code clarity regarding age eligibility for political applications.
This commit is contained in:
@@ -18,14 +18,14 @@
|
||||
<tbody>
|
||||
<tr v-for="product in products" :key="product.id">
|
||||
<td>{{ $t(`falukant.product.${product.labelTr}`) }}</td>
|
||||
<td>{{ product.knowledges[0].knowledge }} %</td>
|
||||
<td>{{ product.knowledges?.[0]?.knowledge ?? 0 }} %</td>
|
||||
<td>
|
||||
<button
|
||||
v-if="ownRunningEducations.length === 0"
|
||||
@click="learnItem(product.id, 'self')"
|
||||
>
|
||||
{{ $t('falukant.education.learn') }}
|
||||
({{ formatCost(getSelfCost(product.knowledges[0].knowledge)) }})
|
||||
({{ formatCost(getSelfCost(product.knowledges?.[0]?.knowledge ?? 0)) }})
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -171,11 +171,23 @@ export default {
|
||||
activeChild: null,
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
activeTab: {
|
||||
async handler(tab) {
|
||||
if (tab === 'director' && this.directors.length === 0) {
|
||||
await this.loadDirectors();
|
||||
}
|
||||
if (tab === 'children' && this.children.length === 0) {
|
||||
await this.loadChildren();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
async mounted() {
|
||||
await this.loadProducts();
|
||||
await this.loadEducations();
|
||||
await this.loadDirectors();
|
||||
await this.loadChildren();
|
||||
if (this.activeTab === 'director') await this.loadDirectors();
|
||||
},
|
||||
methods: {
|
||||
// Basis-Funktion: lineare Interpolation
|
||||
@@ -193,7 +205,8 @@ export default {
|
||||
return this.computeCost(knowledge, 'one');
|
||||
},
|
||||
getSelfAllCost() {
|
||||
const avg = this.products.reduce((sum, p) => sum + (p.knowledges[0].knowledge||0), 0) / this.products.length;
|
||||
if (!this.products?.length) return 0;
|
||||
const avg = this.products.reduce((sum, p) => sum + (p.knowledges?.[0]?.knowledge || 0), 0) / this.products.length;
|
||||
return this.computeCost(avg, 'all');
|
||||
},
|
||||
|
||||
@@ -209,12 +222,14 @@ export default {
|
||||
},
|
||||
getChildrenAllCost(childId) {
|
||||
const child = this.children.find(c => c.id === childId);
|
||||
const avg = (child.knowledge || []).reduce((s,k) => s + k.knowledge, 0) / (child.knowledge?.length||1);
|
||||
if (!child || !Array.isArray(child.knowledge)) return 0;
|
||||
const avg = child.knowledge.reduce((s, k) => s + (k.knowledge || 0), 0) / (child.knowledge.length || 1);
|
||||
return this.computeCost(avg, 'all');
|
||||
},
|
||||
childNotInLearning() {
|
||||
const child = this.children.find(c => c.id === this.activeChild);
|
||||
return !this.childrenRunningEducations.some(e => e.learningCharacter.id === child.id);
|
||||
if (!child) return true;
|
||||
return !this.childrenRunningEducations.some(e => e.learningCharacter?.id === child.id);
|
||||
},
|
||||
|
||||
// DIRECTOR
|
||||
|
||||
@@ -57,6 +57,7 @@
|
||||
|
||||
<!-- OPEN Tab: hier zeigen wir 'openPolitics' -->
|
||||
<div v-else-if="activeTab === 'openPolitics'" class="tab-pane">
|
||||
<p class="politics-age-requirement">{{ $t('falukant.politics.open.ageRequirement') }}</p>
|
||||
<div v-if="loading.openPolitics" class="loading">{{ $t('loading') }}</div>
|
||||
<div v-else class="table-scroll">
|
||||
<table class="politics-table">
|
||||
@@ -65,7 +66,7 @@
|
||||
<th>{{ $t('falukant.politics.open.office') }}</th>
|
||||
<th>{{ $t('falukant.politics.open.region') }}</th>
|
||||
<th>{{ $t('falukant.politics.open.date') }}</th>
|
||||
<th>{{ $t('falukant.politics.open.candidacy') }}</th>
|
||||
<th>{{ $t('falukant.politics.open.candidacyWithAge') }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -247,10 +248,6 @@ export default {
|
||||
try {
|
||||
const { data } = await apiClient.get('/api/falukant/politics/open');
|
||||
this.openPolitics = Array.isArray(data) ? data : [];
|
||||
// Debug: Alters-Flag prüfen
|
||||
if (this.openPolitics.length > 0) {
|
||||
console.log('[PoliticsView] loadOpenPolitics: count=', this.openPolitics.length, 'first.canApplyByAge=', this.openPolitics[0].canApplyByAge, 'first.id=', this.openPolitics[0].id);
|
||||
}
|
||||
// Bereits beworbene Positionen vorselektieren, damit die Checkbox
|
||||
// sichtbar markiert bleibt.
|
||||
this.selectedApplications = this.openPolitics
|
||||
@@ -435,6 +432,13 @@ h2 {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.politics-age-requirement {
|
||||
flex: 0 0 auto;
|
||||
margin: 0 0 10px 0;
|
||||
font-size: 0.95em;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.table-scroll {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
|
||||
Reference in New Issue
Block a user