← back to Commercialrealestate
broker-grid: 'View full profile ->' link in the broker modal to /broker.html
b0d8b1db4b65943741d1900f4bc91eb9c629c800 · 2026-08-19 09:40:38 -0700 · Steve
Uses the resolved d.broker.id from /api/broker (canonical CRCP broker id), so the
profile link is guaranteed to resolve. Verified via real render of broker 1940, 0
console errors. (residential-brokers + condos intentionally NOT linked: their row
ids are usre-DRE / condo ids, a different id space than the CRCP broker table.)
Files touched
M public/broker-grid.html
Diff
commit b0d8b1db4b65943741d1900f4bc91eb9c629c800
Author: Steve <steve@designerwallcoverings.com>
Date: Wed Aug 19 09:40:38 2026 -0700
broker-grid: 'View full profile ->' link in the broker modal to /broker.html
Uses the resolved d.broker.id from /api/broker (canonical CRCP broker id), so the
profile link is guaranteed to resolve. Verified via real render of broker 1940, 0
console errors. (residential-brokers + condos intentionally NOT linked: their row
ids are usre-DRE / condo ids, a different id space than the CRCP broker table.)
---
public/broker-grid.html | 1 +
1 file changed, 1 insertion(+)
diff --git a/public/broker-grid.html b/public/broker-grid.html
index 2e54960..fc35661 100644
--- a/public/broker-grid.html
+++ b/public/broker-grid.html
@@ -374,6 +374,7 @@ async function openContact(name,id){
+(b.email?'<a href="mailto:'+esc(b.email)+'">✉ '+esc(b.email)+'</a>':'<span class="mut">✉ —</span>')
+(w?'<a href="'+esc(w)+'" target="_blank" rel="noopener noreferrer">🌐 '+esc(w.replace(/^https?:\/\/(www\.)?/,'').replace(/\/$/,''))+'</a>':'<span class="mut">🌐 —</span>')
+(li?'<a href="'+esc(li)+'" target="_blank" rel="noopener noreferrer">in↗</a>':'')+'</div>'
+ +(b.id!=null?'<div style="margin:8px 0"><a href="/broker.html?id='+encodeURIComponent(b.id)+'" style="color:var(--gold,#d29922);font-weight:600">View full profile →</a></div>':'')
+'<div class="sec"><h4>Active / listed ('+d.current.length+')</h4>'+(d.current.length?d.current.map(l=>'<div class="litem"><span>'+esc(l.address)+', '+esc(l.city)+(l.zip?' '+esc(l.zip):'')+'</span><span class="m">'+esc(l.type)+' · '+money(l.price)+(l.units?' · '+l.units+'u':'')+(l.cap_rate?' · '+l.cap_rate+'% cap':'')+(l.listed_at?' · listed '+fdt(l.listed_at):'')+'</span></div>').join(''):'<div class="mut">none in our set</div>')+'</div>'
// DTD-C rider: render Closed/Withdrawn/area-sold ONLY when populated; collapse the gaps into one coverage line.
+((d.closed&&d.closed.length)?'<div class="sec"><h4>Closed ('+d.closed.length+')</h4>'+d.closed.map(l=>'<div class="litem"><span>'+esc(l.address)+', '+esc(l.city)+'</span><span class="m">'+money(l.sold_price)+(l.sold_date?' · '+fdate(l.sold_date):'')+(l.type?' · '+esc(l.type):'')+'</span></div>').join('')+'</div>':'')
← c45525e agent.html: render labeled 'Firm listings' section (firm-sit
·
back to Commercialrealestate
·
broker.html: linter formatting pass (no behavior change) 73008d6 →