PDF link target=_blank + nginx timeouts + priority filteri (samo s podacima)
nginx (sport.rinet.one): - proxy_read_timeout 60s → 300s - proxy_send_timeout 300s - proxy_buffering off (PDF stream) - client_max_body_size 50M → 100M Endpoints: - /api/v2/klubovi/financirani: +with_data filter (samo s potporama/godišnjakom/HNS) - /api/v2/sportasi/filtered: +samo_priority +samo_s_hns Frontend: - PDF link target=_blank rel=noopener - window._klub_only_priority = true (default) - window._sportas_only_priority = true (default) DB View: - pgz_sport.v_nogomet_priority (prima_potpore, u_godisnjaku, ima_hns_roster)
This commit is contained in:
+57
-13
@@ -1956,10 +1956,12 @@ async function openSportas(id){
|
||||
.forEach(k => { if((d[k]===null||d[k]===undefined||d[k]==='') && p[k]!==null && p[k]!==undefined && p[k]!=='') d[k]=p[k]; });
|
||||
}
|
||||
const stats = d.stats || {};
|
||||
const sezone = d.clan_sezona || [];
|
||||
const utakmice = d.utakmice || [];
|
||||
const sezone = (d.clan_sezona && d.clan_sezona.length) ? d.clan_sezona : ((dV2 && dV2.hns_seasons) || []);
|
||||
const utakmice = (d.utakmice && d.utakmice.length) ? d.utakmice : ((dV2 && dV2.hns_matches) || []);
|
||||
const nagrade = d.nagrade || [];
|
||||
const godisnjaci = d.godisnjak_godine || d.godisnjaci || [];
|
||||
// SUB6 2026-05-05: M2M kategorije (clan_kategorije) iz /v2/clan/{id}/full
|
||||
const kategorije = (dV2 && dV2.kategorije) || [];
|
||||
const initials = (((d.ime||'?')[0]||'?')+((d.prezime||'?')[0]||'?')).toUpperCase();
|
||||
const photo = d.slika_url ? '<img src="'+esc(d.slika_url)+'" alt="" onerror="this.style.display=\'none\';if(this.parentElement)this.parentElement.innerHTML=\'<div class=\\\'no\\\'>'+initials+'</div>\'">' : '<div class="no">'+initials+'</div>';
|
||||
const dob = d.datum_rodjenja || d.datum_rodenja;
|
||||
@@ -2020,6 +2022,7 @@ async function openSportas(id){
|
||||
<div class="tabs">
|
||||
<div class="tab active" onclick="switchPlayerTab(this,'p-sez')">🏆 HNS Karijera (${sezone.length})</div>
|
||||
<div class="tab" onclick="switchPlayerTab(this,'p-utak')">📅 Posljednje utakmice (${utakmice.length})</div>
|
||||
<div class="tab" onclick="switchPlayerTab(this,'p-kat')">🏷️ Kategorije (${kategorije.length})</div>
|
||||
<div class="tab" onclick="switchPlayerTab(this,'p-bio')">Bio</div>
|
||||
<div class="tab" onclick="switchPlayerTab(this,'p-god')">Godišnjaci (${godisnjaci.length})</div>
|
||||
<div class="tab" onclick="switchPlayerTab(this,'p-nag')">Nagrade (${nagrade.length})</div>
|
||||
@@ -2035,11 +2038,11 @@ async function openSportas(id){
|
||||
<td>${esc(s.natjecanje||'')}</td>
|
||||
<td>${esc(s.klub_naziv||'')}</td>
|
||||
<td class="num">${fmtNum(s.nastupi)}</td>
|
||||
<td class="num"><b style="color:var(--pgz-gold)">${fmtNum(s.pogoci)}</b></td>
|
||||
<td class="num"><b style="color:var(--pgz-gold)">${fmtNum(s.pogoci ?? s.golovi)}</b></td>
|
||||
<td class="num">${fmtNum(s.asistencije)}</td>
|
||||
<td class="num">${fmtNum(s.zuti_kartoni)}</td>
|
||||
<td class="num">${fmtNum(s.crveni_kartoni)}</td>
|
||||
<td>${s.natjecanje_url?'<a href="'+esc(s.natjecanje_url)+'" target="_blank">↗</a>':''}</td>
|
||||
<td class="num">${fmtNum(s.zuti_kartoni ?? s.zuti)}</td>
|
||||
<td class="num">${fmtNum(s.crveni_kartoni ?? s.crveni)}</td>
|
||||
<td>${(s.natjecanje_url||s.source_url)?'<a href="'+esc(s.natjecanje_url||s.source_url)+'" target="_blank">↗</a>':''}</td>
|
||||
</tr>`).join('')}
|
||||
</tbody>
|
||||
</table></div>` : '<div class="empty">Nema sezonskih podataka</div>'}
|
||||
@@ -2048,22 +2051,45 @@ async function openSportas(id){
|
||||
<div id="p-utak" class="ptab" style="display:none">
|
||||
<div class="pp-section-h">📅 Posljednje utakmice <span class="cnt">${utakmice.length} zabilježeno</span></div>
|
||||
${utakmice.length ? `<div style="overflow-x:auto;max-height:500px;overflow-y:auto"><table>
|
||||
<thead><tr><th>Datum</th><th>Natjecanje</th><th colspan="3">Susret</th><th class="num">Gol.</th><th class="num">Min.</th><th></th></tr></thead>
|
||||
<tbody>${utakmice.map(u => `
|
||||
<thead><tr><th>Datum</th><th>Natjecanje</th><th colspan="3">Susret</th><th>Pozicija</th><th class="num">Gol.</th><th class="num">Min.</th><th></th></tr></thead>
|
||||
<tbody>${utakmice.map(u => {
|
||||
const dom = u.klub_dom || u.domacin || '';
|
||||
const gost = u.klub_gost || u.gost || '';
|
||||
const golovi = (u.pogodaka != null ? u.pogodaka : u.golovi);
|
||||
const minute = (u.minute != null) ? u.minute : ((u.minute_od != null && u.minute_do != null) ? (u.minute_do - u.minute_od) : null);
|
||||
return `
|
||||
<tr class="no-click">
|
||||
<td>${fmtDate(u.datum)}</td>
|
||||
<td>${esc(u.natjecanje||'')}</td>
|
||||
<td>${u.klub_dom_logo?'<img src="'+esc(u.klub_dom_logo)+'" class="utlogo" onerror="this.style.display=\'none\'">':''}${esc(u.klub_dom||'')}</td>
|
||||
<td>${u.klub_dom_logo?'<img src="'+esc(u.klub_dom_logo)+'" class="utlogo" onerror="this.style.display=\'none\'">':''}${esc(dom)}</td>
|
||||
<td><b>${esc(u.rezultat||'-')}</b></td>
|
||||
<td>${u.klub_gost_logo?'<img src="'+esc(u.klub_gost_logo)+'" class="utlogo" onerror="this.style.display=\'none\'">':''}${esc(u.klub_gost||'')}</td>
|
||||
<td class="num"><b style="color:var(--pgz-gold)">${fmtNum(u.pogodaka)}</b></td>
|
||||
<td class="num">${fmtNum(u.minute)}</td>
|
||||
<td>${u.klub_gost_logo?'<img src="'+esc(u.klub_gost_logo)+'" class="utlogo" onerror="this.style.display=\'none\'">':''}${esc(gost)}</td>
|
||||
<td>${esc(u.pozicija||'—')}</td>
|
||||
<td class="num"><b style="color:var(--pgz-gold)">${fmtNum(golovi)}</b></td>
|
||||
<td class="num">${fmtNum(minute)}</td>
|
||||
<td>${u.source_url?'<a href="'+esc(u.source_url)+'" target="_blank">↗</a>':''}</td>
|
||||
</tr>`).join('')}
|
||||
</tr>`;
|
||||
}).join('')}
|
||||
</tbody>
|
||||
</table></div>` : '<div class="empty">Nema podataka o utakmicama</div>'}
|
||||
</div>
|
||||
|
||||
<div id="p-kat" class="ptab" style="display:none">
|
||||
<div class="pp-section-h">🏷️ Kategorije <span class="cnt">${kategorije.length} ${kategorije.length===1?'zapis':(kategorije.length<5&&kategorije.length>1?'zapisa':'zapisa')}</span></div>
|
||||
${kategorije.length ? `<div style="overflow-x:auto;max-height:500px;overflow-y:auto"><table>
|
||||
<thead><tr><th>Sezona</th><th>Kategorija</th><th>Klub</th><th>Izvor</th><th></th></tr></thead>
|
||||
<tbody>${kategorije.map(k => `
|
||||
<tr class="no-click">
|
||||
<td><b>${esc(k.sezona||'—')}</b></td>
|
||||
<td><span class="tag b">${esc(k.kategorija||'—')}</span></td>
|
||||
<td>${k.klub_id ? '<a class="link-chip" onclick="closePanel();setTimeout(()=>openKlub('+k.klub_id+'),250)">'+esc(k.klub_naziv||('Klub #'+k.klub_id))+'</a>' : (k.klub_naziv?esc(k.klub_naziv):'—')}</td>
|
||||
<td>${esc(k.source||'—')}</td>
|
||||
<td>${k.source_url?'<a href="'+esc(k.source_url)+'" target="_blank" rel="noopener">↗</a>':''}</td>
|
||||
</tr>`).join('')}
|
||||
</tbody>
|
||||
</table></div>` : '<div class="empty">Nema M2M kategorija (clan_kategorije)</div>'}
|
||||
</div>
|
||||
|
||||
<div id="p-bio" class="ptab" style="display:none">
|
||||
<div class="kv">
|
||||
<div class="k">OIB</div><div class="v">${d.oib?(canSeeFullOib({klub_id:d.klub_id,savez_id:d.savez_id})?'<a class="link-chip" onclick="openOIB("'+esc(d.oib)+'")">'+esc(d.oib)+'</a>':maskOib(d.oib)):'—'}</div>
|
||||
@@ -3343,6 +3369,24 @@ function init(){
|
||||
navTo('dashboard');
|
||||
}
|
||||
window.addEventListener('DOMContentLoaded', init);
|
||||
|
||||
// PRIORITY FILTERS (CRISIS V5) — default: prikazujemo samo klubove koji imaju podatke
|
||||
window._klub_only_priority = true; // by default: only klubovi koji primaju novac ili su u godisnjaku ili imaju HNS roster
|
||||
window._sportas_only_priority = true; // by default: only iz priority klubova
|
||||
window._sportas_only_hns = false; // dodatni filter: samo s HNS profilom
|
||||
|
||||
window.toggleKlubPriority = function(){
|
||||
window._klub_only_priority = !window._klub_only_priority;
|
||||
if(typeof loadKlubovi === 'function') loadKlubovi();
|
||||
};
|
||||
window.toggleSportasPriority = function(){
|
||||
window._sportas_only_priority = !window._sportas_only_priority;
|
||||
if(typeof loadSportasi === 'function') loadSportasi();
|
||||
};
|
||||
window.toggleSportasHNS = function(){
|
||||
window._sportas_only_hns = !window._sportas_only_hns;
|
||||
if(typeof loadSportasi === 'function') loadSportasi();
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user