-
Reggiseno
-
+ Seno Naturale?
+
+
- {error &&
Errore: {error}
}
+ {error &&
Errore: {error}
}
-
-
Annulla
-
+
+ Annulla
+
-
+
);
}
diff --git a/packages/frontend/src/components/CelebrityList.jsx b/packages/frontend/src/components/CelebrityList.jsx
index ab89056..de360ae 100644
--- a/packages/frontend/src/components/CelebrityList.jsx
+++ b/packages/frontend/src/components/CelebrityList.jsx
@@ -24,11 +24,10 @@ function CelebrityList() {
}
};
- const handleDelete = async (id) => {
- if (window.confirm('Sei sicuro di voler eliminare questa celebrità?')) {
+ const handleDelete = async (id, name) => {
+ if (window.confirm(`Sei sicuro di voler eliminare ${name}?`)) {
try {
await deleteCelebrity(id);
- // Rimuovi la celebrità dalla lista senza ricaricare i dati
setCelebrities(celebrities.filter((c) => c.id !== id));
} catch (err) {
alert(`Errore: ${err.message}`);
@@ -36,48 +35,57 @@ function CelebrityList() {
}
};
- if (loading) return
Caricamento in corso...
;
- if (error) return
Errore: {error}
;
-
return (
-
Catalogo Celebrità
-
- + Aggiungi Nuova Celebrità
-
-
-
-
- | Nome |
- Seno (cm) |
- Vita (cm) |
- Fianchi (cm) |
- Taglia Reggiseno |
- Naturali? |
- Azioni |
-
-
-
- {celebrities.map((celeb) => (
-
- | {celeb.name} |
- {celeb.bust_cm || 'N/A'} |
- {celeb.waist_cm || 'N/A'} |
- {celeb.hips_cm || 'N/A'} |
-
- {celeb.bra_band_size && celeb.bra_cup_size
- ? `${celeb.bra_band_size}${celeb.bra_cup_size} (${celeb.bra_size_system})`
- : 'N/A'}
- |
- {celeb.boobs_are_natural === null ? 'N/A' : celeb.boobs_are_natural ? 'Sì' : 'No'} |
-
- Modifica
-
- |
-
- ))}
-
-
+
+
Catalogo Celebrità
+
+ + Aggiungi
+
+
+
+ {loading &&
Caricamento in corso...
}
+ {error &&
Errore: {error}
}
+
+ {!loading && (
+
+
+
+
+ | Nome |
+ Seno (cm) |
+ Vita (cm) |
+ Fianchi (cm) |
+ Taglia Reggiseno |
+ Naturali? |
+ Azioni |
+
+
+
+ {celebrities.map((celeb) => (
+
+ | {celeb.name} |
+ {celeb.bust_cm || 'N/A'} |
+ {celeb.waist_cm || 'N/A'} |
+ {celeb.hips_cm || 'N/A'} |
+
+ {celeb.bra_band_size && celeb.bra_cup_size
+ ? `${celeb.bra_band_size}${celeb.bra_cup_size} (${celeb.bra_size_system})`
+ : 'N/A'}
+ |
+ {celeb.boobs_are_natural === null ? 'N/A' : celeb.boobs_are_natural ? 'Sì' : 'No'} |
+
+
+ Modifica
+
+
+ |
+
+ ))}
+
+
+
+ )}
);
}
diff --git a/packages/frontend/src/components/CelebrityProfile.css b/packages/frontend/src/components/CelebrityProfile.css
index d80c056..e69de29 100644
--- a/packages/frontend/src/components/CelebrityProfile.css
+++ b/packages/frontend/src/components/CelebrityProfile.css
@@ -1,138 +0,0 @@
-/* packages/frontend/src/components/CelebrityProfile.css */
-
-.profile-container {
- display: flex;
- gap: 2rem;
- width: 100%;
- max-width: 1200px;
- margin: 0 auto;
-}
-
-.profile-sidebar {
- flex: 0 0 300px; /* Larghezza fissa per la colonna sinistra */
-}
-
-.profile-main-image {
- width: 100%;
- height: auto;
- border-radius: 8px;
- margin-bottom: 1rem;
- border: 1px solid #444;
-}
-
-.thumbnails {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: 0.5rem;
-}
-
-.thumbnail img {
- width: 100%;
- border-radius: 4px;
- border: 1px solid #444;
-}
-
-.profile-content {
- flex-grow: 1;
-}
-
-.profile-header {
- border-bottom: 1px solid #555;
- padding-bottom: 1rem;
- margin-bottom: 1rem;
-}
-
-.profile-header h1 {
- margin: 0;
- font-size: 2.5rem;
- color: #f0e6d2;
-}
-
-.profile-header .editable-field {
- margin-top: 0.5rem;
-}
-
-.profile-section {
- background-color: #2c2c2c;
- border-radius: 8px;
- padding: 1.5rem;
- margin-bottom: 1.5rem;
- border: 1px solid #444;
-}
-
-.profile-section h2 {
- margin-top: 0;
- border-bottom: 1px solid #555;
- padding-bottom: 0.5rem;
- margin-bottom: 1rem;
- color: #d4b996;
-}
-
-.profile-grid {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
- gap: 1rem;
-}
-
-/* Stile per i campi editabili */
-.editable-field {
- padding: 8px;
- border-radius: 4px;
- transition: background-color 0.2s ease-in-out;
- cursor: pointer;
-}
-
-.editable-field:hover {
- background-color: #3a3a3a;
-}
-
-.field-label {
- display: block;
- font-size: 0.8rem;
- color: #aaa;
- margin-bottom: 4px;
- text-transform: uppercase;
-}
-
-.field-value {
- font-size: 1rem;
- font-weight: 500;
- color: #fff;
-}
-
-.editable-field input,
-.editable-field select,
-.editable-field textarea {
- width: 100%;
- padding: 6px;
- font-size: 1rem;
- border: 1px solid #646cff;
- border-radius: 4px;
- background-color: #1a1a1a;
- color: #fff;
- box-sizing: border-box; /* Assicura che padding non alteri la larghezza */
-}
-
-.profile-actions {
- margin-top: 2rem;
- display: flex;
- gap: 1rem;
- justify-content: flex-end;
-}
-
-.button-delete {
- background-color: #b22222;
- color: white;
-}
-.button-delete:hover {
- background-color: #dc143c;
- border-color: #dc143c;
-}
-
-.button-back {
- background-color: #444;
-}
-.button-back:hover {
- background-color: #555;
- border-color: #666;
-}
\ No newline at end of file
diff --git a/packages/frontend/src/components/CelebrityProfile.jsx b/packages/frontend/src/components/CelebrityProfile.jsx
index a6a96e6..30b7b1d 100644
--- a/packages/frontend/src/components/CelebrityProfile.jsx
+++ b/packages/frontend/src/components/CelebrityProfile.jsx
@@ -4,7 +4,6 @@ import React, { useState, useEffect } from 'react';
import { useParams, useNavigate, Link } from 'react-router-dom';
import { getCelebrityById, updateCelebrity, deleteCelebrity } from '../services/api';
import EditableField from './EditableField';
-import './CelebrityProfile.css'; // Importa il nuovo CSS
function CelebrityProfile() {
const { id } = useParams();
@@ -14,12 +13,10 @@ function CelebrityProfile() {
const [error, setError] = useState(null);
useEffect(() => {
- // Ignoriamo la modalità "new", questa pagina è solo per visualizzare/modificare
if (id) {
setLoading(true);
getCelebrityById(id)
.then((data) => {
- // Formatta la data per l'input type="date"
if (data.birth_date) {
data.birth_date = data.birth_date.split('T')[0];
}
@@ -28,23 +25,19 @@ function CelebrityProfile() {
.catch((err) => setError(err.message))
.finally(() => setLoading(false));
} else {
- navigate('/'); // Se non c'è id, torna alla home
+ navigate('/');
}
}, [id, navigate]);
const handleFieldSave = async (fieldName, newValue) => {
- // Converte stringa vuota a null per il backend
const valueToSend = newValue === '' ? null : newValue;
const payload = { [fieldName]: valueToSend };
try {
- const updatedCelebrity = await updateCelebrity(id, payload);
- // Aggiorna lo stato locale per un feedback immediato
+ await updateCelebrity(id, payload);
setCelebrity((prev) => ({ ...prev, [fieldName]: newValue }));
- console.log('Salvataggio riuscito:', updatedCelebrity);
} catch (err) {
- setError(`Errore durante il salvataggio del campo ${fieldName}: ${err.message}`);
- // Potresti voler ripristinare il valore precedente in caso di errore
+ setError(`Errore durante il salvataggio: ${err.message}`);
}
};
@@ -52,95 +45,80 @@ function CelebrityProfile() {
if (window.confirm(`Sei sicuro di voler eliminare ${celebrity.name}? L'azione è irreversibile.`)) {
try {
await deleteCelebrity(id);
- alert(`${celebrity.name} è stato eliminato con successo.`);
navigate('/');
} catch (err) {
setError(`Errore durante l'eliminazione: ${err.message}`);
}
}
};
-
- if (loading) return
Caricamento profilo...
;
- if (error) return
Errore: {error}
;
+
+ if (loading) return
Caricamento profilo...;
+ if (error) return
Errore: {error}
;
if (!celebrity) return
Nessuna celebrità trovata.
;
- // Opzioni per i campi