/sport/dokumenti UI podrzava i rows i dokumenti response key

This commit is contained in:
2026-05-05 18:13:51 +02:00
parent 80ed621683
commit 1bc30d7881
2 changed files with 8 additions and 6 deletions
+5 -1
View File
@@ -2394,7 +2394,7 @@ def savezi_financirani(sport: str = None):
# DOKUMENTI ENDPOINTS — godišnjaci, publikacije, sport-savez izdanja # DOKUMENTI ENDPOINTS — godišnjaci, publikacije, sport-savez izdanja
# ═══════════════════════════════════════════════════════════════════ # ═══════════════════════════════════════════════════════════════════
@app.get("/api/v2/dokumenti") @app.get("/api/v2/dokumenti")
def dokumenti_list(vrsta: str = None, sport: str = None, godina: int = None, q: str = None, limit: int = 100): def dokumenti_list(vrsta: str = None, sport: str = None, godina: int = None, q: str = None, organizacija: str = None, izvor: str = None, limit: int = 100):
"""Lista dokumenata: godišnjaci, publikacije, etc.""" """Lista dokumenata: godišnjaci, publikacije, etc."""
where = ["aktivan = true"] where = ["aktivan = true"]
params = [] params = []
@@ -2404,6 +2404,10 @@ def dokumenti_list(vrsta: str = None, sport: str = None, godina: int = None, q:
where.append("sport = %s"); params.append(sport) where.append("sport = %s"); params.append(sport)
if godina: if godina:
where.append("godina = %s"); params.append(godina) where.append("godina = %s"); params.append(godina)
if organizacija:
where.append("organizacija ILIKE %s"); params.append(f"%%{organizacija}%%")
if izvor:
where.append("organizacija ILIKE %s"); params.append(f"%%{izvor}%%")
if q: if q:
where.append("(title ILIKE %s OR sadrzaj_summary ILIKE %s OR organizacija ILIKE %s)") where.append("(title ILIKE %s OR sadrzaj_summary ILIKE %s OR organizacija ILIKE %s)")
params.extend([f"%%{q}%%"]*3) params.extend([f"%%{q}%%"]*3)
+3 -5
View File
@@ -107,6 +107,7 @@ async function loadDocs(){
if(vrsta) params.set('vrsta', vrsta); if(vrsta) params.set('vrsta', vrsta);
if(sport) params.set('sport', sport); if(sport) params.set('sport', sport);
if(q) params.set('q', q); if(q) params.set('q', q);
if(org) params.set('organizacija', org);
params.set('limit', '500'); params.set('limit', '500');
document.getElementById('docs-grid').innerHTML = '<div class="empty">Učitavanje…</div>'; document.getElementById('docs-grid').innerHTML = '<div class="empty">Učitavanje…</div>';
@@ -114,12 +115,9 @@ async function loadDocs(){
try{ try{
const r = await fetch('/sport/api/v2/dokumenti?'+params.toString()); const r = await fetch('/sport/api/v2/dokumenti?'+params.toString());
const d = await r.json(); const d = await r.json();
let rows = d.rows || []; let rows = d.rows || d.dokumenti || [];
if(org){
rows = rows.filter(row => (row.organizacija||'').includes(org));
}
document.getElementById('stats').innerHTML = `<b>${rows.length}</b> dokumenata · <b>${d.count}</b> ukupno (filter: ${[vrsta,sport,org,q].filter(Boolean).join(', ') || ''})`; document.getElementById('stats').innerHTML = `<b>${rows.length}</b> dokumenata po filtru (filter: ${[vrsta,sport,org,q].filter(Boolean).join(', ') || 'bez filtera'})`;
if(rows.length === 0){ if(rows.length === 0){
document.getElementById('docs-grid').innerHTML = '<div class="empty">Nema dokumenata po filtru</div>'; document.getElementById('docs-grid').innerHTML = '<div class="empty">Nema dokumenata po filtru</div>';