This commit is contained in:
cay 2026-04-04 11:07:20 +01:00
parent d618b9d04f
commit b9fd729f2c
2 changed files with 39 additions and 17 deletions

View File

@ -249,16 +249,39 @@ function renderShell() {
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
} }
.kd-stat-atk { .kd-stat-atk {
position: absolute; bottom: 22px; left: 4px; position: absolute;
background: rgba(180,40,20,0.9); border: 1px solid #ff6040; right: 4px;
top: 50%;
transform: translateY(-50%);
background: rgba(180,40,20,0.88);
border: 1px solid #ff6040;
border-radius: 3px; color: #fff; font-family: "Cinzel", serif; border-radius: 3px; color: #fff; font-family: "Cinzel", serif;
font-size: 10px; font-weight: bold; padding: 1px 4px; font-size: 10px; font-weight: bold; padding: 2px 5px;
z-index: 5;
} }
.kd-stat-def { .kd-stat-def {
position: absolute; bottom: 22px; right: 4px; position: absolute;
background: rgba(20,80,180,0.9); border: 1px solid #4090ff; left: 4px;
top: 50%;
transform: translateY(-50%);
background: rgba(20,80,180,0.88);
border: 1px solid #4090ff;
border-radius: 3px; color: #fff; font-family: "Cinzel", serif; border-radius: 3px; color: #fff; font-family: "Cinzel", serif;
font-size: 10px; font-weight: bold; padding: 1px 4px; font-size: 10px; font-weight: bold; padding: 2px 5px;
z-index: 5;
}
.kd-stat-cd {
position: absolute;
bottom: 3px;
right: 3px;
width: 22px; height: 22px;
border-radius: 50%;
background: rgba(0,0,0,0.75);
border: 1px solid #f0d060;
display: flex; align-items: center; justify-content: center;
font-family: "Cinzel", serif; font-size: 9px; font-weight: bold;
color: #f0d9a6;
z-index: 5;
} }
/* ── Karten-Footer: Anzahlen ────────────── */ /* ── Karten-Footer: Anzahlen ────────────── */
@ -726,8 +749,9 @@ function renderCollectionGrid(grid, cards) {
title="${c.name}"> title="${c.name}">
<img src="/images/cards/${c.image}" alt="${c.name}" <img src="/images/cards/${c.image}" alt="${c.name}"
onerror="this.src='/images/avatar_placeholder.svg'"> onerror="this.src='/images/avatar_placeholder.svg'">
${c.attack != null ? `<span class="kd-stat-atk">${c.attack}</span>` : ""} ${c.attack != null ? `<span class="kd-stat-atk">${c.attack}</span>` : ""}
${c.defense != null ? `<span class="kd-stat-def">${c.defense}</span>` : ""} ${c.defends != null ? `<span class="kd-stat-def">${c.defends}</span>` : ""}
${c.cooldown != null ? `<span class="kd-stat-cd">${c.cooldown}</span>` : ""}
<div class="kd-card-footer"> <div class="kd-card-footer">
<span class="kd-count-owned" title="Besitzt du">${c.amount}×</span> <span class="kd-count-owned" title="Besitzt du">${c.amount}×</span>
<span class="kd-count-deck" title="Im Deck">🃏 ${inDeck}</span> <span class="kd-count-deck" title="Im Deck">🃏 ${inDeck}</span>

View File

@ -40,10 +40,9 @@ router.get("/cards", async (req, res) => {
try { try {
const [cards] = await db.query( const [cards] = await db.query(
`SELECT c.*, cg.name AS group_name, cg.color AS group_color, `SELECT c.*, cg.name AS group_name, cg.color AS group_color,
cl.attack, cl.defense, cl.cooldown c.attack, c.defends, c.cooldown
FROM cards c FROM cards c
LEFT JOIN card_groups cg ON cg.id = c.group_id LEFT JOIN card_groups cg ON cg.id = c.group_id
LEFT JOIN card_levels cl ON cl.card_id = c.id AND cl.level = 1
WHERE c.group_id = ? WHERE c.group_id = ?
LIMIT ? OFFSET ?`, LIMIT ? OFFSET ?`,
[group_id, parseInt(limit), parseInt(offset)] [group_id, parseInt(limit), parseInt(offset)]
@ -79,13 +78,12 @@ router.get("/user-cards", async (req, res) => {
c.rarity, c.rarity,
cg.name AS group_name, cg.name AS group_name,
cg.color AS group_color, cg.color AS group_color,
cl.attack, c.attack,
cl.defense, c.defends,
cl.cooldown c.cooldown
FROM user_cards uc FROM user_cards uc
JOIN cards c ON c.id = uc.card_id JOIN cards c ON c.id = uc.card_id
JOIN card_groups cg ON cg.id = c.group_id JOIN card_groups cg ON cg.id = c.group_id
LEFT JOIN card_levels cl ON cl.card_id = uc.card_id AND cl.level = 1
WHERE uc.user_id = ? AND c.group_id = ? WHERE uc.user_id = ? AND c.group_id = ?
ORDER BY c.id ORDER BY c.id
LIMIT ? OFFSET ?`, LIMIT ? OFFSET ?`,
@ -189,11 +187,11 @@ router.get("/decks/:id/cards", async (req, res) => {
c.name, c.name,
c.image, c.image,
c.rarity, c.rarity,
cl.attack, c.attack,
cl.defense c.defends,
c.cooldown
FROM deck_cards dc FROM deck_cards dc
JOIN cards c ON c.id = dc.card_id JOIN cards c ON c.id = dc.card_id
LEFT JOIN card_levels cl ON cl.card_id = dc.card_id AND cl.level = 1
WHERE dc.deck_id = ? WHERE dc.deck_id = ?
ORDER BY c.name`, ORDER BY c.name`,
[deckId] [deckId]