From 9ee827c106792d0f4670d306b5d1aa19cc020b30 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 15 Apr 2026 18:27:01 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20vue=20de=20face=20de=20l'=C3=A9chantillo?= =?UTF-8?q?n=20virtuel=20quand=20xMax=20est=20pair=20(#188)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La division (xMax + 1) / 2 produisait un float (ex: 4.5) quand xMax est pair, générant un nom de fichier introuvable et un undefined dans le tableau images, ce qui plantait le rendu entier. - Math.round() pour obtenir un index entier - fallback sur le premier fichier si la vue de face est introuvable - filter(Boolean) en défense sur le tableau images - console.warn pour signaler les cas de nommage non conforme Co-Authored-By: Claude Sonnet 4.6 --- src/components/project/cards/VirtualSample.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/project/cards/VirtualSample.vue b/src/components/project/cards/VirtualSample.vue index 3b7123f..56d6d34 100644 --- a/src/components/project/cards/VirtualSample.vue +++ b/src/components/project/cards/VirtualSample.vue @@ -25,7 +25,7 @@ const images = computed(() => { }, ]; } - return allVariations.value.map((variation) => getFrontView(variation)) ?? []; + return allVariations.value.map((variation) => getFrontView(variation)).filter(Boolean) ?? []; }); const uri = addLocalePrefix(step.uri); @@ -35,10 +35,13 @@ function getFrontView(variation) { const xMax = parseInt( variation.files[variation.files.length - 1].name.split('_')[1].split('.')[0] ); - const xFrontView = (xMax + 1) / 2; + const xFrontView = Math.round((xMax + 1) / 2); const extension = variation.files[0].name.split('.')[1]; const frontViewName = '0_' + xFrontView + '.' + extension; const frontView = variation.files.find((file) => file.name === frontViewName); - return frontView; + if (!frontView) { + console.warn(`[VirtualSample] Front view "${frontViewName}" not found in variation "${variation.title}", falling back to first file.`); + } + return frontView ?? variation.files[0]; }