diff --git a/dental-server/dental-client/src/components/TransformModal.jsx b/dental-server/dental-client/src/components/TransformModal.jsx index af83cd9..4002b1c 100644 --- a/dental-server/dental-client/src/components/TransformModal.jsx +++ b/dental-server/dental-client/src/components/TransformModal.jsx @@ -14,6 +14,8 @@ function formatDate(dateString) { export default function TransformModal({ isOpen, onClose, image, onSaved }) { const { showToast } = useToast(); const [activeView, setActiveView] = useState('transform'); // 'transform' | 'gto' + const [step, setStep] = useState('choose'); // 'choose' (4 posições) | 'finetune' + const [baseRotation, setBaseRotation] = useState(0); // 0 | 90 | 180 | 270 const [showInfo, setShowInfo] = useState(false); const [fineTuneAngle, setFineTuneAngle] = useState(0); const [remark, setRemark] = useState(''); @@ -29,6 +31,8 @@ export default function TransformModal({ isOpen, onClose, image, onSaved }) { useEffect(() => { if (!image) return; setFineTuneAngle(0); + setBaseRotation(0); + setStep('choose'); setRemark(''); setShowInfo(false); setActiveView('transform'); @@ -70,15 +74,17 @@ export default function TransformModal({ isOpen, onClose, image, onSaved }) { const resetAngle = () => setFineTuneAngle(0); + const totalRotation = ((baseRotation + fineTuneAngle) % 360 + 360) % 360; + const saveTransform = async () => { - if (fineTuneAngle === 0) { + if (totalRotation === 0) { showToast('Nenhuma edição aplicada.', 'error'); return; } setSaving(true); try { await api.post(`/images/${image.id}/transform`, { - rotation: fineTuneAngle, + rotation: totalRotation, flipH: false, flipV: false, remark @@ -180,8 +186,44 @@ export default function TransformModal({ isOpen, onClose, image, onSaved }) { )} - {/* View: Transformação */} - {activeView === 'transform' && ( + {/* View: Transformação — PASSO 1: escolher entre 4 posições */} + {activeView === 'transform' && step === 'choose' && ( +
+ Escolha a melhor orientação. Depois você faz o ajuste fino. +
+