[object Object]

← back to Dw Pitch Followup

ui: show last-sample-sent date as a chip on every card (uses existing when_iso; removed redundant .when line)

d2a48d918bcdb4b0cd41705ea831de6f5672751a · 2026-06-30 15:43:24 -0700 · Steve

Files touched

Diff

commit d2a48d918bcdb4b0cd41705ea831de6f5672751a
Author: Steve <steve@designerwallcoverings.com>
Date:   Tue Jun 30 15:43:24 2026 -0700

    ui: show last-sample-sent date as a chip on every card (uses existing when_iso; removed redundant .when line)
---
 public/index.html | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/public/index.html b/public/index.html
index 6217732..deb9ddd 100644
--- a/public/index.html
+++ b/public/index.html
@@ -97,6 +97,9 @@ let DATA=null, cur='list1', rendered=0, view=[], io=null;
 const LS = (k,d)=>{try{return JSON.parse(localStorage.getItem('dwpf:'+k))??d}catch{return d}};
 const setLS=(k,v)=>localStorage.setItem('dwpf:'+k, JSON.stringify(v));
 const fmtWhen = iso => { if(!iso) return ''; const d=new Date(iso); return d.toLocaleString(undefined,{year:'numeric',month:'short',day:'numeric',hour:'numeric',minute:'2-digit'}); };
+// Date chip for each card's chips row — for list1 this is the LAST DATE A SAMPLE WAS SENT
+// (when_label='last sample sent'); list2='last invoiced', list3='requested'. Full ISO in title.
+const dateChip = r => r.when_iso ? `<span class="chip" title="${esc(r.when_iso)}">🕓 ${esc(r.when_label||'when')}: ${esc(fmtWhen(r.when_iso))}</span>` : '';
 const esc = s => String(s??'').replace(/[&<>"]/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;'}[c]));
 // mfr-number scrub for display: drop SKU-ish tokens (any alnum run containing a digit), keep names.
 function stripMfr(s){ return String(s||'').replace(/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*/g,t=>/\d/.test(t)?'':t).replace(/\s*[|·•—–-]+\s*/g,' · ').replace(/(?:^[\s·]+|[\s·]+$)/g,'').replace(/(?:·\s*){2,}/g,'· ').replace(/\bSample\b\s*$/i,'').replace(/\s{2,}/g,' ').trim().replace(/[·\s]+$/,''); }
@@ -131,21 +134,20 @@ function cardHTML(r){
   if(cur==='list3'){
     head = `<div><div class="co">${esc(r.vendor)} <span class="chip r">${r.days_overdue}d overdue</span></div>
       <div class="sub">${esc(r.company||('account '+r.account))} · acct ${esc(r.account)}</div></div>`;
-    facts = `<div class="chips">${showMfr()?`<span class="chip k">${esc(r.sku||'—')}</span>`:''}<span class="chip">${esc(lbl(r.pattern)||'pattern')}</span></div>`;
+    facts = `<div class="chips">${showMfr()?`<span class="chip k">${esc(r.sku||'—')}</span>`:''}<span class="chip">${esc(lbl(r.pattern)||'pattern')}</span>${dateChip(r)}</div>`;
   } else if(cur==='list2'){
     head = `<div><div class="co">${esc(r.company)}</div><div class="sub">${esc(r.email||'no email')} · acct ${esc(r.account)}</div></div>`;
-    facts = `<div class="chips"><span class="chip a">${r.invoice_count} sample inv</span><span class="chip">max $${r.max_total}</span></div>
+    facts = `<div class="chips"><span class="chip a">${r.invoice_count} sample inv</span><span class="chip">max $${r.max_total}</span>${dateChip(r)}</div>
       ${(()=>{const d=r.details&&r.details[0]?lbl(r.details[0]):'';return d?`<div class="pats">${esc(d)}</div>`:''})()}`;
   } else {
     head = `<div><div class="co">${esc(r.company)} <span class="chip g">${r.ratio}% sent</span></div>
       <div class="sub">${esc(r.email||'no email')} · acct ${esc(r.account)}</div></div>`;
-    facts = `<div class="chips"><span class="chip">${r.sent}/${r.ordered} sent</span>${r.missing?`<span class="chip a">${r.missing} missing</span>`:''}</div>
+    facts = `<div class="chips"><span class="chip">${r.sent}/${r.ordered} sent</span>${r.missing?`<span class="chip a">${r.missing} missing</span>`:''}${dateChip(r)}</div>
       ${(()=>{const p=(r.patterns||[]).map(lbl).filter(Boolean).slice(0,3).join(' · ');return p?`<div class="pats">${esc(p)}</div>`:''})()}`;
   }
   return `<div class="card ${sel?'sel':''}" data-k="${esc(k)}">
     <div class="top"><input type="checkbox" ${sel?'checked':''} data-sel/>${head}</div>
     ${facts}
-    <div class="when" title="${esc(r.when_iso||'')}">🕓 ${esc(r.when_label||'when')}: ${esc(fmtWhen(r.when_iso))}</div>
     <div class="acts"><button class="btn gold" data-gen>Generate letter</button></div>
     <div class="letter"><div class="subj"></div><div class="ctxnote"></div><textarea spellcheck="false"></textarea>
       <div class="acts"><button class="btn" data-regen>↻ Regenerate</button><button class="btn" data-copy>Copy letter</button><span class="meta" data-variant></span></div></div>

← 351e8f9 Pitch follow-up: hide mfr# from UI + client letters (toggle)  ·  back to Dw Pitch Followup  ·  chore: macstudio3 migration — reconcile from mac2 + repoint 9027026 →