Frontend Financije: 4 dropdown (godina, davatelj, sport, vrsta) + listeners
sport2.html: - loadFinancije: dynamic dropdown options from /v2/potpore/meta - refreshFinancije: sport/vrsta/davatelj filter params - 4 dropdown change listeners
This commit is contained in:
+34
-6
@@ -2355,14 +2355,28 @@ function switchPlayerTab(el, tabId){
|
|||||||
//=========== FINANCIJE ===========
|
//=========== FINANCIJE ===========
|
||||||
async function loadFinancije(){
|
async function loadFinancije(){
|
||||||
const root = $('#pg-financije');
|
const root = $('#pg-financije');
|
||||||
|
// Učitaj meta options
|
||||||
|
let meta = {sportovi: [], vrste: [], davatelji: [], godine: []};
|
||||||
|
try { meta = await api('/v2/potpore/meta'); } catch(e) { console.warn('meta fail', e); }
|
||||||
|
|
||||||
root.innerHTML = `
|
root.innerHTML = `
|
||||||
<div class="toolbar">
|
<div class="toolbar" style="flex-wrap:wrap;gap:8px">
|
||||||
<select id="fi-god">
|
<select id="fi-god">
|
||||||
<option value="2026">2026</option>
|
${meta.godine.map(g => `<option value="${g.godina}">${g.godina} (${g.broj}, ${fmtEur(g.suma||0)})</option>`).join('')}
|
||||||
<option value="2025">2025</option>
|
|
||||||
<option value="2024">2024</option>
|
|
||||||
</select>
|
</select>
|
||||||
<input type="search" id="fi-q" placeholder="🔍 Pretraži korisnika ili sport…">
|
<select id="fi-davatelj" title="Platitelj">
|
||||||
|
<option value="all">Svi platitelji</option>
|
||||||
|
${meta.davatelji.map(d => `<option value="${d}">${d.includes('rijeka') ? '🌆 Grad Rijeka' : '🏛 PGŽ'} (${d})</option>`).join('')}
|
||||||
|
</select>
|
||||||
|
<select id="fi-sport" title="Sport">
|
||||||
|
<option value="">Svi sportovi</option>
|
||||||
|
${meta.sportovi.map(s => `<option value="${s}">${s}</option>`).join('')}
|
||||||
|
</select>
|
||||||
|
<select id="fi-vrsta" title="Vrsta">
|
||||||
|
<option value="">Sve vrste</option>
|
||||||
|
${meta.vrste.map(v => `<option value="${v}">${v.replace('_',' ')}</option>`).join('')}
|
||||||
|
</select>
|
||||||
|
<input type="search" id="fi-q" placeholder="🔍 Pretraži korisnika…">
|
||||||
<div class="toggle">
|
<div class="toggle">
|
||||||
<button id="fi-card" class="${_state.viewFinancije==='card'?'active':''}" onclick="setFinancijeView('card')">Kartice</button>
|
<button id="fi-card" class="${_state.viewFinancije==='card'?'active':''}" onclick="setFinancijeView('card')">Kartice</button>
|
||||||
<button id="fi-table-btn" class="${_state.viewFinancije==='table'?'active':''}" onclick="setFinancijeView('table')">Tablica</button>
|
<button id="fi-table-btn" class="${_state.viewFinancije==='table'?'active':''}" onclick="setFinancijeView('table')">Tablica</button>
|
||||||
@@ -2383,15 +2397,29 @@ async function loadFinancije(){
|
|||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
$('#fi-god').addEventListener('change', refreshFinancije);
|
$('#fi-god').addEventListener('change', refreshFinancije);
|
||||||
|
if($('#fi-davatelj')) $('#fi-davatelj').addEventListener('change', refreshFinancije);
|
||||||
|
if($('#fi-sport')) $('#fi-sport').addEventListener('change', refreshFinancije);
|
||||||
|
if($('#fi-vrsta')) $('#fi-vrsta').addEventListener('change', refreshFinancije);
|
||||||
$('#fi-q').addEventListener('input', debounce(refreshFinancije, 200));
|
$('#fi-q').addEventListener('input', debounce(refreshFinancije, 200));
|
||||||
refreshFinancije();
|
refreshFinancije();
|
||||||
}
|
}
|
||||||
async function refreshFinancije(){
|
async function refreshFinancije(){
|
||||||
const god = $('#fi-god').value;
|
const god = $('#fi-god').value;
|
||||||
|
const dav = $('#fi-davatelj') ? $('#fi-davatelj').value : 'all';
|
||||||
|
const sport = $('#fi-sport') ? $('#fi-sport').value : '';
|
||||||
|
const vrsta = $('#fi-vrsta') ? $('#fi-vrsta').value : '';
|
||||||
const q = ($('#fi-q').value || '').toLowerCase().trim();
|
const q = ($('#fi-q').value || '').toLowerCase().trim();
|
||||||
|
|
||||||
|
// Map davatelj 'rijeka.hr' → 'rijeka', 'www2.pgz.hr' → 'pgz'
|
||||||
|
let davParam = '';
|
||||||
|
if(dav.includes('rijeka')) davParam = '&davatelj=rijeka';
|
||||||
|
else if(dav.includes('pgz')) davParam = '&davatelj=pgz';
|
||||||
|
|
||||||
|
const params = `?godina=${god}${davParam}${sport?'&sport='+encodeURIComponent(sport):''}${vrsta?'&vrsta='+encodeURIComponent(vrsta):''}`;
|
||||||
|
|
||||||
const [analytics, byyear] = await Promise.all([
|
const [analytics, byyear] = await Promise.all([
|
||||||
api('/v2/analytics/proracun-sport?godina='+god),
|
api('/v2/analytics/proracun-sport?godina='+god),
|
||||||
api('/v2/potpore/by-year?godina='+god)
|
api('/v2/potpore/by-year'+params)
|
||||||
]);
|
]);
|
||||||
const total = (analytics && analytics.total) || (byyear && byyear.total) || 0;
|
const total = (analytics && analytics.total) || (byyear && byyear.total) || 0;
|
||||||
const poSportu = (analytics && analytics.po_sportu) || [];
|
const poSportu = (analytics && analytics.po_sportu) || [];
|
||||||
|
|||||||
Reference in New Issue
Block a user