app
Widget Registry
Public Made by Adomby adom
The reviewed registry of widgets renderable from plain markdown on any wiki page
← Commit history
adom-stock: 'no data yet' for a vendor CO has not fetched; say why a fetch failed
1 file changed
+2−2
widgets/stock-widget.js+2−2@@ -37,7 +37,7 @@ a.pill:hover{border-color:var(--accent)}.pill .v{color:var(--muted);font-size:11 let cap = ''; try { cap = new URL(src, 'https://wiki.adom.inc').searchParams.get('cap') || ''; } catch (e) {} const headers = fresh ? { 'X-Adom-Widget': 'stock', ...(cap ? { 'X-Adom-Cap': cap } : {}) } : {}; try { const r = await fetch(src, { credentials: 'include', headers }); const data = await r.json(); return { data, err: r.ok ? null : (data && data.error ? data.error : `stock route answered ${r.status}`) }; }- catch (e) { return { data: null, err: 'could not load stock' }; }+ catch (e) { return { data: null, err: 'could not reach the stock route (' + (e && e.message ? String(e.message).slice(0, 60) : 'blocked') + ')' }; } } render(d, err) { const root = this.shadowRoot, wrap = root.querySelector('.wrap');@@ -50,7 +50,7 @@ a.pill:hover{border-color:var(--accent)}.pill .v{color:var(--muted);font-size:11 const pills = VENDORS.filter(v => d.vendors && d.vendors[v] !== undefined).map(v => { const r = d.vendors[v]; const label = (r && r.label) || v; if (!r) return `<span class="pill dim"><span class="v">${esc(label)}</span><span class="q">not asked</span></span>`;- if (r.error) return `<span class="pill dim" title="${esc(r.error)}"><span class="v">${esc(label)}</span><span class="q">${/budget/.test(r.error) ? 'daily lookups used' : /PARTS_API_KEY/.test(r.error) ? 'not configured' : 'lookup failed'}</span></span>`;+ if (r.error) return `<span class="pill dim" title="${esc(r.error)}"><span class="v">${esc(label)}</span><span class="q">${/no data/.test(r.error) ? 'no data yet' : /budget/.test(r.error) ? 'daily lookups used' : /PARTS_API_KEY/.test(r.error) ? 'not configured' : 'lookup failed'}</span></span>`; if (!r.found) return `<span class="pill dim"><span class="v">${esc(label)}</span><span class="q">not listed</span></span>`; const inner = `<span class="v">${esc(label)}</span><span class="q ${r.stock > 0 ? '' : 'out'}">${r.stock > 0 ? num(r.stock) : 'out of stock'}</span>${r.unit_price ? `<span class="p">${esc(r.unit_price)}</span>` : ''}`; const title = `${label}: ${r.part || r.mpn || ''}${r.checked_at ? `, ${ago(r.checked_at)}` : ''}`;