← back to Marketing Command Center
clients panel: 'not actioned' filter + LinkedIn/Instagram actioned timestamp columns in CSV export
05fccc41cb5bc1e1da256c3a7fa45bc71396d96b · 2026-07-16 17:39:37 -0700 · steve
Files touched
M public/panels/clients.htmlM public/panels/clients.js
Diff
commit 05fccc41cb5bc1e1da256c3a7fa45bc71396d96b
Author: steve <steve@designerwallcoverings.com>
Date: Thu Jul 16 17:39:37 2026 -0700
clients panel: 'not actioned' filter + LinkedIn/Instagram actioned timestamp columns in CSV export
---
public/panels/clients.html | 1 +
public/panels/clients.js | 15 ++++++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/public/panels/clients.html b/public/panels/clients.html
index da7b2e9..0802c1d 100644
--- a/public/panels/clients.html
+++ b/public/panels/clients.html
@@ -57,6 +57,7 @@
<button class="btn ghost" data-filter="instagram" style="font-size:10.5px;padding:4px 9px;">IG</button>
<button class="btn ghost" data-filter="linkedin" style="font-size:10.5px;padding:4px 9px;">LinkedIn</button>
<button class="btn ghost" data-filter="uncontacted" style="font-size:10.5px;padding:4px 9px;">○ uncontacted</button>
+ <button class="btn ghost" data-filter="unactioned" style="font-size:10.5px;padding:4px 9px;">⏱ not actioned</button>
<span style="flex:1;"></span>
<span class="muted" id="cl-copymsg" style="font-size:10.5px;"></span>
<button class="btn ghost" id="cl-copyemails" style="font-size:10.5px;padding:4px 9px;">⧉ Copy emails</button>
diff --git a/public/panels/clients.js b/public/panels/clients.js
index 55a14af..182cf99 100644
--- a/public/panels/clients.js
+++ b/public/panels/clients.js
@@ -141,11 +141,13 @@ window.MCC_PANELS['clients'] = {
let list = q ? RECS.filter(r => r._all.includes(q)) : RECS;
if (FILTERS.size) {
const set = FILTERS.has('uncontacted') ? done(current.id) : null;
+ const A = FILTERS.has('unactioned') ? acts(current.id) : null;
list = list.filter(r =>
(!FILTERS.has('email') || r.email) &&
(!FILTERS.has('instagram') || r._raw.instagram) &&
(!FILTERS.has('linkedin') || r._raw.linkedin) &&
- (!FILTERS.has('uncontacted') || !set.has(r.id)));
+ (!FILTERS.has('uncontacted') || !set.has(r.id)) &&
+ (!FILTERS.has('unactioned') || !(A[r.id] && (A[r.id].in || A[r.id].ig))));
}
return sortRecs(list);
}
@@ -172,14 +174,17 @@ window.MCC_PANELS['clients'] = {
// this does NOT send anything to Constant Contact.
function exportCSV(d) {
const rows = currentMatches();
+ const A = acts(d.id);
+ const actedIn = r => { const a = A[r.id]; return a && a.in ? fmtWhen(a.in) : ''; };
+ const actedIg = r => { const a = A[r.id]; return a && a.ig ? fmtWhen(a.ig) : ''; };
const cell = v => { v = String(v == null ? '' : v); return /[",\n]/.test(v) ? '"' + v.replace(/"/g, '""') + '"' : v; };
let headers, line;
if (d.kind === 'prospects') {
- headers = ['Business', 'City', 'Phone', 'Website', 'Email', 'LinkedIn', 'Instagram'];
- line = r => [r._raw.title, r._raw.city, r._raw.phone, r._raw.website, r._raw.email, r._raw.linkedin || liURL(r.q), r._raw.instagram || igURL(r.q)];
+ headers = ['Business', 'City', 'Phone', 'Website', 'Email', 'LinkedIn', 'Instagram', 'LinkedIn actioned', 'Instagram actioned'];
+ line = r => [r._raw.title, r._raw.city, r._raw.phone, r._raw.website, r._raw.email, r._raw.linkedin || liURL(r.q), r._raw.instagram || igURL(r.q), actedIn(r), actedIg(r)];
} else {
- headers = ['Account', 'Company', 'Name', 'City', 'State', 'Email', 'Phone', 'LinkedIn Search', 'Instagram Search'];
- line = r => [r._raw.account, r._raw.company, r._raw.name, r._raw.city, r._raw.state, r._raw.email, r._raw.phone, liURL(r.q), igURL(r.q)];
+ headers = ['Account', 'Company', 'Name', 'City', 'State', 'Email', 'Phone', 'LinkedIn Search', 'Instagram Search', 'LinkedIn actioned', 'Instagram actioned'];
+ line = r => [r._raw.account, r._raw.company, r._raw.name, r._raw.city, r._raw.state, r._raw.email, r._raw.phone, liURL(r.q), igURL(r.q), actedIn(r), actedIg(r)];
}
const csv = [headers.join(','), ...rows.map(r => line(r).map(cell).join(','))].join('\r\n');
const blob = new Blob(['' + csv], { type: 'text/csv;charset=utf-8;' });
← 88eb92d clients panel: inline LinkedIn/Instagram Follow chips under
·
back to Marketing Command Center
·
clients panel: one-click 'Copy not-actioned emails' (respect 5e38c36 →