Refactor: DeckCreator komponensek típus kezelésének egységesítése

- Frissítve a DeckHeader típusai a backend formátumra (QUESTION, LUCK, JOKER)
- Frissítve a CardsList és Editor komponensek típus kezelése
- Egyszerűsítve a kártya létrehozás és mentés logika
- Az új kártya gomb mindig a pakli típusának megfelelő kártyát hozza létre
This commit is contained in:
GitG0r0
2025-10-22 21:23:16 +02:00
parent 00b13de70c
commit ec001fb39f
6 changed files with 76 additions and 138 deletions
@@ -22,7 +22,7 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
}
switch (type) {
case 'task':
case 'QUESTION':
return {
...baseData,
subType: 'quiz',
@@ -31,7 +31,7 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
correctAnswer: 0,
explanation: ''
}
case 'joker':
case 'JOKER':
return {
...baseData,
title: '',
@@ -40,7 +40,7 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
actionType: 'skip',
usage: 'once'
}
case 'luck':
case 'LUCK':
return {
...baseData,
event: '',
@@ -75,7 +75,7 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
}
const validateCard = (data) => {
if (data.type === 'task') {
if (data.type === 'QUESTION') {
if (!data.question && !data.statement) {
alert("❌ Kérdés vagy állítás megadása kötelező!")
return false
@@ -84,12 +84,12 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
alert("❌ Minden válaszlehetőséget ki kell tölteni!")
return false
}
} else if (data.type === 'joker') {
} else if (data.type === 'JOKER') {
if (!data.text || !data.text.trim()) {
alert("❌ Joker kártya szövege nem lehet üres!")
return false
}
} else if (data.type === 'luck') {
} else if (data.type === 'LUCK') {
if (!data.text || !data.text.trim()) {
alert("❌ Szerencse kártya szövege nem lehet üres!")
return false
@@ -128,19 +128,19 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
<div className="flex items-center justify-between">
<div className="flex items-center gap-3">
<div className="text-2xl">
{cardData.type === 'task' && '📋'}
{cardData.type === 'joker' && '🃏'}
{cardData.type === 'luck' && '🎲'}
{cardData.type === 'QUESTION' && '📋'}
{cardData.type === 'JOKER' && '🃏'}
{cardData.type === 'LUCK' && '🎲'}
</div>
<div>
<h2 className="text-xl font-bold text-[color:var(--color-text)]">
{isCreating ? 'Új' : 'Szerkesztés'} {' '}
{cardData.type === 'task' && 'Feladat kártya'}
{cardData.type === 'joker' && 'Joker kártya'}
{cardData.type === 'luck' && 'Szerencse kártya'}
{cardData.type === 'QUESTION' && 'Feladat kártya'}
{cardData.type === 'JOKER' && 'Joker kártya'}
{cardData.type === 'LUCK' && 'Szerencse kártya'}
</h2>
<div className="text-[color:var(--color-text-muted)] text-sm">
{cardData.type === 'task' && cardData.subType && (
{cardData.type === 'QUESTION' && cardData.subType && (
<>
{cardData.subType === 'quiz' && 'Quiz (A/B/C/D)'}
{cardData.subType === 'truefalse' && 'Igaz/Hamis'}
@@ -196,21 +196,21 @@ export default function CardEditor({ card, isCreating, cardType, onSave, onCance
) : (
/* Edit Mode */
<div className="h-full overflow-y-auto p-6">
{cardData.type === 'task' && (
{cardData.type === 'QUESTION' && (
<TaskCardEditor
card={cardData}
onChange={updateCardData}
/>
)}
{cardData.type === 'joker' && (
{cardData.type === 'JOKER' && (
<JokerCardEditor
card={cardData}
onChange={updateCardData}
/>
)}
{cardData.type === 'luck' && (
{cardData.type === 'LUCK' && (
<LuckCardEditor
card={cardData}
onChange={updateCardData}