|
|
|
@ -261,6 +261,20 @@ |
|
|
|
transition: background-color 0.3s ease; |
|
|
|
} |
|
|
|
|
|
|
|
.game-title-right { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
gap: 15px; |
|
|
|
} |
|
|
|
|
|
|
|
.game-catch-total { |
|
|
|
background-color: #4CAF50; |
|
|
|
color: white; |
|
|
|
padding: 4px 8px; |
|
|
|
border-radius: 12px; |
|
|
|
font-size: 0.9em; |
|
|
|
} |
|
|
|
|
|
|
|
.game-title:hover { |
|
|
|
background-color: #e9e9e9; |
|
|
|
} |
|
|
|
@ -281,15 +295,50 @@ |
|
|
|
|
|
|
|
.pokemon-entry { |
|
|
|
margin: 15px 0; |
|
|
|
padding: 15px; |
|
|
|
background-color: #f9f9f9; |
|
|
|
border-radius: 5px; |
|
|
|
border: 1px solid #eee; |
|
|
|
border-radius: 5px; |
|
|
|
overflow: hidden; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-entry h3 { |
|
|
|
margin-top: 0; |
|
|
|
color: #333; |
|
|
|
.pokemon-header { |
|
|
|
background-color: #f9f9f9; |
|
|
|
padding: 10px 15px; |
|
|
|
cursor: pointer; |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
gap: 15px; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-header:hover { |
|
|
|
background-color: #f0f0f0; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-header-content { |
|
|
|
flex-grow: 1; |
|
|
|
display: flex; |
|
|
|
justify-content: space-between; |
|
|
|
align-items: center; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-details { |
|
|
|
display: none; |
|
|
|
padding: 15px; |
|
|
|
background-color: white; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-details.show { |
|
|
|
display: block; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-thumbnail { |
|
|
|
width: 48px; |
|
|
|
height: 48px; |
|
|
|
object-fit: contain; |
|
|
|
} |
|
|
|
|
|
|
|
.catch-count { |
|
|
|
color: #666; |
|
|
|
font-size: 0.9em; |
|
|
|
} |
|
|
|
|
|
|
|
.evolution-list, .breeding-list { |
|
|
|
@ -312,6 +361,51 @@ |
|
|
|
border-radius: 3px; |
|
|
|
font-size: 0.9em; |
|
|
|
} |
|
|
|
|
|
|
|
.pokemon-targets-grid { |
|
|
|
display: grid; |
|
|
|
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); |
|
|
|
gap: 15px; |
|
|
|
padding: 15px; |
|
|
|
} |
|
|
|
|
|
|
|
.target-card { |
|
|
|
background-color: #f9f9f9; |
|
|
|
border: 1px solid #eee; |
|
|
|
border-radius: 8px; |
|
|
|
padding: 10px; |
|
|
|
text-align: center; |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
align-items: center; |
|
|
|
gap: 8px; |
|
|
|
} |
|
|
|
|
|
|
|
.target-name { |
|
|
|
font-weight: bold; |
|
|
|
font-size: 0.9em; |
|
|
|
line-height: 1.2; |
|
|
|
margin: 0; |
|
|
|
} |
|
|
|
|
|
|
|
.target-image { |
|
|
|
width: 64px; |
|
|
|
height: 64px; |
|
|
|
object-fit: contain; |
|
|
|
} |
|
|
|
|
|
|
|
.target-method { |
|
|
|
font-size: 0.8em; |
|
|
|
color: #666; |
|
|
|
background-color: #e9e9e9; |
|
|
|
padding: 3px 8px; |
|
|
|
border-radius: 12px; |
|
|
|
} |
|
|
|
|
|
|
|
.target-count { |
|
|
|
font-size: 0.8em; |
|
|
|
color: #4CAF50; |
|
|
|
} |
|
|
|
</style> |
|
|
|
</head> |
|
|
|
<body> |
|
|
|
@ -368,37 +462,65 @@ |
|
|
|
<div class="game-section"> |
|
|
|
<div class="game-title" onclick="toggleGameContent(this)"> |
|
|
|
{{ game.game_name }} |
|
|
|
<span class="toggle-icon">▼</span> |
|
|
|
<div class="game-title-right"> |
|
|
|
<span class="game-catch-total"> |
|
|
|
Catch: {{ game.pokemon|sum(attribute='catch_count') }} |
|
|
|
</span> |
|
|
|
<span class="toggle-icon">▼</span> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="game-content"> |
|
|
|
{% for pokemon in game.pokemon %} |
|
|
|
<div class="pokemon-entry"> |
|
|
|
<h3>{{ pokemon.name }}{% if pokemon.form_name %} ({{ pokemon.form_name }}){% endif %}</h3> |
|
|
|
<p>Catch Count: {{ pokemon.catch_count }}</p> |
|
|
|
|
|
|
|
{% if pokemon.evolve_to %} |
|
|
|
<div class="evolution-list"> |
|
|
|
<h4>Evolves To:</h4> |
|
|
|
{% for evolution in pokemon.evolve_to %} |
|
|
|
<div class="evolution-item"> |
|
|
|
{{ evolution.name }}{% if evolution.form_name %} ({{ evolution.form_name }}){% endif %} |
|
|
|
- Count: {{ evolution.count }} |
|
|
|
<div class="pokemon-header" onclick="togglePokemonDetails(this)"> |
|
|
|
<img src="{{ url_for('static', filename='images/pokemon/' + pokemon.pfic + '.png') }}" |
|
|
|
alt="{{ pokemon.name }}" |
|
|
|
class="pokemon-thumbnail"> |
|
|
|
<div class="pokemon-header-content"> |
|
|
|
<h3 style="margin: 0;"> |
|
|
|
{{ pokemon.name }}{% if pokemon.form_name %} ({{ pokemon.form_name }}){% endif %} |
|
|
|
</h3> |
|
|
|
<span class="catch-count">Catch: {{ pokemon.catch_count }}</span> |
|
|
|
<span class="toggle-icon">▼</span> |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
</div> |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
{% if pokemon.breed_for %} |
|
|
|
<div class="breeding-list"> |
|
|
|
<h4>Breed For:</h4> |
|
|
|
{% for breeding in pokemon.breed_for %} |
|
|
|
<div class="breeding-item"> |
|
|
|
{{ breeding.name }}{% if breeding.form_name %} ({{ breeding.form_name }}){% endif %} |
|
|
|
- Count: {{ breeding.count }} |
|
|
|
<div class="pokemon-details"> |
|
|
|
{% if pokemon.evolve_to or pokemon.breed_for %} |
|
|
|
<div class="pokemon-targets-grid"> |
|
|
|
{% if pokemon.evolve_to %} |
|
|
|
{% for evolution in pokemon.evolve_to %} |
|
|
|
<div class="target-card"> |
|
|
|
<div class="target-name"> |
|
|
|
{{ evolution.name }} |
|
|
|
{% if evolution.form_name %}({{ evolution.form_name }}){% endif %} |
|
|
|
</div> |
|
|
|
<img src="{{ url_for('static', filename='images/pokemon/' + evolution.pfic + '.png') }}" |
|
|
|
alt="{{ evolution.name }}" |
|
|
|
class="target-image"> |
|
|
|
<span class="target-method">{{ evolution.method }}</span> |
|
|
|
<span class="target-count">Need: {{ evolution.count }}</span> |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
{% endif %} |
|
|
|
|
|
|
|
{% if pokemon.breed_for %} |
|
|
|
{% for breeding in pokemon.breed_for %} |
|
|
|
<div class="target-card"> |
|
|
|
<div class="target-name"> |
|
|
|
{{ breeding.name }} |
|
|
|
{% if breeding.form_name %}({{ breeding.form_name }}){% endif %} |
|
|
|
</div> |
|
|
|
<img src="{{ url_for('static', filename='images/pokemon/' + breeding.pfic + '.png') }}" |
|
|
|
alt="{{ breeding.name }}" |
|
|
|
class="target-image"> |
|
|
|
<span class="target-method">Breed</span> |
|
|
|
<span class="target-count">Need: {{ breeding.count }}</span> |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
{% endif %} |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
{% endif %} |
|
|
|
</div> |
|
|
|
{% endif %} |
|
|
|
</div> |
|
|
|
{% endfor %} |
|
|
|
</div> |
|
|
|
@ -589,6 +711,19 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function togglePokemonDetails(headerElement) { |
|
|
|
const detailsElement = headerElement.nextElementSibling; |
|
|
|
const icon = headerElement.querySelector('.toggle-icon'); |
|
|
|
|
|
|
|
if (detailsElement.classList.contains('show')) { |
|
|
|
detailsElement.classList.remove('show'); |
|
|
|
icon.textContent = '▼'; |
|
|
|
} else { |
|
|
|
detailsElement.classList.add('show'); |
|
|
|
icon.textContent = '▲'; |
|
|
|
} |
|
|
|
} |
|
|
|
</script> |
|
|
|
</body> |
|
|
|
</html> |
|
|
|
|