/sport/dokumenti UI podrzava i rows i dokumenti response key
This commit is contained in:
+5
-1
@@ -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)
|
||||||
|
|||||||
@@ -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>';
|
||||||
|
|||||||
Reference in New Issue
Block a user