[object Object]

← back to Commercialrealestate

fix: guard brokers.map in graphics.html against non-array payload

d7077f385a66bd53f87e02f4feec1497c0915690 · 2026-07-04 13:31:31 -0700 · Steve

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit d7077f385a66bd53f87e02f4feec1497c0915690
Author: Steve <steve@designerwallcoverings.com>
Date:   Sat Jul 4 13:31:31 2026 -0700

    fix: guard brokers.map in graphics.html against non-array payload
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 public/graphics.html | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/public/graphics.html b/public/graphics.html
index 7a017b9..f8f7d49 100644
--- a/public/graphics.html
+++ b/public/graphics.html
@@ -100,7 +100,10 @@ async function j(u){ const r=await fetch(u); return r.json(); }
 
 (async()=>{
   // --- top brokers ---
-  const brokers = await j('/api/brokers/top?limit=12');
+  const brokersRaw = await j('/api/brokers/top?limit=12');
+  const brokers = Array.isArray(brokersRaw) ? brokersRaw
+    : Array.isArray(brokersRaw&&brokersRaw.brokers) ? brokersRaw.brokers
+    : Array.isArray(brokersRaw&&brokersRaw.topBrokers) ? brokersRaw.topBrokers : [];
   new Chart($('#brokerChart'),{ type:'bar', data:{
     labels: brokers.map(b=>b.name),
     datasets:[{ label:'listings', data:brokers.map(b=>b.listings), backgroundColor:GH.acc }] },
@@ -109,7 +112,9 @@ async function j(u){ const r=await fetch(u); return r.json(); }
       scales:{ x:{ grid:{color:GH.line} }, y:{ grid:{display:false} } } } });
 
   // --- firm market share (doughnut) ---
-  const firms = await j('/api/firms/share?limit=12');
+  const firmsRaw = await j('/api/firms/share?limit=12');
+  const firms = Array.isArray(firmsRaw) ? firmsRaw
+    : Array.isArray(firmsRaw&&firmsRaw.firms) ? firmsRaw.firms : [];
   new Chart($('#firmChart'),{ type:'doughnut', data:{
     labels: firms.map(f=>f.firm),
     datasets:[{ data:firms.map(f=>f.listings), backgroundColor:PALETTE, borderColor:'#161b22', borderWidth:2 }] },

← adc85c1 sales: Amazon rail + field toggles + grid/list via crcp-grid  ·  back to Commercialrealestate  ·  closed-sales: snapshot fallback so sales.html has data on pr 6e2d2bf →