interface interactive

This commit is contained in:
nBiqoz
2025-09-07 12:30:23 +02:00
parent 74e56c956c
commit ef0819ae90
27 changed files with 1827 additions and 515 deletions

View File

@@ -11,14 +11,9 @@ import { SupportedDataTypes } from "./SupportedDataTypes";
import { AnonymizationInterface } from "./AnonymizationInterface";
import { highlightEntities } from "../utils/highlightEntities";
import { useState } from "react";
import { EntityMapping } from "../config/entityLabels"; // Importer l'interface unifiée
interface EntityMapping {
originalValue: string;
anonymizedValue: string;
entityType: string;
startIndex: number;
endIndex: number;
}
// Supprimer l'interface locale EntityMapping (lignes 15-21)
interface FileUploadComponentProps {
uploadedFile: File | null;
@@ -26,7 +21,6 @@ interface FileUploadComponentProps {
sourceText: string;
setSourceText: (text: string) => void;
setUploadedFile: (file: File | null) => void;
setFileContent: (content: string) => void;
onAnonymize?: () => void;
isProcessing?: boolean;
canAnonymize?: boolean;
@@ -37,7 +31,7 @@ interface FileUploadComponentProps {
downloadText?: () => void;
isExampleLoaded?: boolean;
setIsExampleLoaded?: (loaded: boolean) => void;
entityMappings?: EntityMapping[]; // Ajouter cette prop
entityMappings?: EntityMapping[];
}
export const FileUploadComponent = ({
@@ -46,7 +40,6 @@ export const FileUploadComponent = ({
sourceText,
setSourceText,
setUploadedFile,
setFileContent,
onAnonymize,
isProcessing = false,
canAnonymize = false,
@@ -56,7 +49,7 @@ export const FileUploadComponent = ({
copyToClipboard,
downloadText,
setIsExampleLoaded,
entityMappings, // Ajouter cette prop ici
entityMappings,
}: FileUploadComponentProps) => {
const [isDragOver, setIsDragOver] = useState(false);
@@ -224,8 +217,8 @@ export const FileUploadComponent = ({
<div className="bg-gray-50 border border-gray-200 rounded-lg p-3 sm:p-4 max-h-72 overflow-y-auto overflow-x-hidden">
<div className="text-xs sm:text-sm text-gray-700 whitespace-pre-wrap break-words overflow-wrap-anywhere leading-relaxed">
{highlightEntities(
outputText || "Aucun contenu à afficher",
entityMappings
sourceText || "Aucun contenu à afficher", // Utiliser sourceText au lieu de outputText
entityMappings || [] // Fournir un tableau vide par défaut
)}
</div>
</div>
@@ -293,8 +286,8 @@ export const FileUploadComponent = ({
{/* Boutons d'action - Responsive mobile */}
{canAnonymize && !isLoadingFile && (
<div className="flex flex-col sm:flex-row items-center justify-center space-y-4 sm:space-y-0 sm:space-x-4">
{/* Bouton Anonymiser en premier */}
{onAnonymize && (
{/* Bouton Anonymiser - seulement si pas encore anonymisé */}
{onAnonymize && !outputText && (
<button
onClick={onAnonymize}
disabled={isProcessing}
@@ -326,7 +319,7 @@ export const FileUploadComponent = ({
</button>
)}
{/* Bouton Recommencer */}
{/* Bouton Recommencer - toujours visible */}
{onRestart && (
<button
onClick={onRestart}
@@ -399,7 +392,6 @@ export const FileUploadComponent = ({
<span>Commencez à taper du texte, ou&nbsp;</span>
<SampleTextComponent
setSourceText={setSourceText}
setFileContent={setFileContent}
setUploadedFile={setUploadedFile}
setIsExampleLoaded={setIsExampleLoaded}
variant="link"