mirror of
https://github.com/myronblair/jarvis
synced 2026-06-30 17:50:23 -05:00
Add HIDE UNAVAIL toggle to KB Facts page; filter unavailable/empty fact values client-side
This commit is contained in:
@@ -768,6 +768,7 @@ select.filter-sel:focus{border-color:var(--cyan)}
|
|||||||
<select class="filter-sel" id="factCat" onchange="loadFacts()">
|
<select class="filter-sel" id="factCat" onchange="loadFacts()">
|
||||||
<option value="__all__">ALL</option>
|
<option value="__all__">ALL</option>
|
||||||
</select>
|
</select>
|
||||||
|
<button class="filter-btn active" id="fact-hide-unavail" onclick="toggleFactUnavail(this)" title="Hide unavailable/empty values">HIDE UNAVAIL</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="tbl-wrap" id="facts-tbl"><div class="loading">SCANNING...</div></div>
|
<div class="tbl-wrap" id="facts-tbl"><div class="loading">SCANNING...</div></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1359,11 +1360,17 @@ async function loadFactCategories() {
|
|||||||
const _factCntEl = document.getElementById('facts-count'); if(_factCntEl) _factCntEl.textContent=_factTotal.toLocaleString()+' TOTAL';
|
const _factCntEl = document.getElementById('facts-count'); if(_factCntEl) _factCntEl.textContent=_factTotal.toLocaleString()+' TOTAL';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const _unavailValues = new Set(['unavailable','unknown','none','null','','N/A','n/a','undefined']);
|
||||||
|
function toggleFactUnavail(btn){ btn.classList.toggle('active'); loadFacts(); }
|
||||||
async function loadFacts() {
|
async function loadFacts() {
|
||||||
scanShell('facts-tbl', ['CATEGORY','KEY','VALUE','UPDATED','ACTIONS'], null, null);
|
scanShell('facts-tbl', ['CATEGORY','KEY','VALUE','UPDATED','ACTIONS'], null, null);
|
||||||
const cat = document.getElementById('factCat')?.value || '__all__';
|
const cat = document.getElementById('factCat')?.value || '__all__';
|
||||||
const facts = await api('facts_list', {category: cat});
|
let facts = await api('facts_list', {category: cat});
|
||||||
if (!facts.length) { document.getElementById('facts-tbl').innerHTML='<div class="empty">NO FACTS</div>'; return; }
|
const hideUnavail = document.getElementById('fact-hide-unavail')?.classList.contains('active');
|
||||||
|
if (hideUnavail) facts = facts.filter(f => { const v=(f.fact_value||'').toLowerCase().trim(); return !_unavailValues.has(v); });
|
||||||
|
const _factDispEl = document.getElementById('facts-count');
|
||||||
|
if (_factDispEl && hideUnavail) _factDispEl.textContent += ` · ${facts.length} SHOWN`;
|
||||||
|
if (!facts.length) { document.getElementById('facts-tbl').innerHTML='<div class="empty">NO FACTS MATCH FILTER</div>'; return; }
|
||||||
document.getElementById('facts-tbl').innerHTML = `<table>
|
document.getElementById('facts-tbl').innerHTML = `<table>
|
||||||
<thead><tr><th>CATEGORY</th><th>KEY</th><th>VALUE</th><th>UPDATED</th><th>ACTIONS</th></tr></thead>
|
<thead><tr><th>CATEGORY</th><th>KEY</th><th>VALUE</th><th>UPDATED</th><th>ACTIONS</th></tr></thead>
|
||||||
<tbody id="facts-tbl-tbody"></tbody></table>`;
|
<tbody id="facts-tbl-tbody"></tbody></table>`;
|
||||||
|
|||||||
Reference in New Issue
Block a user