← back to Nationalrealestate
Property page: render deed events + public-record links (deep vs search-portal)
f195028078353f9397048183bedeaa2fe841fb11 · 2026-07-26 07:42:44 -0700 · Steve Abrams
Files touched
Diff
commit f195028078353f9397048183bedeaa2fe841fb11
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Jul 26 07:42:44 2026 -0700
Property page: render deed events + public-record links (deep vs search-portal)
---
public/property.html | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/public/property.html b/public/property.html
index c2c37d7..b8bfad2 100644
--- a/public/property.html
+++ b/public/property.html
@@ -176,9 +176,21 @@ async function load(loc){
`AIN ${p.ain} · county ${d.county} · ${p.bedrooms ?? '—'} bd / ${p.bathrooms ?? '—'} ba · ` +
`${int0(p.sqft)} sqft · built ${p.year_built || '—'}`;
- // 1 Property History — full sale records table when the county source has them (King WA)
+ // 1 Property History — recorded-document events, sale records, and public-record links
const sales = d.property_history.sales || [];
- body('s_history', sales.length
+ const events = d.property_history.events || [];
+ const pr = d.public_records || [];
+ const recLinks = pr.length
+ ? `<div class="note"><b>Public records:</b> ` + pr.map(r =>
+ `<a href="${esc(r.url)}" target="_blank" rel="noopener noreferrer">${esc(r.label)}</a>${r.deep_link ? ' ↗' : ''}`).join(' · ')
+ + (pr.some(r => r.deep_link === false) ? `<br><span style="opacity:.7">↗ = direct record; others are search portals (enter the APN)</span>` : '') + `</div>`
+ : '';
+ const histCore = events.length
+ ? `<table><tr><th>Date</th><th>Type</th><th>Doc #</th><th>Record</th></tr>` +
+ events.map(e => `<tr><td>${esc(e.date)}</td><td>${esc(e.event_type)}</td><td>${esc(e.doc_number || '—')}</td>
+ <td>${e.source_url ? `<a href="${esc(e.source_url)}" target="_blank" rel="noopener noreferrer">view</a>` : '—'}</td></tr>`).join('') +
+ `</table><div class="note">${esc(d.property_history.note)}</div>`
+ : sales.length
? `<table><tr><th>Date</th><th>Price</th><th>Buyer</th><th>Seller</th></tr>` +
sales.map(s => `<tr><td>${esc(s.date)}</td><td>${usd0(s.price)}</td>
<td>${esc(s.buyer || '—')}</td><td>${esc(s.seller || '—')}</td></tr>`).join('') +
@@ -187,7 +199,8 @@ async function load(loc){
? stats([['Last Recording Date', esc(d.property_history.last_recording_date)],
['Sale Price', usd0(d.property_history.sale_price)]]) +
`<div class="note">${esc(d.property_history.note)}</div>`
- : pendingNote(d.property_history.note));
+ : pendingNote(d.property_history.note);
+ body('s_history', histCore + recLinks);
// 2 Tax History
const rolls = d.tax_history.rolls.filter(r => r.roll_year);
← bb6c7e8 Contrarian fixes: honest public-record links (deep vs search
·
back to Nationalrealestate
·
Generalize SD adapter Poway->county-wide sweep (1.09M parcel 854bc7a →