← back to Commercialrealestate
public/lenders.html
90 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%8F%A6%3C/text%3E%3C/svg%3E">
<title>Lenders — Banks with LA County branches (FDIC)</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>🏦 Lenders</b> — Banks</h1>
<div class="nav"><a href="/lending.html">← Lending</a><a href="/crcp.html">CRCP</a><a href="/credit-unions.html">🤝 Credit Unions</a><a href="/mortgage-market.html">📊 Market</a><a href="/loan-officers.html">👤 Loan Officers</a></div>
<span class="spacer"></span>
<input class="search" id="q" type="text" placeholder="search all fields — bank, city, class, 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">FDIC BankFind — official public API</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: 'crcpLenders', noun: 'lenders', nameKey: 'name', idKey: 'id',
title: 'FDIC-insured bank · LA County presence',
api: '/api/lending/lenders', dataKey: 'lenders',
sortKey: 'la_branches', sortDir: -1,
defaultCols: ['name', 'bank_class', 'la_branches', 'total_assets_000', 'hq_city', 'source'],
badgeClass: (k, v) => k === 'bank_class' ? (/national/i.test(v) ? 'com' : /savings/i.test(v) ? 'warn' : 'grn') : 'com',
cols: [
// Identity
{ k: 'name', l: 'Bank', t: 's', g: 'Identity', max: 46 },
{ k: 'bank_class', l: 'Charter type', t: 'badge', g: 'Identity' },
{ k: 'cert', l: 'FDIC Cert #', t: 's', g: 'Identity', def: 0 },
// LA presence
{ k: 'la_branches', l: 'LA branches', t: 'n', g: 'LA presence' },
{ k: 'total_offices', l: 'Total offices', t: 'n', g: 'LA presence', def: 0 },
// Size
{ k: 'total_assets_000', l: 'Total assets', t: 'money000', g: 'Size' },
{ k: 'deposits_000', l: 'Deposits', t: 'money000', g: 'Size', def: 0 },
{ k: 'net_income_000', l: 'Net income', t: 'money000', g: 'Size', def: 0 },
{ k: 'roa', l: 'ROA', t: 'pct', g: 'Size', def: 0 },
// HQ
{ k: 'hq_city', l: 'HQ city', t: 's', g: 'Headquarters' },
{ k: 'hq_state', l: 'HQ state', t: 's', g: 'Headquarters', def: 0 },
{ k: 'established', l: 'Established', t: 's', g: 'Headquarters', def: 0 },
{ k: 'website', l: 'Website', t: 'web', g: 'Headquarters', def: 0 },
{ k: 'active', l: 'Active', t: 'bool', 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: 'bank_class', l: 'Charter type', limit: 10 },
{ k: 'hq_state', l: 'HQ state', limit: 12 },
{ k: 'la_size', l: 'LA presence', derive: r => r.la_branches >= 50 ? '50+ branches' : r.la_branches >= 10 ? '10–49 branches' : r.la_branches >= 3 ? '3–9 branches' : '1–2 branches', limit: 6 },
],
};
</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>