Fast minimal view of YNAB category balances
at main 28 lines 766 B view raw
1function formatBalance(milliunits) { 2 return (milliunits / 1000).toFixed(2); 3} 4 5function renderCategory(cat) { 6 const formatted = formatBalance(cat.balance); 7 const balanceHtml = cat.balance < 0 8 ? `<b style="color:red">${formatted}</b>` 9 : formatted; 10 return ` <p><b>${cat.name}</b><br>${balanceHtml}</p>`; 11} 12 13export function renderPage(categories) { 14 const items = categories.map(renderCategory).join('\n <hr>\n'); 15 return `<!DOCTYPE html> 16<html lang="en"> 17<head> 18 <meta charset="UTF-8"> 19 <meta name="viewport" content="width=device-width, initial-scale=1"> 20 <title>afford</title> 21 <style>body { font-family: monospace; max-width: 600px; margin: 2rem auto; padding: 0 1rem; }</style> 22</head> 23<body> 24 <h1>afford</h1> 25${items} 26</body> 27</html>`; 28}