rss/templates/noticias.html

107 lines
4.1 KiB
HTML

{% extends "base.html" %}
{% block title %}Últimas Noticias RSS{% endblock %}
{% block content %}
<h1>Últimas Noticias Recopiladas</h1>
<a href="/feeds" class="top-link">⚙️ Gestionar feeds RSS</a>
<div class="card">
<form method="get" action="">
<div style="display: flex; flex-wrap: wrap; gap: 12px;">
<div style="flex:1;">
<label for="categoria_id">Categoría</label>
<select name="categoria_id" id="categoria_id">
<option value="">— Categoría —</option>
{% for cid, cnom in categorias %}
<option value="{{ cid }}" {% if cat_id == cid %}selected{% endif %}>{{ cnom }}</option>
{% endfor %}
</select>
</div>
<div style="flex:1;">
<label for="continente_id">Continente</label>
<select name="continente_id" id="continente_id" onchange="filtrarPaisesPorContinente()">
<option value="">— Continente —</option>
{% for coid, conom in continentes %}
<option value="{{ coid }}" {% if cont_id == coid %}selected{% endif %}>{{ conom }}</option>
{% endfor %}
</select>
</div>
<div style="flex:1;">
<label for="pais_id">País</label>
<select name="pais_id" id="pais_id">
<option value="">— País —</option>
{% for pid, pnom, contid in paises %}
<option value="{{ pid }}"
{% if pais_id == pid %}selected{% endif %}
{% if cont_id and contid != cont_id %}style="display:none"{% endif %}>
{{ pnom }}
</option>
{% endfor %}
</select>
</div>
<div style="align-self: flex-end;">
<button class="btn" type="submit">Filtrar</button>
</div>
</div>
<script type="application/json" id="paises-data">{{ paises|tojson }}</script>
</form>
</div>
<div class="card">
<h2 style="margin-top:0;">Noticias recientes</h2>
<ul class="noticias-list">
{% for fecha, titulo, resumen, url, imagen_url, cat_nom, pais_nom, cont_nom in noticias %}
<li class="noticia-item">
<div class="noticia-texto">
<div style="color:#64748b; font-size:0.97em;"><b>{{ fecha }}</b></div>
<a href="{{ url }}" target="_blank"><strong>{{ titulo }}</strong></a><br>
<span>{{ resumen|safe }}</span><br>
<small style="color:#64748b;">
Categoría: {{ cat_nom or 'N/A' }} |
País: {{ pais_nom or 'N/A' }} |
Continente: {{ cont_nom or 'N/A' }}
</small>
</div>
{% if imagen_url %}
<div class="noticia-imagen">
<img src="{{ imagen_url }}" alt="img">
</div>
{% endif %}
</li>
{% else %}
<li>No hay noticias que mostrar con estos filtros.</li>
{% endfor %}
</ul>
</div>
<a href="/feeds" class="top-link">← Volver a gestión de feeds</a>
<script>
// Filtra países según continente seleccionado, robusto con tipos
function filtrarPaisesPorContinente() {
const continenteId = document.getElementById('continente_id').value;
const paises = JSON.parse(document.getElementById('paises-data').textContent);
const selectPais = document.getElementById('pais_id');
selectPais.innerHTML = '';
// Opción N/A siempre presente
const optionNA = document.createElement('option');
optionNA.value = '';
optionNA.textContent = '— País —';
selectPais.appendChild(optionNA);
paises.forEach(([id, nombre, contId]) => {
// Convertimos ambos a string y número para máxima compatibilidad
if (!continenteId || contId == continenteId || contId == Number(continenteId)) {
const opt = document.createElement('option');
opt.value = id;
opt.textContent = nombre;
selectPais.appendChild(opt);
}
});
}
// Al cargar la página, aplicar filtro si hay continente seleccionado
window.addEventListener('DOMContentLoaded', () => {
filtrarPaisesPorContinente();
});
</script>
{% endblock %}