frontend: use exact download category folder keys as display labels

This commit is contained in:
Dariusz L
2026-07-24 20:37:29 +02:00
parent 9454f5a7d6
commit 79e01ab225
2 changed files with 48 additions and 46 deletions
@@ -2497,6 +2497,44 @@ test('download category normalization maps select safetensors alias to diffusion
assert.equal(normalizeDownloadCategory('SELECT SAFETENSORS'), 'diffusion_models');
});
test('category display names use exact ComfyUI folder keys', () => {
const normalizeDownloadCategory = eval(`(${extractMethod(downloadTargetMethodsSource, 'normalizeDownloadCategory')})`);
const getCategoryDisplayName = eval(`(${extractMethod(downloadTargetMethodsSource, 'getCategoryDisplayName')})`);
const dialog = { normalizeDownloadCategory };
assert.equal(getCategoryDisplayName.call(dialog, 'audio_encoders'), 'audio_encoders');
assert.equal(getCategoryDisplayName.call(dialog, 'audio_encoder'), 'audio_encoders');
assert.equal(getCategoryDisplayName.call(dialog, 'text_encoders'), 'text_encoders');
assert.equal(getCategoryDisplayName.call(dialog, 'style_models'), 'style_models');
assert.equal(getCategoryDisplayName.call(dialog, 'model_patches'), 'model_patches');
assert.equal(getCategoryDisplayName.call(dialog, 'upscale_models'), 'upscale_models');
assert.equal(getCategoryDisplayName.call(dialog, 'loras'), 'loras');
assert.equal(getCategoryDisplayName.call(dialog, 'checkpoints'), 'checkpoints');
});
test('download path settings label categories with exact folder keys', () => {
const getDefaultDownloadPathTemplates = eval(`(${extractMethod(downloadTargetMethodsSource, 'getDefaultDownloadPathTemplates')})`);
const getDownloadPathTemplateCategoryDefinitions = eval(`(${extractMethod(downloadTargetMethodsSource, 'getDownloadPathTemplateCategoryDefinitions')})`);
const getDefaultRootCategoryDefinitions = eval(`(${extractMethod(downloadTargetMethodsSource, 'getDefaultRootCategoryDefinitions')})`);
const dialog = { getDefaultDownloadPathTemplates };
const templateCategories = getDownloadPathTemplateCategoryDefinitions.call(dialog);
const rootCategories = getDefaultRootCategoryDefinitions.call(dialog);
assert.deepEqual(
templateCategories.map(item => item.label),
templateCategories.map(item => item.key)
);
assert.equal(
rootCategories.find(item => item.key === 'text_encoders').label,
'text_encoders'
);
assert.equal(
rootCategories.find(item => item.key === 'upscale_models').label,
'upscale_models'
);
});
test('missing model preview shows accepted GGUF format next to its category', () => {
const renderMissingModelFormatBadges = eval(`(${extractMethod(missingBrowserMethodsSource, 'renderMissingModelFormatBadges')})`);
const dialog = {
+10 -46
View File
@@ -714,35 +714,7 @@ export const downloadTargetMethods = {
getCategoryDisplayName(category = '') {
category = this.normalizeDownloadCategory(category);
const displayNames = {
'checkpoints': 'checkpoint',
'loras': 'lora',
'vae': 'vae',
'controlnet': 'controlnet',
'embeddings': 'embedding',
'upscale_models': 'upscale_model',
'latent_upscale_models': 'latent_upscale_model',
'diffusion_models': 'diffusion_models',
'text_encoders': 'text encoders',
'clip': 'clip',
'clip_vision': 'clip_vision',
'hypernetworks': 'hypernetwork',
'style_models': 'style model',
'gligen': 'GLIGEN',
'diffusers': 'Diffusers',
'vae_approx': 'TAESD / VAE approx',
'audio_encoders': 'audio encoder',
'background_removal': 'background removal',
'frame_interpolation': 'frame interpolation',
'geometry_estimation': 'geometry estimation',
'detection': 'detection',
'model_patches': 'model patch',
'photomaker': 'PhotoMaker',
'optical_flow': 'optical flow',
'sams': 'SAM',
'ultralytics': 'Ultralytics'
};
return displayNames[category] || category || 'unknown';
return category || 'unknown';
},
getModelTypeColorClass(value = '') {
@@ -1107,27 +1079,19 @@ export const downloadTargetMethods = {
},
getDownloadPathTemplateCategoryDefinitions() {
return [
{ key: 'loras', label: 'LoRAs' },
{ key: 'checkpoints', label: 'Checkpoints' },
{ key: 'embeddings', label: 'Embeddings' },
{ key: 'diffusion_models', label: 'Diffusion models' },
{ key: 'text_encoders', label: 'Text encoders' },
{ key: 'controlnet', label: 'ControlNet' },
{ key: 'vae', label: 'VAE' },
{ key: 'upscale_models', label: 'Upscale models' }
];
return Object.keys(this.getDefaultDownloadPathTemplates())
.map(key => ({ key, label: key }));
},
getDefaultRootCategoryDefinitions() {
return [
{ key: 'loras', label: 'LoRA root', settingKey: 'default_lora_root', storageKey: 'ModelResolver.defaultLoraRoot' },
{ key: 'checkpoints', label: 'Checkpoint root', settingKey: 'default_checkpoint_root', storageKey: 'ModelResolver.defaultCheckpointRoot' },
{ key: 'diffusion_models', label: 'Diffusion model root', settingKey: 'default_unet_root', storageKey: 'ModelResolver.defaultUnetRoot' },
{ key: 'embeddings', label: 'Embedding root', settingKey: 'default_embedding_root', storageKey: 'ModelResolver.defaultEmbeddingRoot' },
{ key: 'text_encoders', label: 'Text encoder root', settingKey: 'default_text_encoder_root', storageKey: 'ModelResolver.defaultTextEncoderRoot' },
{ key: 'vae', label: 'VAE root', settingKey: 'default_vae_root', storageKey: 'ModelResolver.defaultVaeRoot' },
{ key: 'upscale_models', label: 'Upscale model root', settingKey: 'default_upscale_model_root', storageKey: 'ModelResolver.defaultUpscaleModelRoot' }
{ key: 'loras', label: 'loras', settingKey: 'default_lora_root', storageKey: 'ModelResolver.defaultLoraRoot' },
{ key: 'checkpoints', label: 'checkpoints', settingKey: 'default_checkpoint_root', storageKey: 'ModelResolver.defaultCheckpointRoot' },
{ key: 'diffusion_models', label: 'diffusion_models', settingKey: 'default_unet_root', storageKey: 'ModelResolver.defaultUnetRoot' },
{ key: 'embeddings', label: 'embeddings', settingKey: 'default_embedding_root', storageKey: 'ModelResolver.defaultEmbeddingRoot' },
{ key: 'text_encoders', label: 'text_encoders', settingKey: 'default_text_encoder_root', storageKey: 'ModelResolver.defaultTextEncoderRoot' },
{ key: 'vae', label: 'vae', settingKey: 'default_vae_root', storageKey: 'ModelResolver.defaultVaeRoot' },
{ key: 'upscale_models', label: 'upscale_models', settingKey: 'default_upscale_model_root', storageKey: 'ModelResolver.defaultUpscaleModelRoot' }
];
},