Enhance file selection and loading logic with dynamic options and support for "All Forms" files

This commit is contained in:
2026-01-28 19:58:55 +00:00
parent 070a1f2f74
commit 585b0fb7a3

View File

@@ -92,14 +92,8 @@
<label for="file-select">Select File:</label> <label for="file-select">Select File:</label>
<select id="file-select" v-model="selectedFile" @change="onFileChange"> <select id="file-select" v-model="selectedFile" @change="onFileChange">
<option value="">-- Choose a file --</option> <option value="">-- Choose a file --</option>
<option v-if="status.files?.pokemonFile" value="pokemon"> <option v-for="file in status.available" :key="file.filename" :value="getFileType(file.filename)">
Pokemon ({{ formatSize(status.files.pokemonFile.size) }}) {{ formatFileName(file.filename) }} ({{ formatSize(file.size) }})
</option>
<option v-if="status.files?.movesFile" value="moves">
Moves ({{ formatSize(status.files.movesFile.size) }})
</option>
<option v-if="status.files?.rawFile" value="raw">
Raw Gamemaster ({{ formatSize(status.files.rawFile.size) }})
</option> </option>
</select> </select>
<span v-if="fileContent" class="file-info" <span v-if="fileContent" class="file-info"
@@ -457,6 +451,9 @@ async function loadFile() {
case 'pokemon': case 'pokemon':
data = await perfMonitor('Load Pokemon', () => client.getPokemon()); data = await perfMonitor('Load Pokemon', () => client.getPokemon());
break; break;
case 'allForms':
data = await perfMonitor('Load All Forms', () => client.getAllForms());
break;
case 'moves': case 'moves':
data = await perfMonitor('Load Moves', () => client.getMoves()); data = await perfMonitor('Load Moves', () => client.getMoves());
break; break;
@@ -698,6 +695,22 @@ function formatSize(bytes) {
return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i]; return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + ' ' + sizes[i];
} }
function getFileType(filename) {
if (filename.includes('pokemon') && filename.includes('AllForms')) return 'allForms';
if (filename.includes('pokemon')) return 'pokemon';
if (filename.includes('moves')) return 'moves';
if (filename.includes('raw')) return 'raw';
return '';
}
function formatFileName(filename) {
if (filename.includes('pokemon') && filename.includes('AllForms')) return 'Pokemon All Forms';
if (filename.includes('pokemon')) return 'Pokemon';
if (filename.includes('moves')) return 'Moves';
if (filename.includes('raw')) return 'Raw Gamemaster';
return filename;
}
// Lifecycle // Lifecycle
onMounted(() => { onMounted(() => {
loadStatus(); loadStatus();