← back to Rentv 2026
fix(firm): profile KPIs drill deeper (every-datum-hrefs rule) — 'Largest deal' → that deal's page, 'Top asset class' → /sector?type=. KPIs with no clean deeper target (Total volume/Deals/Markets) left unlinked rather than forced. Verified targets valid (/sector accepts ?type=), profile serves 200.
9c83657e48ed40009ce95cb6e52c6f8c5138dd08 · 2026-08-06 16:52:26 -0700 · Steve
Files touched
Diff
commit 9c83657e48ed40009ce95cb6e52c6f8c5138dd08
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Aug 6 16:52:26 2026 -0700
fix(firm): profile KPIs drill deeper (every-datum-hrefs rule) — 'Largest deal' → that deal's page, 'Top asset class' → /sector?type=. KPIs with no clean deeper target (Total volume/Deals/Markets) left unlinked rather than forced. Verified targets valid (/sector accepts ?type=), profile serves 200.
---
public/firm.html | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/public/firm.html b/public/firm.html
index 25b2ffb4..424985d9 100644
--- a/public/firm.html
+++ b/public/firm.html
@@ -177,16 +177,17 @@ function renderProfile(g){
$('h1').textContent=g.name;
$('blurb').textContent=`Every tracked deal RENTV has ${g.name} in — ${g.count} deal${g.count===1?'':'s'} across ${g.nMetro} market${g.nMetro===1?'':'s'}.`;
const largest=g.deals.reduce((a,b)=>(b.amount||0)>(a.amount||0)?b:a, g.deals[0]);
+ // 4th element = drill href (every-datum-hrefs-deeper rule); only wired where a clean deeper target exists.
const kpis=[
- ['Total volume', g.vol?usd(g.vol):'—', true],
- ['Deals', String(g.count), false],
- ['Markets', String(g.nMetro), false],
- ['Top asset class', g.top?g.top[0]:'—', false],
- ['Largest deal', (largest&&largest.amount)?usd(largest.amount):'—', true],
+ ['Total volume', g.vol?usd(g.vol):'—', true, null],
+ ['Deals', String(g.count), false, null],
+ ['Markets', String(g.nMetro), false, null],
+ ['Top asset class', g.top?g.top[0]:'—', false, g.top?('/sector?type='+encodeURIComponent(g.top[0])):null],
+ ['Largest deal', (largest&&largest.amount)?usd(largest.amount):'—', true, (largest&&largest.id)?('/news/'+encodeURIComponent(largest.id)):null],
];
$('metros').innerHTML =
`<a class="back" href="/firm">← All dealmakers</a>`+
- `<div class="kpis">${kpis.map(k=>`<div class="kpi"><div class="k">${esc(k[0])}</div><div class="v${k[2]?' red':''}">${esc(k[1])}</div></div>`).join('')}</div>`+
+ `<div class="kpis">${kpis.map(k=>`<div class="kpi">${k[3]?`<a href="${esc(k[3])}" style="text-decoration:none;color:inherit;display:block" title="Drill into ${esc(k[0])}">`:''}<div class="k">${esc(k[0])}${k[3]?' ›':''}</div><div class="v${k[2]?' red':''}">${esc(k[1])}</div>${k[3]?'</a>':''}</div>`).join('')}</div>`+
`<div class="plist">${g.deals.map(d=>`<a class="pcard" href="${d.id?('/news/'+encodeURIComponent(d.id)):'/deals'}"><div><h4>${esc(d.title)}</h4><div class="m">${[d.property_type,d.txn_type,[d.city,d.state].filter(Boolean).join(', '),d.size_label].filter(Boolean).map(esc).join(' · ')}</div></div><div class="amt">${esc(d.amount_label||(d.amount?usd(d.amount):'—'))}</div></a>`).join('')}</div>`;
}
← 1a6901b5 feat(brief): hard monthly spend cap (BRIEF_MONTHLY_CAP, defa
·
back to Rentv 2026
·
harden(agents review): spend-safety + robustness pass on thi 3e79a22d →