← 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 →