← back to Commercialrealestate
public/mortgage-market.html
79 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%93%8A%3C/text%3E%3C/svg%3E">
<title>Residential Mortgage Market — LA County lenders (CFPB / HMDA)</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>📊 Residential Mortgage Market</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="/credit-unions.html">🤝 Credit Unions</a></div>
<span class="spacer"></span>
<input class="search" id="q" type="text" placeholder="search all fields — lender, LEI, 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">CFPB / HMDA — <b style="color:var(--warn)">residential</b> home-mortgage originations by lender (1–4 family + multifamily dwellings). NOT commercial-property loans. Institution-level only — no borrower 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: 'crcpHMDA', noun: 'lender-market rows', nameKey: 'lender', idKey: 'id',
title: 'HMDA residential mortgage originations · LA County · by lender (not commercial-RE loans)',
api: '/api/lending/market', dataKey: 'market',
sortKey: 'total_volume', sortDir: -1,
defaultCols: ['lender', 'loan_count', 'total_volume', 'avg_loan_amount', 'year', 'source'],
badgeClass: () => 'com',
cols: [
// Lender
{ k: 'lender', l: 'Lender', t: 's', g: 'Lender', max: 46 },
{ k: 'lei', l: 'LEI', t: 's', g: 'Lender', def: 0 },
// Origination activity (institution-level, LA County)
{ k: 'loan_count', l: 'Originations', t: 'n', g: 'Activity' },
{ k: 'total_volume', l: 'Total volume', t: 'money', g: 'Activity' },
{ k: 'avg_loan_amount', l: 'Avg loan', t: 'money', g: 'Activity' },
{ k: 'year', l: 'Year', t: 's', g: 'Activity' },
// Provenance
{ k: 'source', l: 'Source', t: 'src', g: 'Evidence' },
{ k: 'retrieved_at', l: 'Retrieved', t: 'date', g: 'Evidence', def: 0 },
],
facets: [
{ k: 'year', l: 'Year', limit: 6 },
{ k: 'vol_band', l: 'Volume band', derive: r => r.total_volume >= 1e9 ? '$1B+' : r.total_volume >= 1e8 ? '$100M–1B' : r.total_volume >= 1e7 ? '$10–100M' : 'under $10M', 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>