What-if calculator with honest guardrails, pass-up rule explainer
Scenario sliders compute the contract's mechanical splits: sub-$20 packages visibly fail to qualify (levels stay locked and pass up), and the copy states plainly this is arithmetic, not a prediction. Pass-up rule block explains the 25-position climb and that it cuts both ways. Assets bumped to v=20260904h. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,41 @@
|
||||
}));
|
||||
}
|
||||
|
||||
// what-if calculator: pure arithmetic on the locked constants
|
||||
const dc = document.getElementById('dcDirects');
|
||||
if (dc) {
|
||||
const $id = x => document.getElementById(x);
|
||||
const usd = n => '$' + n.toLocaleString(undefined, { maximumFractionDigits: 2 });
|
||||
const recalc = () => {
|
||||
const d = Number($id('dcDirects').value);
|
||||
const p = Number($id('dcPkg').value);
|
||||
const r = Number($id('dcSpread').value);
|
||||
$id('dcDirectsV').textContent = d;
|
||||
$id('dcSpreadV').textContent = r;
|
||||
const qualifies = p >= 20; // sub-$20 packages never count toward qualification
|
||||
const l2open = qualifies && d >= 2;
|
||||
const l3open = qualifies && d >= 5;
|
||||
const g2 = d * r, g3 = g2 * r;
|
||||
const e1 = d * p * 0.5;
|
||||
const e2 = l2open ? g2 * p * 0.2 : 0;
|
||||
const e3 = l3open ? g3 * p * 0.1 : 0;
|
||||
$id('dcN1').textContent = d; $id('dcN2').textContent = g2; $id('dcN3').textContent = g3;
|
||||
$id('dcE1').textContent = usd(e1);
|
||||
$id('dcE2').textContent = l2open ? usd(e2) : 'passes up';
|
||||
$id('dcE3').textContent = l3open ? usd(e3) : 'passes up';
|
||||
$id('dcTotal').textContent = usd(e1 + e2 + e3);
|
||||
const setB = (el, open, need) => { el.textContent = open ? 'open' : 'locked: ' + need; el.className = 'badge' + (open ? '' : ' amber'); };
|
||||
setB($id('dcB1'), true, '');
|
||||
setB($id('dcB2'), l2open, qualifies ? (2 - d) + ' more buyer(s)' : 'needs $20+ buyers');
|
||||
setB($id('dcB3'), l3open, qualifies ? (5 - d) + ' more buyer(s)' : 'needs $20+ buyers');
|
||||
$id('dcQualNote').textContent = qualifies
|
||||
? 'Buyers of $20 or more count toward your qualification. 2 unlock level 2, 5 unlock level 3.'
|
||||
: 'Heads up: $5 packages pay your level 1 but do not qualify buyers, so levels 2 and 3 stay locked in this scenario.';
|
||||
};
|
||||
['dcDirects', 'dcPkg', 'dcSpread'].forEach(x => $id(x).addEventListener('input', recalc));
|
||||
recalc();
|
||||
}
|
||||
|
||||
loadLadder();
|
||||
loadStats();
|
||||
loadTicker();
|
||||
|
||||
Reference in New Issue
Block a user