[object Object]

← 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

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 →