Enhance NPC creation functionality and validation in Admin module
- Updated AdminController to validate the count parameter, ensuring it is between 1 and 500. - Refactored NPC creation logic in AdminService to create NPCs for each city-title combination, improving efficiency. - Enhanced frontend localization files to reflect changes in count descriptions and validation messages. - Updated CreateNPCView to provide user guidance on count input and display detailed creation results.
This commit is contained in:
@@ -122,18 +122,20 @@
|
||||
"to": "bis",
|
||||
"years": "Jahre",
|
||||
"titleRange": "Titel-Bereich",
|
||||
"count": "Anzahl",
|
||||
"count": "Anzahl pro Stadt-Titel-Kombination",
|
||||
"countHelp": "Diese Anzahl wird für jede Kombination aus gewählter Stadt und Titel erstellt.",
|
||||
"create": "NPCs erstellen",
|
||||
"creating": "Erstelle...",
|
||||
"result": "Ergebnis",
|
||||
"createdCount": "{count} NPCs wurden erstellt.",
|
||||
"combinationInfo": "{perCombination} NPCs pro Kombination × {combinations} Kombinationen = {count} NPCs insgesamt",
|
||||
"age": "Alter",
|
||||
"errorLoadingRegions": "Fehler beim Laden der Städte.",
|
||||
"errorLoadingTitles": "Fehler beim Laden der Titel.",
|
||||
"errorCreating": "Fehler beim Erstellen der NPCs.",
|
||||
"invalidAgeRange": "Ungültiger Altersbereich.",
|
||||
"invalidTitleRange": "Ungültiger Titel-Bereich.",
|
||||
"invalidCount": "Ungültige Anzahl (1-100)."
|
||||
"invalidCount": "Ungültige Anzahl (1-500)."
|
||||
}
|
||||
},
|
||||
"chatrooms": {
|
||||
|
||||
@@ -149,18 +149,20 @@
|
||||
"to": "to",
|
||||
"years": "years",
|
||||
"titleRange": "Title Range",
|
||||
"count": "Count",
|
||||
"count": "Count per City-Title Combination",
|
||||
"countHelp": "This count will be created for each combination of selected city and title.",
|
||||
"create": "Create NPCs",
|
||||
"creating": "Creating...",
|
||||
"result": "Result",
|
||||
"createdCount": "{count} NPCs have been created.",
|
||||
"combinationInfo": "{perCombination} NPCs per combination × {combinations} combinations = {count} NPCs total",
|
||||
"age": "Age",
|
||||
"errorLoadingRegions": "Error loading cities.",
|
||||
"errorLoadingTitles": "Error loading titles.",
|
||||
"errorCreating": "Error creating NPCs.",
|
||||
"invalidAgeRange": "Invalid age range.",
|
||||
"invalidTitleRange": "Invalid title range.",
|
||||
"invalidCount": "Invalid count (1-100)."
|
||||
"invalidCount": "Invalid count (1-500)."
|
||||
}
|
||||
},
|
||||
"chatrooms": {
|
||||
|
||||
@@ -47,7 +47,8 @@
|
||||
|
||||
<div class="form-group">
|
||||
<label>{{ $t('admin.falukant.createNPC.count') }}:</label>
|
||||
<input type="number" v-model.number="count" min="1" max="100" class="form-input" />
|
||||
<input type="number" v-model.number="count" min="1" max="500" class="form-input" />
|
||||
<div class="help-text">{{ $t('admin.falukant.createNPC.countHelp') }}</div>
|
||||
</div>
|
||||
|
||||
<div class="action-buttons">
|
||||
@@ -61,6 +62,13 @@
|
||||
<div v-if="result" class="result-section">
|
||||
<h2>{{ $t('admin.falukant.createNPC.result') }}</h2>
|
||||
<p>{{ $t('admin.falukant.createNPC.createdCount', { count: result.count }) }}</p>
|
||||
<p v-if="result.totalCombinations" class="info-text">
|
||||
{{ $t('admin.falukant.createNPC.combinationInfo', {
|
||||
perCombination: result.countPerCombination,
|
||||
combinations: result.totalCombinations,
|
||||
total: result.count
|
||||
}) }}
|
||||
</p>
|
||||
<div v-if="result.npcs && result.npcs.length > 0" class="npcs-list">
|
||||
<div v-for="npc in result.npcs" :key="npc.id" class="npc-item">
|
||||
{{ $t(`falukant.titles.${npc.gender}.${npc.title}`) }} {{ npc.firstName }} {{ npc.lastName }}
|
||||
@@ -142,7 +150,7 @@ export default {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.count < 1 || this.count > 100) {
|
||||
if (this.count < 1 || this.count > 500) {
|
||||
this.error = this.$t('admin.falukant.createNPC.invalidCount');
|
||||
return;
|
||||
}
|
||||
@@ -286,4 +294,17 @@ export default {
|
||||
border-radius: 4px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.help-text {
|
||||
font-size: 0.9em;
|
||||
color: #666;
|
||||
margin-top: 5px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.info-text {
|
||||
font-size: 0.9em;
|
||||
color: #155724;
|
||||
margin-top: 5px;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user