← back to Commercialrealestate
public/credit-unions.html
87 lines
<!doctype html>
<html lang="en">
<head>
<script>(function(){try{var t=localStorage.getItem('crcp-theme');document.documentElement.setAttribute('data-theme',t==='light'?'light':'dark');}catch(e){document.documentElement.setAttribute('data-theme','dark');}})();</script>
<!-- Self-heal: nav-agent grid controls can persist a "removed"/"collapsed" state that hides the
whole grid with no obvious way back. Clear it before nav-agent runs so a grid can never stay hidden. -->
<script>(function(){try{for(var i=localStorage.length-1;i>=0;i--){var k=localStorage.key(i);if(k&&k.indexOf('navagent:')===0){var v=localStorage.getItem(k);if(v&&v.indexOf('"removed":true')>=0){localStorage.removeItem(k);}}}}catch(e){}})();</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Crect width='16' height='16' rx='3' fill='%230c0f15'/%3E%3Ctext x='8' y='12' font-size='9' text-anchor='middle' fill='%23C8A24B'%3E%F0%9F%A4%9D%3C/text%3E%3C/svg%3E">
<title>Credit Unions — with LA County offices (NCUA)</title>
<link rel="stylesheet" href="/lending-grid.css">
<link rel="stylesheet" href="/nav-agent/nav-agent.css"><!-- nav-agent -->
<link rel="stylesheet" href="/crcp-theme.css"><!-- CRCP day/night tokens: load LAST so html[data-theme] wins -->
</head>
<body>
<header>
<h1><b>🤝 Credit Unions</b> — LA County</h1>
<div class="nav"><a href="/lending.html">← Lending</a><a href="/crcp.html">CRCP</a><a href="/lenders.html">🏦 Lenders</a><a href="/mortgage-market.html">📊 Market</a></div>
<span class="spacer"></span>
<input class="search" id="q" type="text" placeholder="search all fields — name, city, charter, source… (space = AND)">
<div class="toggle" id="view"><button data-v="table" class="on">▦ List</button><button data-v="grid">▤ Grid</button></div>
<select id="sortsel" title="Sort"></select>
<label id="denswrap" title="Card density — grid view">⤢<input type="range" id="density" min="1" max="10" step="1"></label>
<button class="csvbtn" id="csv" title="Export current rows to CSV">⬇ CSV</button>
<span class="count" id="count">…</span>
</header>
<div class="shell">
<aside class="rail">
<div id="railFacets"></div>
<div class="rsec"><h4>Fields / columns — show / hide</h4>
<div class="fieldtoggles" id="fFields"></div>
<div style="margin-top:8px"><button class="minibtn" id="fAll">All</button><button class="minibtn" id="fNone">None</button><button class="minibtn" id="fReset" title="Reset columns to the tight default">↺ Reset</button></div>
<div class="mut" style="font-size:10.5px;margin-top:7px;line-height:1.35">Drag a column header to reorder · drag its right edge to resize · click to sort.</div>
</div>
</aside>
<div class="wrap">
<div class="databar"><span class="pubtag">Public data</span><span id="demoNote">NCUA Quarterly Call Report — official public bulk data</span></div>
<div id="tableView" class="tblwrap"><table class="g" data-no-sort><thead id="thead"></thead><tbody id="tbody"></tbody></table></div>
<div id="gridView" class="grid hide"></div>
</div>
</div>
<div id="ov"><div id="modal"><button class="x" aria-label="Close" onclick="document.getElementById('ov').classList.remove('on')">✕</button><div id="mbody"></div></div></div>
<script>
window.GRID_CONFIG = {
ns: 'crcpCU', noun: 'credit unions', nameKey: 'name', idKey: 'id',
title: 'NCUA-insured credit union · LA County office',
api: '/api/lending/credit-unions', dataKey: 'credit_unions',
sortKey: 'la_branches', sortDir: -1,
defaultCols: ['name', 'charter', 'members', 'total_assets', 'la_branches', 'source'],
badgeClass: (k, v) => 'com',
cols: [
// Identity
{ k: 'name', l: 'Credit union', t: 's', g: 'Identity', max: 46 },
{ k: 'charter', l: 'NCUA charter #', t: 's', g: 'Identity' },
{ k: 'mdi', l: 'Minority-owned (MDI)', t: 'bool', g: 'Identity', def: 0 },
// LA presence
{ k: 'la_branches', l: 'LA offices', t: 'n', g: 'LA presence' },
{ k: 'city', l: 'LA city', t: 's', g: 'LA presence' },
// Size
{ k: 'members', l: 'Members', t: 'n', g: 'Size' },
{ k: 'total_assets', l: 'Total assets', t: 'money', g: 'Size' },
// Headquarters
{ k: 'hq_city', l: 'HQ city', t: 's', g: 'Headquarters', def: 0 },
{ k: 'hq_state', l: 'HQ state', t: 's', g: 'Headquarters', def: 0 },
{ k: 'charter_state', l: 'Charter state', t: 's', g: 'Headquarters', def: 0 },
{ k: 'year_opened', l: 'Year opened', t: 's', g: 'Headquarters', def: 0 },
// Provenance
{ k: 'source', l: 'Source', t: 'src', g: 'Evidence' },
{ k: 'retrieved_at', l: 'Retrieved', t: 'date', g: 'Evidence', def: 0 },
],
facets: [
{ k: 'cu_size', l: 'Asset size', derive: r => (r.total_assets || 0) >= 1e9 ? '$1B+' : (r.total_assets || 0) >= 1e8 ? '$100M–$1B' : (r.total_assets || 0) >= 1e7 ? '$10M–$100M' : 'Under $10M', limit: 6 },
{ k: 'la_size', l: 'LA presence', derive: r => r.la_branches >= 10 ? '10+ offices' : r.la_branches >= 3 ? '3–9 offices' : '1–2 offices', limit: 4 },
{ k: 'mdi', l: 'Minority-owned (MDI)', derive: r => r.mdi ? 'Yes' : 'No', limit: 2 },
],
};
</script>
<script src="/column-manager.js" defer></script>
<script src="/lending-grid.js" defer></script>
<script src="/col-resize.js" defer></script>
<script src="/corner-nav.js" defer></script>
<script src="/nav-agent/nav-agent.js" defer></script><!-- nav-agent -->
<script src="/crcp-theme.js" defer></script><!-- CRCP day/night toggle (auto-injects into header) -->
</body>
</html>