← back to All Designerwallcoverings
List view: add Mfr # column with DW·Shop·FM mismatch breakout
25613cbf475e6300c3b46e4da1b30cacdf0fcf10 · 2026-07-08 12:01:50 -0700 · Steve
Files touched
Diff
commit 25613cbf475e6300c3b46e4da1b30cacdf0fcf10
Author: Steve <steve@designerwallcoverings.com>
Date: Wed Jul 8 12:01:50 2026 -0700
List view: add Mfr # column with DW·Shop·FM mismatch breakout
---
public/index.html | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/public/index.html b/public/index.html
index 8cf53ae..96590f8 100644
--- a/public/index.html
+++ b/public/index.html
@@ -104,6 +104,11 @@
.mfrn.mismatch .shopv { color:var(--txt); }
.mfrn.mismatch .dwnum b, .mfrn.mismatch .shopv b, .mfrn.mismatch .fmv b { color:var(--mut); font-weight:600; letter-spacing:.03em; margin-right:1px; }
.mfrn .mmflag { color:#e0b46a; cursor:help; }
+ /* List-view mfr cell: DW · Shop · FM breakout; amber tint + muted labels on a mismatch */
+ td.tmfr { font-variant-numeric:tabular-nums; font-size:11px; white-space:nowrap; }
+ td.tmfr .tfm { color:#7fc98a; }
+ td.tmfr .tmm { background:#2a1d0c; border-radius:4px; padding:1px 5px; color:#e0b46a; }
+ td.tmfr .tmm .k { color:var(--mut); font-weight:600; letter-spacing:.02em; }
.fmspec { margin-top:3px; font-size:calc(9.5px*var(--fs)); color:var(--mut); line-height:1.5; }
.fmspec b { color:#8aa6c9; font-weight:600; letter-spacing:.02em; }
.badge.disco { background:#3a1616; color:#e0b3b3; }
@@ -413,7 +418,7 @@ let qt; qEl.oninput = (e) => { clearTimeout(qt); qt = setTimeout(() => { state.q
/* ── list-view sortable columns: every column sorts, click toggles asc/desc ── */
const COLS = [
{ label: '', key: null }, // thumb
- { label: 'SKU', key: 'sku' }, { label: 'Title', key: 'title' }, { label: 'Vendor', key: 'vendor' },
+ { label: 'SKU', key: 'sku' }, { label: 'Mfr # (DW·Shop·FM)', key: null }, { label: 'Title', key: 'title' }, { label: 'Vendor', key: 'vendor' },
{ label: 'Type', key: 'type' }, { label: 'Pattern', key: 'pattern' }, { label: 'Color', key: 'color' },
{ label: 'Style', key: 'style' }, { label: 'Material', key: 'material' },
{ label: 'Price', key: 'price', num: true }, { label: 'Lifecycle', key: 'lifecycle' },
@@ -788,6 +793,19 @@ function mfrHTML(r) {
}
return r.mfr_number ? `<div class="mfrn"><b>Mfr #</b> ${shop}</div>` : '';
}
+// Compact List-view mfr cell — same DW · Shop · FM breakout as the card, one line for the table.
+function mfrCell(r) {
+ const shop = r.mfr_number ? esc(r.mfr_number) : '—';
+ if (r.fm_present && r.fm_mfr_number) {
+ const fm = esc(r.fm_mfr_number);
+ if (r.mfr_mismatch) {
+ const dw = esc(String(r.sku || '').replace(/-sample$/i, ''));
+ return `<span class="tmm"><span class="k">DW</span> ${dw} <span class="k">Shop</span> ${shop} <span class="k">FM</span> <b>${fm}</b> ⚠</span>`;
+ }
+ return `${shop} <span class="tfm">· FM ${fm}</span>`;
+ }
+ return shop;
+}
// A compact line of FileMaker specs (width + up to 3 others) — the source-of-truth values
// available to push. Only rendered when the SKU is in the WALLPAPER file and has specs.
function fmSpecsHTML(r) {
@@ -824,6 +842,7 @@ function listRow(r) {
tr.appendChild((() => { const td = document.createElement('td'); td.className = 'timg';
td.innerHTML = r.image ? `<div style="background-image:url('${r.image}')"></div>` : '<div></div>'; return td; })());
tr.appendChild(cell(`<span class="sku">${r.sku || '—'}</span>`));
+ tr.appendChild(cell(mfrCell(r), 'tmfr'));
tr.appendChild(cell((r.title || '').replace(/</g, '<')));
tr.appendChild(cell(r.vendor || ''));
tr.appendChild(cell(r.type || ''));
← d3b82a5 Mismatch chip: show DW number alongside Shopify + FileMaker
·
back to All Designerwallcoverings
·
shopify-push: portable Shopify-lib resolution (env/mac3/co-l de111d4 →