From da447e4ea2a4d82be1253452ff43133c44d02e74 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 24 Oct 2025 15:50:20 +0200 Subject: [PATCH] feat: supprimer automatiquement les valeurs de champs si besoin --- app/pages/component-catalog.vue | 27 ++++++++++++++++++--------- app/pages/pieces-catalog.vue | 28 +++++++++++++++++++--------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/app/pages/component-catalog.vue b/app/pages/component-catalog.vue index d2ce710..6c92083 100644 --- a/app/pages/component-catalog.vue +++ b/app/pages/component-catalog.vue @@ -180,8 +180,8 @@ const resolvePreviewAlt = (component: Record) => { return 'Aperçu du document' } -const resolveDeleteBlockingReasons = (component: Record) => { - const reasons: string[] = [] +const resolveDeleteGuard = (component: Record) => { + const blockingReasons: string[] = [] const machineLinks = Array.isArray(component?.machineLinks) ? component.machineLinks.length : component?.machineLinksCount ?? 0 @@ -193,15 +193,15 @@ const resolveDeleteBlockingReasons = (component: Record) => { : component?.customFieldValuesCount ?? 0 if (machineLinks > 0) { - reasons.push(`${machineLinks} liaison${machineLinks > 1 ? 's' : ''} machine`) + blockingReasons.push(`${machineLinks} liaison${machineLinks > 1 ? 's' : ''} machine`) } if (documents > 0) { - reasons.push(`${documents} document${documents > 1 ? 's' : ''}`) + blockingReasons.push(`${documents} document${documents > 1 ? 's' : ''}`) } - if (customFields > 0) { - reasons.push(`${customFields} valeur${customFields > 1 ? 's' : ''} de champ personnalisé`) + return { + blockingReasons, + hasCustomFields: customFields > 0, } - return reasons } const resolveComparableName = (component: Record) => { @@ -259,7 +259,7 @@ const visibleComposants = computed(() => { }) const handleDeleteComponent = async (component: Record) => { - const blockingReasons = resolveDeleteBlockingReasons(component) + const { blockingReasons, hasCustomFields } = resolveDeleteGuard(component) if (blockingReasons.length) { showError( @@ -271,7 +271,16 @@ const handleDeleteComponent = async (component: Record) => { } const componentName = component?.name || 'ce composant' - const confirmed = window.confirm(`Voulez-vous vraiment supprimer ${componentName} ?`) + const confirmLines = [ + `Voulez-vous vraiment supprimer ${componentName} ?`, + ] + if (hasCustomFields) { + confirmLines.push( + 'Les valeurs de champs personnalisés associées seront également supprimées.' + ) + } + + const confirmed = window.confirm(confirmLines.join('\n\n')) if (!confirmed) { return } diff --git a/app/pages/pieces-catalog.vue b/app/pages/pieces-catalog.vue index 202cc55..6e616a8 100644 --- a/app/pages/pieces-catalog.vue +++ b/app/pages/pieces-catalog.vue @@ -182,8 +182,8 @@ const resolvePreviewAlt = (piece: Record) => { return 'Aperçu du document' } -const resolveDeleteBlockingReasons = (piece: Record) => { - const reasons: string[] = [] +const resolveDeleteGuard = (piece: Record) => { + const blockingReasons: string[] = [] const machineLinks = Array.isArray(piece?.machineLinks) ? piece.machineLinks.length : piece?.machineLinksCount ?? 0 @@ -195,15 +195,15 @@ const resolveDeleteBlockingReasons = (piece: Record) => { : piece?.customFieldValuesCount ?? 0 if (machineLinks > 0) { - reasons.push(`${machineLinks} liaison${machineLinks > 1 ? 's' : ''} machine`) + blockingReasons.push(`${machineLinks} liaison${machineLinks > 1 ? 's' : ''} machine`) } if (documents > 0) { - reasons.push(`${documents} document${documents > 1 ? 's' : ''}`) + blockingReasons.push(`${documents} document${documents > 1 ? 's' : ''}`) } - if (customFields > 0) { - reasons.push(`${customFields} valeur${customFields > 1 ? 's' : ''} de champ personnalisé`) + return { + blockingReasons, + hasCustomFields: customFields > 0, } - return reasons } const resolveComparableName = (piece: Record) => { @@ -261,7 +261,7 @@ const visiblePieces = computed(() => { }) const handleDeletePiece = async (piece: Record) => { - const blockingReasons = resolveDeleteBlockingReasons(piece) + const { blockingReasons, hasCustomFields } = resolveDeleteGuard(piece) if (blockingReasons.length) { showError( @@ -273,7 +273,17 @@ const handleDeletePiece = async (piece: Record) => { } const pieceName = piece?.name || 'cette pièce' - const confirmed = window.confirm(`Voulez-vous vraiment supprimer ${pieceName} ?`) + const confirmLines = [ + `Voulez-vous vraiment supprimer ${pieceName} ?`, + ] + + if (hasCustomFields) { + confirmLines.push( + 'Les valeurs de champs personnalisés associées seront également supprimées.' + ) + } + + const confirmed = window.confirm(confirmLines.join('\n\n')) if (!confirmed) { return }