← 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>