diff --git a/TASK.md b/TASK.md index 482bb00..a9bc2cb 100644 --- a/TASK.md +++ b/TASK.md @@ -75,5 +75,14 @@ --- +## [Style] Page conversion CBR → CBZ — Simplification UI + notifications toast + +**Objectif :** Revoir le style de la page de conversion CBR → CBZ pour le simplifier, et remplacer le message statique "Conversion réussie" par les notifications toast de l'application. + +- [ ] Auditer le composant/template actuel de la page de conversion +- [ ] Simplifier la mise en page (réduire la complexité visuelle, harmoniser avec le reste de l'UI) +- [ ] Supprimer l'affichage inline "Conversion réussie" +- [ ] Brancher les notifications toast existantes pour signaler le succès (et l'échec) de la conversion + --- diff --git a/assets/vue/app/domain/conversion/application/store/conversionStore.js b/assets/vue/app/domain/conversion/application/store/conversionStore.js index 3175a13..5772540 100644 --- a/assets/vue/app/domain/conversion/application/store/conversionStore.js +++ b/assets/vue/app/domain/conversion/application/store/conversionStore.js @@ -20,7 +20,6 @@ export const useConversionStore = defineStore('conversion', { // État de l'interface isDragOver: false, - showSuccessMessage: false, }), getters: { @@ -86,7 +85,6 @@ export const useConversionStore = defineStore('conversion', { this.clearError(); this.conversionSuccess = false; this.convertedFile = null; - this.showSuccessMessage = false; // Stockage du fichier this.currentFile = file; @@ -125,7 +123,6 @@ export const useConversionStore = defineStore('conversion', { // Stockage du fichier converti this.convertedFile = convertedFileBlob; this.conversionSuccess = true; - this.showSuccessMessage = true; // Ajout à l'historique this.addToHistory({ @@ -171,7 +168,6 @@ export const useConversionStore = defineStore('conversion', { this.currentFile = null; this.convertedFile = null; this.conversionSuccess = false; - this.showSuccessMessage = false; this.conversionProgress = 0; this.clearError(); }, @@ -183,7 +179,6 @@ export const useConversionStore = defineStore('conversion', { setError(message) { this.conversionError = message; this.conversionSuccess = false; - this.showSuccessMessage = false; }, /** @@ -193,13 +188,6 @@ export const useConversionStore = defineStore('conversion', { this.conversionError = null; }, - /** - * Cache le message de succès - */ - hideSuccessMessage() { - this.showSuccessMessage = false; - }, - /** * Gère l'état du drag and drop * @param {boolean} isDragOver - Indique si un fichier est survolé diff --git a/assets/vue/app/domain/conversion/presentation/pages/ConversionPage.vue b/assets/vue/app/domain/conversion/presentation/pages/ConversionPage.vue index 35574a0..362692b 100644 --- a/assets/vue/app/domain/conversion/presentation/pages/ConversionPage.vue +++ b/assets/vue/app/domain/conversion/presentation/pages/ConversionPage.vue @@ -1,33 +1,8 @@ - - +const handleFileClear = () => { + conversionStore.resetConversion(); +}; + +const handleConvert = async () => { + if (!conversionStore.currentFile) return; + const success = await conversionStore.convertCurrentFile(); + if (success) { + showSuccess('Conversion réussie !'); + } else { + showError(conversionStore.conversionError ?? 'Échec de la conversion'); + } +}; + +const handleDownload = () => conversionStore.downloadConvertedFile(); +const handleReset = () => conversionStore.resetConversion(); + +const formatFileSize = (bytes) => { + if (bytes === 0) return '0 octets'; + const k = 1024; + const sizes = ['octets', 'Ko', 'Mo', 'Go']; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i]}`; +}; + +const formatDate = (isoString) => + new Intl.DateTimeFormat('fr-FR', { + day: 'numeric', + month: 'short', + hour: '2-digit', + minute: '2-digit', + }).format(new Date(isoString)); + +const calculateSaving = (originalSize, convertedSize) => { + if (!originalSize || !convertedSize) return ''; + const saving = ((originalSize - convertedSize) / originalSize) * 100; + if (saving > 0) return `-${saving.toFixed(1)}%`; + if (saving < 0) return `+${Math.abs(saving).toFixed(1)}%`; + return '0%'; +}; + +onMounted(() => conversionStore.resetConversion()); + diff --git a/assets/vue/app/domain/manga/presentation/pages/AddManga.vue b/assets/vue/app/domain/manga/presentation/pages/AddManga.vue index 961ab63..616e7f3 100644 --- a/assets/vue/app/domain/manga/presentation/pages/AddManga.vue +++ b/assets/vue/app/domain/manga/presentation/pages/AddManga.vue @@ -1,4 +1,5 @@