diff --git a/public_html/admin/index.php b/public_html/admin/index.php
index 181059d..835d0c9 100644
--- a/public_html/admin/index.php
+++ b/public_html/admin/index.php
@@ -768,6 +768,7 @@ select.filter-sel:focus{border-color:var(--cyan)}
+
@@ -1359,11 +1360,17 @@ async function loadFactCategories() {
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() {
scanShell('facts-tbl', ['CATEGORY','KEY','VALUE','UPDATED','ACTIONS'], null, null);
const cat = document.getElementById('factCat')?.value || '__all__';
- const facts = await api('facts_list', {category: cat});
- if (!facts.length) { document.getElementById('facts-tbl').innerHTML='NO FACTS
'; return; }
+ let facts = await api('facts_list', {category: cat});
+ 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='NO FACTS MATCH FILTER
'; return; }
document.getElementById('facts-tbl').innerHTML = `
| CATEGORY | KEY | VALUE | UPDATED | ACTIONS |
`;