// Live filter daftar pemilih by owner (V11). Tanpa JS: form GET ?q= tetap jalan. (function () { 'use strict'; var input = document.getElementById('search-input'); var rows = document.getElementById('rows'); var pager = document.getElementById('pager'); var result = document.getElementById('search-result'); if (!input || !rows || !pager) { return; } var timer = null; var originalRows = null; var originalPager = null; var originalBands = null; var DEBOUNCE_MS = 200; var GROUP_LABEL = { baru: 'BARU', revote: 'REVOTE', valid: 'VALID', kadaluarsa: 'KADALUARSA' }; function escapeHtml(text) { var el = document.createElement('div'); el.textContent = text == null ? '' : String(text); return el.innerHTML; } function vex(value) { return Number(value).toLocaleString('id-ID', { minimumFractionDigits: 4, maximumFractionDigits: 4 }); } function shortdate(value) { if (!value) { return '—'; } return String(value).slice(0, 10); } function hideBands(on) { var bands = document.querySelectorAll('.band-list'); if (on && originalBands === null) { originalBands = Array.prototype.map.call(bands, function (el) { return el.style.display || ''; }); Array.prototype.forEach.call(bands, function (el) { el.style.display = 'none'; }); } else if (!on && originalBands !== null) { Array.prototype.forEach.call(bands, function (el, i) { el.style.display = originalBands[i] || ''; }); originalBands = null; } } function setSearchMode(on) { if (on && originalRows === null) { originalRows = rows.innerHTML; originalPager = pager.style.display || ''; hideBands(true); } else if (!on && originalRows !== null) { rows.innerHTML = originalRows; pager.style.display = originalPager; originalRows = null; originalPager = null; hideBands(false); if (result) { result.textContent = ''; } } } function renderResults(data) { if (!data.results.length) { rows.innerHTML = '
TAK ADA AKUN COCOK
'; } else { rows.innerHTML = data.results.map(function (r) { var tag = '' + (GROUP_LABEL[r.group] || r.group) + ''; var badge = r.expired ? 'VOTE ULANG' : ''; var warn = r.expiring ? 'VOTE ULANG SEGERA' : ''; return '
' + '' + r.rank + '' + '' + escapeHtml(r.owner) + tag + warn + badge + '' + '' + vex(r.staked) + '' + '' + vex(r.total_reward) + '' + '' + shortdate(r.last_vote) + '' + '
'; }).join(''); } if (result) { result.textContent = 'HASIL · ' + data.count + ' AKUN UNTUK "' + data.query + '"'; } pager.style.display = 'none'; } function liveSearch(q) { fetch('/api/search?q=' + encodeURIComponent(q)) .then(function (res) { return res.json(); }) .then(renderResults) .catch(function () { // Biarkan baris server tetap tampil bila fetch gagal. }); } input.addEventListener('input', function () { clearTimeout(timer); var q = input.value.trim(); if (q === '') { setSearchMode(false); return; } setSearchMode(true); timer = setTimeout(function () { liveSearch(q); }, DEBOUNCE_MS); }); })();