← back to Commercialrealestate
condos viewer: always-on created date+time chip on cards + date+time (not date-only) in list — comply with admin-card timestamp HARD rule
f7b6b058f9190799f81a3bf354af29aa5fdfa224 · 2026-08-03 09:35:49 -0700 · Steve Abrams
Files touched
Diff
commit f7b6b058f9190799f81a3bf354af29aa5fdfa224
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Mon Aug 3 09:35:49 2026 -0700
condos viewer: always-on created date+time chip on cards + date+time (not date-only) in list — comply with admin-card timestamp HARD rule
---
public/condos.html | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/public/condos.html b/public/condos.html
index ce44328..8708870 100644
--- a/public/condos.html
+++ b/public/condos.html
@@ -222,7 +222,7 @@ function fcell(c,f){ const v=fval(c,f);
if(v==null||v==='') return '—';
if(f.money) return '$'+(+v).toLocaleString()+(f.suf||'');
if(f.num) return (+v).toLocaleString();
- if(f.date){ try{ return new Date(v).toLocaleDateString(undefined,{year:'numeric',month:'short',day:'numeric'}); }catch(e){ return '—'; } }
+ if(f.date){ try{ const d=new Date(v); return '<span title="'+esc(d.toISOString())+'">'+d.toLocaleString(undefined,{year:'numeric',month:'short',day:'numeric',hour:'numeric',minute:'2-digit'})+'</span>'; }catch(e){ return '—'; } }
return esc(v)+(f.suf||'');
}
@@ -300,14 +300,24 @@ function noteBox(c){
const v=(NOTES[c.id]&&NOTES[c.id].note)||'';
return `<div class="notewrap"><textarea class="notebox" data-note="${esc(c.id)}" rows="2" placeholder="✎ Your notes on this listing…">${esc(v)}</textarea><span class="notestatus" data-nstat="${esc(c.id)}"></span></div>`;
}
+// Always-on created date+time chip (Steve HARD rule: admin cards must show when the
+// record was added, date AND time, visible on the card — not toggle-gated. Mirrors the
+// design-curator .when chip). Full ISO in title=. Falls back to last_seen; hidden if neither.
+function whenChip(c){
+ const t=c.created_at||c.last_seen; if(!t) return '';
+ const d=new Date(t); if(isNaN(d)) return '';
+ const s=d.toLocaleString(undefined,{year:'numeric',month:'short',day:'numeric',hour:'numeric',minute:'2-digit'});
+ return `<div class="when" title="${esc(d.toISOString())}" style="font-size:10px;color:var(--mut,#8b949e);margin-top:6px">🕓 Added ${esc(s)}</div>`;
+}
// ---- renderers ----
-const CARD_SKIP=new Set(['warrantable_status','city','zip','project_name','warrant_source']);
+const CARD_SKIP=new Set(['warrantable_status','city','zip','project_name','warrant_source','created_at']);
function dbCards(rows){
const vis=orderedFields().filter(f=>fvis(f.k)&&!CARD_SKIP.has(f.k));
return rows.map(c=>`<div class="condo">
<div class="chead"><div class="name">${esc(c.project_name||c.address||'Condo')}</div><button class="starbtn ${SHORT.has(c.id)?'on':''}" data-star="${c.id}" aria-label="${SHORT.has(c.id)?'Remove from':'Add to'} shortlist" aria-pressed="${SHORT.has(c.id)}" title="Shortlist">★</button></div>
<div class="addr">${esc(c.address||'')}${c.city?', '+esc(c.city):''} ${esc(c.zip||'')}</div>
+ ${whenChip(c)}
${fvis('warrantable_status')?statusBadge(c.warrantable_status||c.warrant_signal):''}
${vis.map(f=>`<div class="row"><span class="k">${esc(f.l)}</span><span>${fcell(c,f)}</span></div>`).join('')}
${brokerCell(c)}
← 685110b chore: lint, refactor (path.join, delete stale note keys), v
·
back to Commercialrealestate
·
condos viewer: DRY date rendering into fmtDateTime/dateTimeS e0227f6 →