← back to Re Flyer Aggregator
advertising viewer: add sortable Scanned date+time column (Steve: dates on every entry); widen gitignore to keep all scraped broker-ad-signals data (3rd-party tokens) out of git (TK-10708)
02c0a119ce9e376d91c2cf0056395e6eeefaea4d · 2026-08-19 17:42:41 -0700 · Steve Abrams
Files touched
M .gitignoreM public/advertising/index.html
Diff
commit 02c0a119ce9e376d91c2cf0056395e6eeefaea4d
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Wed Aug 19 17:42:41 2026 -0700
advertising viewer: add sortable Scanned date+time column (Steve: dates on every entry); widen gitignore to keep all scraped broker-ad-signals data (3rd-party tokens) out of git (TK-10708)
---
.gitignore | 2 +-
public/advertising/index.html | 8 +++++---
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/.gitignore b/.gitignore
index e9e339c..a2a33a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,7 +12,7 @@ out/provenance-worklist-*.json
out/provenance-2*.json
# generated crawl data (contains third-party public tracking IDs; regenerated by the crawler)
-public/advertising/broker-ad-signals.json
+public/advertising/broker-ad-signals*.json
public/advertising/broker-ad-signals.csv
data/broker-ad-signals.json
data/ad-scan.log
diff --git a/public/advertising/index.html b/public/advertising/index.html
index 92f2c73..93bf29b 100644
--- a/public/advertising/index.html
+++ b/public/advertising/index.html
@@ -39,11 +39,12 @@
</div>
<table><thead><tr>
<th data-k="firm">Firm</th><th data-k="domain">Domain</th><th data-k="paid_count">Paid ads</th>
- <th data-k="_plats">Platforms</th><th data-k="google_analytics">GA</th><th data-k="flyer_count">Flyers/PDFs</th>
+ <th data-k="_plats">Platforms</th><th data-k="google_analytics">GA</th><th data-k="flyer_count">Flyers/PDFs</th><th data-k="scanned_at">Scanned</th>
</tr></thead><tbody id="tb"></tbody></table>
<script>
const PLAT={google_ads:['g','Google'],bing_ads:['b','Bing'],meta:['m','Meta'],linkedin:['l','LinkedIn'],tiktok:['t','TikTok'],twitter:['t','X'],pinterest:['x','Pinterest'],reddit:['x','Reddit'],snap:['x','Snap'],amazon:['x','Amazon'],criteo:['x','Criteo'],taboola:['x','Taboola'],outbrain:['x','Outbrain'],adroll:['x','AdRoll'],doubleclick:['x','DoubleClick']};
let DATA=[],sortK='paid_count',sortDir=-1;
+const fmtWhen=s=>{if(!s)return '<span class="none">—</span>';const d=new Date(s);return isNaN(d)?'—':d.toLocaleString(undefined,{year:'numeric',month:'short',day:'numeric',hour:'numeric',minute:'2-digit'});};
const plats=r=>Object.keys(PLAT).filter(p=>r[p]);
function chips(r){const on=plats(r);return on.length?on.map(p=>`<span class="chip ${PLAT[p][0]}">${PLAT[p][1]}</span>`).join(''):'<span class="none">—</span>';}
function flyerCell(r){if(!r.flyer_count)return '<span class="none">—</span>';
@@ -55,14 +56,15 @@ function render(){
if(f==='paid')rows=rows.filter(r=>r.paid_count>0);
else if(f==='flyers')rows=rows.filter(r=>r.flyer_count>0);
else if(f)rows=rows.filter(r=>r[f]);
- rows.sort((a,b)=>{let x=a[sortK],y=b[sortK];if(sortK==='firm'||sortK==='domain'){return (''+x).localeCompare(''+y)*sortDir;}return ((x||0)-(y||0))*sortDir;});
+ rows.sort((a,b)=>{let x=a[sortK],y=b[sortK];if(sortK==='firm'||sortK==='domain'||sortK==='scanned_at'){return (''+(x||'')).localeCompare(''+(y||''))*sortDir;}return ((x||0)-(y||0))*sortDir;});
document.getElementById('tb').innerHTML=rows.map(r=>`<tr>
<td><b>${(r.firm||'').replace(/</g,'<')||'—'}</b></td>
<td><a href="https://${r.domain}" target="_blank" rel="noopener noreferrer">${r.domain}</a></td>
<td class="${r.paid_count?'paid':'no'}">${r.paid_count||'·'}</td>
<td>${chips(r)}</td>
<td style="text-align:center">${r.google_analytics?'✓':'<span class="none">·</span>'}</td>
- <td>${flyerCell(r)}</td></tr>`).join('');
+ <td>${flyerCell(r)}</td>
+ <td style="color:#8A5A00;white-space:nowrap" title="${r.scanned_at||''}">${fmtWhen(r.scanned_at)}</td></tr>`).join('');
const adv=rows.filter(r=>r.paid_count>0).length,fl=rows.filter(r=>r.flyer_count>0).length;
document.getElementById('stat').textContent=`${rows.length} brokers · ${adv} advertising · ${fl} with flyers`;
}
← c543659 sources dashboard: click-to-drill on every graph → modal of
·
back to Re Flyer Aggregator
·
broker-ad-signals: fix stale console log that misreported CS 9b103fe →