The dealer table is a two-handed, big-screen tool. A dealer standing over a chopped pot with a phone in one hand and players waiting needs an answer in seconds, not a table to set up first — so /casino/texasholdem/quicksplit is the whole job on one screen: type the pot, tap how many ways, tap the smallest chip in play, read the payout. Nothing to configure, nothing saved. It splits in whole chips rather than raw arithmetic, because a dealer can't push half a chip across the felt: everyone gets the same stack and the remainder is called out as odd chips going one at a time to the first players left of the button. A pot that doesn't divide into the chosen denomination says so instead of quietly hiding the difference. Money formatting moves out of render.js into its own file so this screen can use it without pulling in the whole seat/chip UI. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_015bnp7xKUPFFSpwkYNFaPgb
23 lines
885 B
JavaScript
23 lines
885 B
JavaScript
// Shared money formatting for every casino surface. Kept apart from the table's
|
|
// rendering so the quick-split calculator can pull in the formatter without dragging
|
|
// the whole seat/chip UI along with it.
|
|
const Money = {
|
|
format(amount) {
|
|
const value = Number(amount) || 0;
|
|
return `$${value.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
|
|
},
|
|
|
|
// "+$40.00" / "-$40.00" rather than "$-40.00" — a standings column is read at a
|
|
// glance, and the sign belongs out front where the eye lands first.
|
|
formatSigned(amount) {
|
|
const value = Number(amount) || 0;
|
|
if (value > 0) return `+${this.format(value)}`;
|
|
if (value < 0) return `-${this.format(Math.abs(value))}`;
|
|
return this.format(0);
|
|
},
|
|
};
|
|
|
|
if (typeof module !== "undefined" && module.exports) {
|
|
module.exports = Money;
|
|
}
|