mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-12-16 23:50:12 +01:00
111 lines
5.6 KiB
HTML
111 lines
5.6 KiB
HTML
{# Synergy Deck Preview - Shows the optimized "best-of" deck from batch builds #}
|
|
|
|
<div style="padding: 2rem; background: var(--panel); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 4px 12px rgba(0,0,0,.3);">
|
|
<h2 style="margin-bottom: 1rem; color: var(--primary);">✨ Synergy Deck Preview</h2>
|
|
|
|
<div class="muted" style="margin-bottom: 1.5rem; font-size: 0.9rem;">
|
|
This deck is built from the most synergistic cards across all {{ total_builds }} builds, scored by frequency, EDHREC rank, and theme alignment.
|
|
</div>
|
|
|
|
{# Summary Stats #}
|
|
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; margin-bottom: 2rem;">
|
|
<div style="padding: 1rem; text-align: center; background: var(--bg); border: 1px solid var(--border); border-radius: 6px;">
|
|
<div style="font-size: 1.8rem; font-weight: bold; color: var(--primary);">{{ synergy_deck.total_cards }}</div>
|
|
<div class="muted" style="font-size: 0.85rem;">Total Cards</div>
|
|
</div>
|
|
<div style="padding: 1rem; text-align: center; background: var(--bg); border: 1px solid var(--border); border-radius: 6px;">
|
|
<div style="font-size: 1.8rem; font-weight: bold; color: #10b981;">{{ (synergy_deck.avg_frequency * 100) | round(1) }}%</div>
|
|
<div class="muted" style="font-size: 0.85rem;">Avg Frequency</div>
|
|
</div>
|
|
<div style="padding: 1rem; text-align: center; background: var(--bg); border: 1px solid var(--border); border-radius: 6px;">
|
|
<div style="font-size: 1.8rem; font-weight: bold; color: #3b82f6;">{{ synergy_deck.avg_score }}</div>
|
|
<div class="muted" style="font-size: 0.85rem;">Avg Synergy Score</div>
|
|
</div>
|
|
<div style="padding: 1rem; text-align: center; background: var(--bg); border: 1px solid var(--border); border-radius: 6px;">
|
|
<div style="font-size: 1.8rem; font-weight: bold; color: #8b5cf6;">{{ synergy_deck.high_frequency_count }}</div>
|
|
<div class="muted" style="font-size: 0.85rem;">High-Frequency Cards (80%+)</div>
|
|
</div>
|
|
</div>
|
|
|
|
{# Cards by Category #}
|
|
<div style="margin-bottom: 2rem;">
|
|
<h3 style="margin-bottom: 1rem;">Cards by Type</h3>
|
|
<div style="display: grid; gap: 1.5rem;">
|
|
{% for category, cards in synergy_deck.cards_by_category.items() %}
|
|
<details>
|
|
<summary style="cursor: pointer; font-size: 1rem; font-weight: 500; margin-bottom: 0.75rem; color: var(--primary);">
|
|
{{ category }} ({{ cards | sum(attribute='count') }})
|
|
</summary>
|
|
<div style="padding: 1rem; background: var(--bg); border: 1px solid var(--border); border-radius: 6px;">
|
|
<table style="width: 100%; border-collapse: collapse; font-size: 0.9rem;">
|
|
<thead>
|
|
<tr style="border-bottom: 2px solid var(--border);">
|
|
<th style="text-align: left; padding: 0.5rem;">Card Name</th>
|
|
<th style="text-align: center; padding: 0.5rem;">Frequency</th>
|
|
<th style="text-align: center; padding: 0.5rem;">Synergy Score</th>
|
|
<th style="text-align: center; padding: 0.5rem;">Appears In</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for card in cards %}
|
|
<tr style="border-bottom: 1px solid var(--border);">
|
|
<td style="padding: 0.5rem;">
|
|
<div>
|
|
{% if card.count and card.count > 1 %}
|
|
<span style="font-weight: 600; color: var(--primary);">{{ card.count }}x</span>
|
|
{% endif %}
|
|
<span data-card-name="{{ card.name }}" style="cursor: help;">{{ card.name }}</span>
|
|
</div>
|
|
{% if card.type_line %}
|
|
<div class="muted" style="font-size: 0.8rem; margin-top: 0.15rem;">{{ card.type_line }}</div>
|
|
{% endif %}
|
|
{% if card.role %}
|
|
<div class="muted" style="font-size: 0.75rem; margin-top: 0.1rem; font-style: italic;">{{ card.role }}</div>
|
|
{% endif %}
|
|
</td>
|
|
<td style="text-align: center; padding: 0.5rem;">
|
|
<span style="
|
|
font-weight: 500;
|
|
color: {% if card.frequency >= 0.8 %}#10b981{% elif card.frequency >= 0.5 %}#3b82f6{% else %}#6b7280{% endif %};
|
|
">
|
|
{{ (card.frequency * 100) | round(0) | int }}%
|
|
</span>
|
|
</td>
|
|
<td style="text-align: center; padding: 0.5rem;">
|
|
<span style="
|
|
font-weight: 500;
|
|
color: {% if card.synergy_score >= 70 %}#8b5cf6{% elif card.synergy_score >= 50 %}#3b82f6{% else %}#6b7280{% endif %};
|
|
">
|
|
{{ card.synergy_score }}
|
|
</span>
|
|
</td>
|
|
<td style="text-align: center; padding: 0.5rem; color: #6b7280;">
|
|
{{ card.appearance_count }}/{{ total_builds }}
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</details>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
{# Actions #}
|
|
<div style="display: flex; gap: 1rem; justify-content: center;">
|
|
<button class="btn" onclick="document.getElementById('synergy-preview').innerHTML = ''">
|
|
Close Preview
|
|
</button>
|
|
<button class="btn-continue" onclick="exportSynergyDeck('{{ batch_id }}')" id="export-synergy-btn">
|
|
Export Synergy Deck
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
// Attach card hover to new elements
|
|
if (window.attachCardHover) {
|
|
window.attachCardHover();
|
|
}
|
|
</script>
|